惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
博客园 - 聂微东
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
D
Docker
B
Blog
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
月光博客
月光博客
F
Fortinet All Blogs
爱范儿
爱范儿
H
Help Net Security
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
The Cloudflare Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
U
Unit 42

博客园 - 人艰不拆_zmc

15000mAh 到底是什么概念?一篇看懂电池容量 go2_ros2_sdk 到底是干什么的?从 Go2、官方 SDK、ROS2 一路讲到 SLAM 和 Nav2 买了宇树 Go2 以后怎么二次开发?写给第一次做机器狗项目的人 买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack 到 ROS2 的完整入门指南 NVIDIA Jetson 到底是什么?写给第一次接触机器人和边缘 AI 的人 ROS / ROS2 到底是什么?写给第一次接触机器人开发的人 大模型为什么有快有慢?一篇看懂响应速度背后的关键因素 技术小白也能看懂:大模型里的量化、蒸馏到底是什么意思? Codex 使用技巧:从“会聊天”到“真正能干活” 我终于搞懂了:Codex 对话中插件和 Skill 到底怎么用 我终于搞懂了 Agent Spec:它其实就是 Agent 的“标准设计图” 我终于搞懂了 Tool:原来不只是 Function Calling 里的函数 Skill 里的 Python 脚本,到底是不是 Tool? 我终于搞懂了 Codex 的 Plugin 和 Skill:顺便把 App、MCP 一次理清 我终于搞懂了 Codex 的“应用”:App 到底是什么,怎么添加和维护? 我终于搞懂了 Tool、Function Calling 和 MCP:大模型到底怎么知道该调哪个接口? 我终于搞懂了 MCP:从 HTTP API 到 ERP MCP Server 的完整入门 我终于搞懂了 Codex 的“记忆”是怎么回事 Codex 用久了越来越慢?我的上下文管理小技巧 我终于搞懂了 Codex 里的 Thread、Turn 和 Session 从 Qwen3.8-27B 到 FP8、NVFP4、MoE:一次搞懂几个常见大模型概念 FPS 是什么意思?简单理解 60 FPS、25 FPS 和视频帧率 DeepSeek Harness 明明像 AI Coding 工具,为什么又能用来构建各种 Agent? 使用 Codex 开发项目,怎么才能节约 Token? 模型里的 32K、128K、256K 是什么意思?简单聊聊上下文限制 Codex 一次对话到底会给模型发送什么?以 Spring Boot 项目为例讲清 Context、代码读取与 Token 消耗 AI Agent 中的 Rule 是什么?以 Codex 为例,小白也能看懂 我终于搞懂了 Harness:它不是论文,也不是标准,更不是 Codex 独有 小白也能看懂:RTSP 到底是什么? Codex Token 消耗太快?使用 RTK 压缩终端输出,减少无效 Token
大模型到底能同时多少人用?一篇看懂并发、排队与容量估算
人艰不拆_zmc · 2026-09-10 · via 博客园 - 人艰不拆_zmc

部署一个大模型后,经常会遇到一个很实际的问题:

这套模型到底能让多少人同时使用?

是 5 个人、20 个人,还是 100 个人?

很多人第一反应是看 GPU:

“我有两张显卡,是不是就能支持几十个人?”

实际上没这么简单。

大模型并发不是由某一个参数直接决定的,而是模型、GPU、显存、上下文长度、生成速度、推理框架以及你能接受的响应时间共同决定的。


一、先搞清楚:100 个用户,不等于 100 并发

这是最容易混淆的地方。

假设一个系统有:

100 个注册用户

但真正同一秒向模型发送请求的可能只有:

5~10 个人

那么真正对模型产生压力的是这 5~10 个请求。

所以我们通常说的模型并发,更准确地说是:

同一时间正在被模型处理的请求数量。

例如:

公司有 500 人使用系统

某一时刻:
张三正在生成答案
李四正在生成答案
王五正在生成答案
赵六正在生成答案

