核心要点

  • 能点出静态批的痛点:同一批必须等最长序列生成完才整体结束,先完成的序列让 GPU 空转,存在「木桶效应」

  • 能讲清机制:连续批处理以单次迭代(一步 decode)为调度粒度,每步把已结束的序列换出、立刻把排队的新请求填进空槽

  • 能说出收益来源:GPU 始终保持高占用、批内有效 token 利用率更高,吞吐可数倍提升而不靠加硬件

  • 能联系 PagedAttention:变长序列动态进出需要非连续 KV-cache 管理,PagedAttention 用分页显存使换入换出无碎片

标准回答

静态批处理的问题

传统做法把若干请求凑成一批、一起前向直到全部生成结束。但不同请求生成长度差异很大:短的早就该结束,却必须陪着最长的那条一起跑完,期间它占的算力被浪费。批越大、长度越参差,GPU 空转越严重——这是请求级(request-level)调度的木桶效应。

连续批处理怎么做

它把调度粒度从「一整批请求」降到「一次迭代」(iteration-level)。每生成一步后立即检查:哪些序列已经产出结束符或达到上限,就把它们换出并返回结果;同时把队列里等待的新请求填进腾出的位置。于是批的成员每一步都在动态变化,GPU 几乎不空转。

收益与配套

结果是有效 token 吞吐大幅提升、排队延迟下降,且无需增加硬件。难点在于序列动态进出导致 KV-cache 长度参差、频繁分配释放。vLLM 用 PagedAttention 把 KV-cache 按页(block)管理,像操作系统虚拟内存一样按需分配,消除显存碎片,让换入换出高效无损。详见 LLM 部署实践

常见误区

⚠️ 常见踩坑

别把连续批处理说成「攒一个更大的静态批」——它的关键是迭代级动态进出,而非批更大;也别忽略它依赖灵活的 KV-cache 管理(如 PagedAttention),否则变长序列会造成严重显存碎片。

追问

追问 1PagedAttention 在其中起什么作用?

把每条序列的 KV-cache 切成固定大小的 block 非连续存放,按需分配、用完即回收,像虚拟内存一样消除碎片,让序列随时进出而显存利用率接近满载,还支持前缀共享。

追问 2它会增加单请求延迟吗?

通常不会显著增加,反而因排队等待缩短而降低端到端延迟。但极端高负载下,新请求频繁插入可能让单步略变慢,需用调度策略平衡吞吐与尾延迟。

追问 3与 chunked prefill 如何配合?

把长 promptprefill 切块混入正在 decode 的迭代批中,避免长 prefill 独占 GPU 阻塞 decode,使连续批处理在混合负载下延迟更平滑。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • vLLM

    高吞吐 LLM 推理引擎,77,418+ stars。采用 PagedAttention 显存优化技术,吞吐量比 HuggingFace Transformers 高 24 倍,是生产环境部署大模型推理的首选方案,支持 OpenAI 兼容 API

  • SGLang

    高性能 LLM 和多模态模型服务框架,27K+ stars。采用 RadixAttention 等高效注意力实现,支持 DeepSeek、Llama、Qwen、GPT-OSS 等主流模型的高吞吐推理服务,是 vLLM 之外另一个生产级推理引擎选择