Continuous Batching

别名:连续批处理 / 动态批处理 / Static Batching / 静态批处理

在每个迭代动态加入/移除请求的批处理方式;短请求结束即释放位置,提高 GPU 利用率。

更新于 2026/11/08
推理批处理吞吐

一句话定义

Continuous Batching(连续批处理)是在每个解码迭代检查请求:完成的请求退出,新请求立刻补位,而不是等一整批全部结束再换下一批。

为什么需要它

Static Batching 要等最长请求结束,短请求结束后 GPU 仍空等,吞吐浪费。在线服务请求长度差异很大,动态批处理能让 GPU 持续有活干。

怎么工作

  • Static Batching:固定一批请求一起开始、一起结束;实现简单,但空等严重。
  • Continuous Batching:每个迭代重新组 batch;完成的请求释放 KV Cache,新请求加入。
  • 常和 PagedAttention 配合:分页缓存让请求可以随时加入/退出,不必连续显存。
  • 调度器还要考虑公平性、优先级和最大 batch。

Continuous Batching:请求级动态批处理

关键取舍

  • 吞吐提升明显,但调度和缓存管理更复杂。
  • 大 batch 提高吞吐,可能推高单请求延迟;要按 SLA 调。
  • 长短请求混跑时,公平性和超时策略很重要。
  • 调度器通常还要设置最大并发和超时。
  • 需要 KV Cache 的按需分配/回收,否则会碎片化。

常见误区

  • Continuous Batching 不是“把 batch 调大”:它是请求级动态调度。
  • 它不等于 Static Batching:后者要等整批结束。
  • 吞吐高不代表延迟低:两者要分开看。
  • 没有 KV Cache 管理也能做:可以,但效果和实现难度会不同。

用在哪里

  • 在线聊天、API 服务、多租户推理。
  • 请求长度差异大、需要高 GPU 利用率的场景。
  • 与 PagedAttention、推理框架一起使用。

相关概念