在大语言模型在线推理中,连续批处理并不只是“把更多请求塞进 GPU”,而是把调度粒度从完整请求缩小到单次生成迭代。它能减少批次空洞、提高动态请求接入效率,但如果调度策略过度追求吞吐量,也可能增加新请求的排队时间,使首 Token 延迟出现波动。
从固定批次到连续批处理
LLM 推理通常包含预填充和解码两个阶段。预填充需要处理完整提示词并建立 KV Cache,其计算量与输入长度密切相关;解码则以自回归方式逐个生成 Token,每次迭代通常只为一个请求生成一个新 Token。不同请求的输入长度、输出长度和到达时间都不相同,因此固定批次很容易被最长请求拖住。
在传统静态批处理中,一组请求进入批次后,往往要等批次内所有请求结束,才能接纳下一组请求。短请求即使提前完成,腾出的计算位置也无法立即复用。连续批处理采用迭代级调度:每完成一次生成迭代,调度器便检查请求状态,移除已结束请求,并从等待队列中补入新请求。该思想可追溯到 Orca 提出的迭代级调度机制,相关设计可参考 Orca 论文与会议页面。
动态请求调度效率为何提高
连续批处理最直接的收益是减少“批次空洞”。当短请求结束后,其占用的 KV Cache 和执行位置可以较快释放,新请求不必等待整个批次清空。面对持续到达且生成长度差异明显的流量,活动批次能够保持较高的有效请求密度,模型权重读取、矩阵运算和显存带宽也能被更多请求共同分摊。
调度器还可以根据 Token 预算而不是单纯根据请求数量组装批次。一次迭代中,系统会综合考虑活动序列数量、待处理预填充 Token、KV Cache 剩余空间以及单轮最大 Token 数。相比“先到先组成固定批次”,这种方式更适合突发流量和长短请求混合的生产环境。
不过,调度效率不等于请求越多越好。批次扩大后,单次迭代的执行时间可能变长;KV Cache 压力过高时,还可能触发抢占、换出或重新计算。频繁抢占会抵消连续批处理带来的收益,因此并发上限、Token 预算和显存利用率应联合调整,而不是分别追求最大值。
连续批处理如何影响首 Token 延迟
首 Token 延迟通常由排队时间、预填充时间和调度开销共同构成。连续批处理能够让新请求在已有请求尚未全部结束时加入执行,从而缩短固定批次造成的队头阻塞。尤其在中等负载下,空出的执行位置可以迅速补充,新请求的排队时间通常更容易得到控制。
但在高负载下,预填充与解码会争夺同一设备的计算预算。长提示词的预填充一次可能处理大量 Token,如果调度器允许其完整执行,正在解码的请求就可能出现 Token 间隔上升;如果优先保障解码,请求虽然输出更流畅,等待预填充的新请求却可能获得更高的首 Token 延迟。
分块预填充是常见的折中方案。系统把长提示词拆成多个较小区块,并将这些区块与解码请求放入不同迭代中调度。这样可以避免单个长预填充长时间占用 GPU,同时充分利用每轮剩余的 Token 预算。vLLM 的调度配置支持分块预填充、单轮最大 Token 数和最大序列数等控制项,可参阅 vLLM 调度器官方文档。
吞吐量与延迟之间的关键权衡
- 提高单轮 Token 预算:通常有利于吞吐量和预填充处理速度,但单轮执行时间可能增加,尾部首 Token 延迟也可能扩大。
- 降低并发序列上限:能够减轻 KV Cache 压力并减少抢占风险,但负载较高时会延长队列等待。
- 优先预填充:新请求更快进入模型,有利于 TTFT,但可能干扰已有请求的连续解码。
- 优先解码:有利于降低 Token 间延迟和保持流式输出稳定,却可能使等待预填充的请求产生饥饿。
- 限制长提示词占比:可避免少量超长上下文挤占批次预算,但需要配合公平策略,防止长请求长期得不到执行。
生产环境中的调优方法
首先,应同时观察 TTFT、Token 间延迟、端到端延迟、队列长度、每轮批处理 Token 数和抢占次数。只看平均吞吐量容易掩盖高分位延迟,建议重点比较不同输入长度和输出长度分组下的 P95、P99 表现。
其次,可以使用真实流量回放逐步调整最大 Token 预算与最大并发序列数。若 TTFT 随负载快速恶化,应检查等待预填充的请求是否被解码任务挤压;若输出频繁停顿,则应检查长预填充是否占据完整迭代。出现大量抢占时,应优先降低并发、减少单轮预算或为 KV Cache 留出更多空间。
最后,公平性策略需要与业务场景匹配。交互式问答更重视首 Token 和流式稳定性,可以为短提示词或已等待较久的请求提升优先级;离线生成更重视整体吞吐量,则可以允许更大的批次和更宽松的延迟目标。必要时还可将在线与离线流量分池,避免两类服务等级互相干扰。
总结
连续批处理通过在每次生成迭代后动态移除、补充和重排请求,显著改善了固定批次中的等待与资源空闲问题。它通常能够提高动态请求接入效率,并降低由整批阻塞带来的首 Token 延迟,但最终效果取决于预填充与解码的优先级、单轮 Token 预算、KV Cache 容量及公平策略。真正有效的优化不是盲目扩大批次,而是在吞吐量、TTFT、Token 间延迟和尾部稳定性之间建立可观测、可验证的平衡。