连续批处理Continuous batching

每次推理迭代重新安排活跃请求,完成者退出,等待者按 token 与 KV 缓存预算加入。

核心约束
本轮 token 不超过预算,已调度请求获得所需的 KV 缓存空间。
适用问题
变长生成请求的在线推理服务。
边界与取舍
分块预填充与抢占可改善资源利用,也可能增加重算和排队;不自动保证严格公平。

常见操作#

按一次模型迭代组织请求;请求长度、token 预算和 KV cache 容量均参与调度。

操作时间成本条件与说明
在迭代边界调整批次扫描 / 更新待运行请求与预算已完成请求退出,新请求可加入;实际队列维护成本取决于调度实现。
执行本次模型计算由本次 token 数、上下文长度、模型和硬件决定prefill 与 decode 计算形态不同,不能只按请求条数估算工作量。
KV cache 不足时处理拒绝继续调入、抢占或重算等策略状态搬运和重算会增加成本;分块预填充是可组合的策略,不是连续批处理的同义词。

时间与空间#

时间成本
调度维护 + 每轮模型计算 + 缓存管理 / 抢占成本
空间成本
运行请求的 KV cache、请求状态与模型工作区

按迭代重新组批减少等待短请求结束后的空位,不保证任意负载下都有固定倍数吞吐提升;仍需测首 token 时延、每 token 时延和吞吐。

工程中的应用#

1 个案例 · 附源码
基础原理参考资料

Yu et al. · Orca迭代级调度和动态组成生成批次的原始系统设计。

vLLM 0.8.5 · V1 schedulertoken 预算、运行 / 等待请求和缓存不足时的抢占路径。

7 个概念