推理侧批处理把多个请求合并到一个GPU批次里,吞吐收益通常能达到数倍,核心原因在于把GPU的矩阵计算单元和显存带宽从单请求的碎片化空闲中解放出来。 下面从底层机制、吞吐对比、配置实操到延迟影响逐层拆解。
大模型推理批处理吞吐提升多少?先把GPU空闲账算清楚
大模型推理批处理吞吐提升多少,取决于请求合并后GPU实际计算密度的变化,单请求推理时,GPU并非算不动,而是在频繁等待数据和调度。
单请求推理时GPU在等什么
- 每次前向只处理一个序列,矩阵乘的维度偏瘦,大量流式多处理器处于空闲状态。
- kernel启动次数多,单次计算量小,启动开销在总耗时里占比被放大。
- 显存带宽被小尺寸张量反复打断,权重每次都要重新从HBM加载。
- KV cache按零散请求分配,显存碎片增加,实际可用连续空间减少。
合并请求后计算密度如何变化
多个序列拼成 [batch_size, seq_len, hidden] 的张量后,矩阵乘从瘦高形状变成接近方阵,Tensor Core利用率明显提高,权重只加载一次就能服务整个批次,HBM访问压力下降,KV cache可以按批次连续分配,减少显存碎片,行业共识认为,推理侧的吞吐瓶颈多数情况下不在算力本身,而在等待数据和调度空隙,批处理正好压缩了这部分空隙。
推理侧批处理和实时推理的吞吐对比
实时推理强调单个请求的低延迟,因此通常不会等待凑批,批处理则通过牺牲少量排队时间来换取整体吞吐,两者并非完全对立,连续批处理已经把边界模糊化。
| 场景 | 吞吐表现 | 延迟表现 | 适用情况 |
|---|---|---|---|
| 实时逐请求推理 | 低 | 低 | 在线聊天单用户、交互式应用 |
| 静态批处理 | 中高 | 中高,需等凑批 | 离线批量评估、数据标注 |
| 连续批处理 | 高 | 中低 | 在线高并发服务、API推理 |
vLLM连续批处理吞吐收益从哪来
vLLM的continuous batching不要求整个批次同时结束,一个序列生成结束,马上插入新请求,GPU始终有活干,相比静态批处理需要等齐固定batch,连续批处理多数情况下可以再上一个台阶,它的核心是PagedAttention配合动态调度,把KV cache按块管理,允许不同序列在不同位置读写。
Triton动态批处理配置怎么调
NVIDIA Triton Inference Server通过 config.pbtxt 里的 dynamic_batching 实现请求合并,一个典型配置片段如下:
dynamic_batching {
preferred_batch_size: [ 4, 8, 16 ]
max_queue_delay_microseconds: 100
}
preferred_batch_size 是凑批目标,max_queue_delay_microseconds 是请求在队列中的最大等待时间,想提高吞吐就增大目标批次,想压低延迟就把最大队列等待降到几百微秒。
推理请求合并对延迟影响有多大
推理请求合并对延迟的影响主要来自排队等待和单步计算时间增加,合并后单个请求不能立即被计算,需要等同一批次的请求到齐或等待超时。
队列等待与单步计算的关系
- 队列等待时间:由
max_queue_delay_microseconds等参数限制,可以控制在毫秒级以内。 - 单步计算时间:batch变大后每次前向耗时增加,但平摊到每个请求的单位算力成本下降。
- 首token延迟:合并后首token生成可能需要等凑批,延迟会比单请求略高。
- 生成阶段延迟:连续批处理在解码阶段可随时插入新请求,总体影响小于静态批处理。

在线场景怎么压低延迟
在线服务通常采用较小batch和较短队列上限,将最大队列等待设为几百微秒到几毫秒,牺牲一部分吞吐换延迟稳定,对于高并发API服务,连续批处理已经能让延迟增加保持在可接受范围,同时吞吐明显高于逐请求模式。
GPU推理批处理配置参数与实操命令
不同推理框架的参数名称不同,但核心都围绕最大批次大小、最大批处理token数、最大队列等待时间。
vLLM启动参数
以某7B开源模型为例,启动OpenAI兼容服务时可以这样配置:
python -m vllm.entrypoints.openai.api_server --model /path/to/model --max-num-seqs 128 --max-num-batched-tokens 4096 --gpu-memory-utilization 0.92
--max-num-seqs 控制最大并发序列数,直接影响吞吐上限。--max-num-batched-tokens 限制每次迭代处理的token总量,这两个参数调大后吞吐会上升,但显存占用和单步延迟也会增加。
Triton配置文件
模型目录下的 config.pbtxt 需要同时设置 max_batch_size 和 dynamic_batching,启动命令为:
tritonserver --model-repository=/models
如果模型不支持动态批处理,Triton也可以只使用静态批处理,但多数大模型推理后端都支持动态或连续批处理。
TensorRT-LLM与TGI的批处理参数
TensorRT-LLM在构建engine时通过 max_batch_size 和 max_num_tokens 设定上限,HuggingFace Text Generation Inference则使用环境变量 MAX_BATCH_PREFILL_TOKENS

和 MAX_TOTAL_TOKENS 控制预填与解码阶段的批量大小。
本地部署大模型推理服务的成本参考
本地部署大模型推理服务的成本主要由GPU型号、显存容量和实际利用率决定,批处理优化前,单卡可能只支撑少量并发请求,优化后相同GPU可以服务更多用户,国内数据中心租用H20、A100等加速卡时,批处理带来的吞吐提升直接降低单位token成本,多数情况下,合理配置动态批处理后,同一张卡的并发能力会成倍增加,推理服务成本下降明显。
推理侧批处理的核心收益不是简单把请求排队,而是把GPU计算密度拉高,让权重加载、矩阵乘和显存带宽都服务于更大批次,配置得当的动态批处理可以在延迟可控范围内获得数倍吞吐,这是高性能推理服务的默认选择。
推理侧批处理吞吐收益相关问题
大模型推理批处理吞吐提升多少才算合理?
不能只看吞吐倍数,要结合GPU型号、模型大小、序列长度和延迟SLA,一般优化前逐请求每秒只能处理少量请求,连续批处理可提升数倍,达到硬件理论算力的一定比例且延迟满足业务要求,就属于合理范围。
推理请求合并对延迟影响能否降到毫秒级?
可以,将 max_queue_delay_microseconds 设为几百微秒到几毫秒,延迟主要来自单步计算时间,在线服务通常采用更小batch和更短队列上限,使合并带来的额外延迟保持在毫秒级。
GPU推理批处理配置参数里哪个最影响吞吐?
最大并发序列数(如vLLM的 --max-num-seqs)和最大批处理token数(如 --max-num-batched-tokens)最直接,增大这两个参数会显著提高吞吐,同时增加显存占用和单步延迟,需要根据显存容量和延迟预算做权衡。