实际并发 ≈ 4

因此,评估模型容量不能简单问:

能支持多少用户?

更应该问:

高峰期预计会有多少人同时请求模型?


二、模型并发到底由什么决定?

可以先记住一个简单关系:

模型并发能力

= 模型大小
+ GPU 性能
+ GPU 显存
+ 上下文长度
+ 输出长度
+ 推理框架
+ 用户能接受的响应速度

其中最重要的可以分成两类。

第一类:显存能不能装得下

模型运行时,显存不只需要存放模型本身,还需要保存每个请求产生的 KV Cache

可以把 KV Cache 简单理解成:

模型为每个正在聊天的请求保存的一份临时记忆。

假设同时有:

用户 A
用户 B
用户 C
用户 D

模型就需要同时保存多份运行中的上下文。

而且:

上下文越长
    ↓
KV Cache 越大
    ↓
单个请求占用显存越多
    ↓
能同时运行的请求越少

所以同一个模型:

每人输入 2K Token

和:

每人输入 100K Token

能够支撑的并发数量可能差很多。


第二类:GPU 算不算得过来

即使显存还能放得下,也不代表并发可以无限增加。

因为 GPU 的计算能力是有限的。

例如一套模型整体生成能力假设是:

800 Token/s

如果希望每个用户至少还能保持:

20 Token/s

那么可以做一个非常粗略的估算:

800 ÷ 20 = 40

也就是说:

从纯生成吞吐角度看,理论上大约能够同时服务 40 个正在生成答案的请求。

但注意:

这只是理论估算,不代表实际就能稳定跑 40 并发。

因为系统还要处理:

  • Prompt 输入
  • Prefill
  • 长上下文
  • 请求长短不一
  • GPU 调度
  • 网络传输
  • 突发流量

所以生产环境最终还是需要压测。


三、并发其实同时受“显存”和“算力”限制

可以把它想象成一家餐厅。

GPU 显存像:

餐厅有多少张桌子。

GPU 算力像:

厨房一分钟能做多少道菜。

即使餐厅有 100 张桌子:

桌子很多

但厨房只有一个厨师:

做菜很慢

照样会排队。

反过来也一样。

厨房非常强,但是餐厅只有 10 张桌子,也不能同时接待 100 桌客人。

所以真正的模型并发大致可以理解成:

                 显存允许的并发
                        ↓
实际并发 ≈ 取最小值 ← GPU算力允许的并发
                        ↑
                 系统配置的并发上限

哪个先到瓶颈,哪个决定最终容量。


四、能不能提前算出“到底支持多少并发”?

可以估算,但很难只靠配置精确算出来。

可以先做两次估算。

1. 看显存

大致判断:

GPU总显存
-
模型自身占用
-
系统预留显存
=
可以留给 KV Cache 的显存

KV Cache 越多,理论上能够同时保持的活跃请求越多。


2. 看吞吐量

可以用一个非常实用的简单思路:

可接受并发

≈

模型整体 Token 吞吐量
÷
希望每个用户获得的 Token 速度

例如实际测试得到:

模型整体吞吐:1000 Token/s

希望用户使用时至少达到:

25 Token/s

那么:

1000 ÷ 25 = 40

理论上大约是 40 个生成中的请求。

但真正上线时不能直接按照理论极限设计。

更合理的做法是:

根据真实业务的输入长度、输出长度和并发模式进行压力测试,再确定安全并发值。


五、为什么“最大并发”其实没有一个固定答案?

因为你必须先定义:

多慢才算不能用了?

例如同一套服务器:

10 并发
首字 1 秒
生成 50 Token/s
体验很好

到了:

30 并发
首字 3 秒
生成 30 Token/s
还能接受

再到:

80 并发
首字 15 秒
生成 8 Token/s

从技术上看:

80 个请求可能仍然在运行。

但是从产品角度看:

这个系统其实已经“扛不住”了。

所以企业真正需要定义的不是:

