连续批处理是什么
连续批处理(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 分布,而不是单个请求的耗时数字。
并发开得过高时,引擎可能触发抢占并重算或换出部分序列,表现为个别请求延迟突然变大;具体行为随版本与配置而异,上线要观察尾延迟而不是只看均值。