首页/AI/大模型部署与运维速查/连续批处理(continuous batching)
推理参数与优化50 条

连续批处理(continuous batching)

每个解码步动态并入新请求、完成的请求立即退出,替代「一批跑完再开下一批」:混合长度请求下 GPU 利用率与总吞吐提升明显,是主流推理引擎的默认调度方式。

连续批处理是什么

连续批处理(continuous batching,也称 iteration-level scheduling)指调度器在每个解码步动态并入新请求、完成的请求立即退出,取代「一批全部生成完再开下一批」的静态批处理。混合长度请求下,短请求不用等长请求跑完,GPU 空转明显减少,总吞吐随之提升。它是主流推理引擎的默认调度模型,具体实现与参数随版本演进。

基本信息

别称iteration-level scheduling,迭代级调度
调度粒度每个解码步重新组批
主要收益混合长度请求下减少空转,提高总吞吐
副作用单个请求的耗时受同批邻居影响,尾延迟波动
观测点运行中请求数与等待请求数两个指标

典型使用场景

  • 在线聊天类服务:请求随机到达且长度不一,静态批会让短请求白等
  • 混合长度负载:长文生成与短问答同池,连续批处理能显著减少空转
  • 单卡吞吐优化:在不换硬件的前提下,靠调度提升单位时间产出
  • 并发参数调优:调整单批可容纳的序列数上限,观察吞吐与尾延迟的平衡
  • 压测评估:同一并发下对比延迟分位分布,判断服务是否健康

从指标观察批处理状态

从指标观察批处理状态
# 运行中与等待中的请求数(指标名随版本可能微调)
curl -s http://127.0.0.1:8000/metrics | grep -E 'num_requests_running|num_requests_waiting'

# 等待数持续上涨:并发超容量,先扩实例或限流
# 运行数长期贴着上限:单批序列数上限是当前瓶颈,可评估上调

# vLLM 单批并发序列上限通常由 --max-num-seqs 控制(默认值与效果以版本文档为准)

静态批与连续批对照

维度静态批处理连续批处理
组批时机整批开始前一次成型每个解码步重新组批
短请求等待被同批长请求拖住完成后立即返回
显存与算力空转批尾空转明显空转显著减少
容量结论单请求耗时相对稳定必须按分位数评估
副作用是请求延迟随同批邻居变化:压测与容量评估应看 P50/P95/P99 分布,而不是单个请求的耗时数字。
并发开得过高时,引擎可能触发抢占并重算或换出部分序列,表现为个别请求延迟突然变大;具体行为随版本与配置而异,上线要观察尾延迟而不是只看均值。

易错点

  • 按单请求测性能:连续批处理下指标随并发与请求构成变化,容量结论必须基于固定并发与混合长度场景
  • 无限放开并发:KV 显存被吃满后触发排队甚至抢占,尾延迟明显恶化
  • 只看吞吐不看尾延迟:总吞吐上去了,但 P99 变差,高价值请求的体验反而不稳定
  • 沿用静态批时代的容量数字:调度方式变了,同样的卡能承载的并发与以前不同

数据来源与参考

  • vLLM 官方文档:连续批处理与调度(docs.vllm.ai)
  • Anyscale 博客:Continuous batching(anyscale.com/blog)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