GPU 最大能塞多少请求?

而是:

在保证用户体验的情况下,最多能够稳定支持多少并发?

这叫有效并发,比单纯追求最大数字更有意义。


六、如果并发满了,后面的用户怎么办?

这里就涉及排队

假设服务器现在最多允许同时处理:

20 个请求

此时已经有:

1 ~ 20 号用户
正在运行

第 21 个用户来了以后,通常不是直接让 GPU 硬塞进去。

而是:

第21个请求
    ↓
等待队列
    ↓
前面的请求完成
    ↓
释放资源
    ↓
进入运行状态

整体可以理解成:

用户请求
   ↓
请求队列
   ↓
调度器
   ↓
GPU 当前有资源?
   │
 ┌─┴─┐
有   没有
│      │
运行   等待
│      │
└──释放资源后继续──┘

这其实和银行取号非常像。

窗口忙的时候,并不是让所有人同时挤到窗口,而是先排队。


七、是谁负责排队?

通常是推理框架的调度器

例如现在常见的:

vLLM
SGLang

都会负责把大量用户请求合理地交给 GPU。

以当前 vLLM 为例,它有专门的 Scheduler,可以限制一次调度的序列数量;默认支持先来先服务(FCFS),也支持优先级调度。当前版本还可以限制等待与运行中的请求总量,超过配置容量后可以拒绝新请求,让上层系统进行重试或转发到其他实例。

所以一个真正的大模型服务,并不是:

用户
 ↓
直接访问 GPU

而更像:

大量用户
    ↓
API 服务
    ↓
请求队列
    ↓
Scheduler 调度器
    ↓
批量组织请求
    ↓
GPU
    ↓
模型生成

这也是 vLLM 这类推理框架很重要的原因。


八、并发太高,除了排队还能怎么办?

如果业务量继续增加,单纯排队并不是最终解决方案。

假设:

一套模型实例
稳定支撑 30 并发

现在业务需要:

100 并发

那就可以部署多个模型实例:

                    用户请求
                       ↓
                   负载均衡
                       ↓
            ┌──────────┼──────────┐
            ↓          ↓          ↓
        模型实例 A   模型实例 B   模型实例 C
         30并发       30并发       30并发

这就从:

单机性能优化

进入了:

集群扩容。

实际企业的大规模 AI 服务,通常都会逐渐走到这一步。


九、企业到底应该怎么测模型并发?

真正上线之前,我认为至少应该关注四个指标:

指标 关注什么
并发数 同时有多少请求
TTFT 用户多久看到第一个字
Tokens/s 回答过程中生成多快
GPU 显存 是否快达到显存上限

然后逐步压测:

1 并发
 ↓
5 并发
 ↓
10 并发
 ↓
20 并发
 ↓
50 并发

观察什么时候开始出现:

TTFT明显增加
Tokens/s明显下降
显存接近极限
请求大量排队
请求超时

这个位置附近,才是真正需要关注的容量边界。


十、最后总结

大模型能支持多少人同时使用,没有一个只看“模型多少B、几张GPU”就能直接得出的数字。

真正决定并发能力的是:

模型大小
   +
GPU算力
   +
GPU显存
   +
上下文长度
   +
KV Cache
   +
Token生成速度
   +
推理框架
   +
允许的响应延迟

如果只记住三句话,可以记住:

第一,系统有 1000 个用户,不代表就是 1000 并发,真正要看同一时间有多少人在请求模型。

第二,并发可以提前估算,但最终一定要通过真实业务压测确定。

第三,超过并发能力以后,不一定马上报错,可以先进入队列等待;流量再大,就需要限流、拒绝请求或者增加模型实例。

所以企业部署大模型时,真正需要回答的问题从来不是:

“这个模型最多能跑多少并发?”

而应该是:

“在用户体验还能接受的情况下,这套硬件能够稳定支撑多少并发?”

这才是一个真正有意义的“大模型并发指标”。