Continuous Batching连续批处理
一句话总结
Continuous Batching(连续批处理)允许在batch中的某个请求完成后立即插入新请求,避免静态批处理中短请求等待长请求的资源浪费。
核心概念
传统Static Batching中,一个batch必须等所有请求都生成完毕才能处理下一个batch,导致短序列padding浪费。Continuous Batching(也称Iteration-level Scheduling)在每个解码步骤检查是否有请求完成,完成的请求立即释放资源并被新请求替换。Orca论文首次提出该方法,vLLM、TGI等框架都已实现。
为什么重要
LLM推理是自回归过程,不同请求的输出长度差异很大。Static Batching的GPU利用率可能不到50%。Continuous Batching可以将吞吐量提升2-5倍,是高性能推理服务的基础优化。
实践要点
配合PagedAttention使用效果最佳。合理设置最大batch大小平衡延迟和吞吐。监控请求排队时间避免饥饿。设置合理的max_tokens限制防止单个请求占用过长时间。预留一定的显存余量应对突发大batch。
常见误区
误以为Continuous Batching能无限提升吞吐量,实际受限于显存和计算资源。忽视batch过大时单个请求延迟增加。认为实现简单,实际上内存管理和调度逻辑相当复杂。