Table of Contents
背景
在 LLM 推理服务中,连续批处理(continuous batching)通过动态调度请求使 GPU 保持忙碌,但默认的同步模式仍存在严重浪费:CPU 准备批次时 GPU 空闲,GPU 计算时 CPU 等待。对于每秒运行数百步的推理循环,这些空隙累积可达总运行时间的四分之一。以 H200 GPU 每小时 5 美元的成本计算,这意味着每天浪费约 30 美元的计算资源。
核心内容分析
同步批处理的缺陷
在同步模式下,推理过程如下:
- CPU 选择请求、更新 KV 缓存表、驱逐已完成请求、接纳新请求。
- CPU 将准备好的输入传输到 GPU。
- GPU 执行前向传播和采样,产生新 token。
- 结果返回 CPU,然后重复循环。
关键在于第 3 步完成后,GPU 必须等待第 1-2 步的 CPU 准备工作完成才能开始下一次计算。这种串行交替导致 GPU 利用率无法达到 100%。
异步批处理的实现原理
Hugging Face 团队提出的异步批处理核心思想是 将 CPU 批次准备与 GPU 计算并行化。具体做法包括:
- 使用双缓冲机制:CPU 持续准备下一个批次的数据(包括 KV 缓存管理、请求调度),而 GPU 同时计算当前批次。
- 通过预取和流水线技术,使 GPU 始终有准备好的批次可用。
- 优化数据传输和同步点,减少锁争用。
实验中,对一个 8B 模型在 batch size 32 下生成 8K token 进行性能剖析,同步模式中 GPU 空闲时间(CPU 处理时间)约占 20%。异步优化后,这部分空闲被消除,吞吐量显著提升。
性能收益
异步批处理的主要收益:
- GPU 利用率接近 100%:减少了不必要的等待,使计算资源得到充分利用。
- 降低推理延迟:批处理准备不阻塞 GPU,整体端到端延迟下降。
- 提升吞吐量:可服务的每秒 token 数增加,尤其在高负载下效果明显。
行业影响/专业点评
异步批处理是 LLM 推理优化的重要一步:
- 从同步到异步的范式转变:传统的推理引擎大多采用同步调度,此方法提供了一种可直接落地的改进路径,且与现有连续批处理兼容。
- 成本效益显著:在云 GPU 成本高昂的背景下,提升 20% 利用率意味着相同预算下可服务更多请求,或降低企业使用门槛。
- 适用场景广泛:该技术不仅适用于文本生成,也可扩展至多模态、代码生成等需要连续批处理的服务。
- 开源生态推动:Hugging Face 将这一方法公开并计划集成到 Text Generation Inference (TGI) 等工具中,有望成为行业标准。
未来,随着 LLM 规模增大和实时性要求提高,类似 CPU-GPU 异步化的创新将持续成为推理优化的重要方向。