技术指南

连续配料

连续批处理是一种服务技术,可以从正在运行的批处理中逐个令牌添加和删除请求,而不是等待整个固定批处理完成。

阅读时间:2分钟最后更新

概述

It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.

深入探讨

当 GPU 批量处理多个请求时,速度最快。最简单的方法是静态批处理,将一组固定的请求分组,将它们全部运行完成,然后开始下一个批处理。问题是:语言模型输出的长度差异很大,因此较短的请求会提前完成,并且在批处理等待最长的请求时,它们的插槽会闲置,从而浪费 GPU 周期并延迟新到达。连续批处理(也称为运行中或迭代级批处理,由 Orca 论文推广并用于 vLLM、TensorRT-LLM 和 TGI)以单个解码步骤的粒度进行操作。生成每个令牌后,完成的序列退出批次,新到达的请求立即插入。这可以保持批次满和 GPU 饱和,通常可以将吞吐量提高数倍,同时降低等待用户的延迟。

技术洞察

关键的转变是从批处理整个请求到批处理单个迭代。在每个解码步骤中,调度程序都会构建活动集:它对所有正在进行的序列运行一次前向传递,每个发出一个令牌,逐出任何达到序列结束令牌或长度限制的令牌,并允许排队的请求来填充已释放的插槽。将此与 PagedAttention 灵活的 KV 内存配合使用,可以在飞行中插入和删除序列,成本低廉,因为每个序列的缓存都位于独立的块中。

战略影响

成本与预算

多年来,架构决策决定着性能和运营成本。

更清晰的判决

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

质量控制

更好的工程选择可以减少生产中的可靠性事故。

连续配料的未来

连续配料现在是生产法学硕士服务的标准。未来的工作将改进调度程序:将计算量大的预填充阶段与较轻的解码阶段(分解)分开,分块预填充以避免解码停滞,混合工作负载的优先级和公平策略,以及与推测性解码的更紧密耦合,以便每个步骤验证多个草稿令牌。目标是压缩每个 GPU 每秒的最大令牌数,同时保持个体响应延迟较低且可预测。

现实世界的实施

聊天 API 立即将新到达的用户消息接纳到正在运行的批次中,而不是将它们排队等待下一个批次

在批次中驱逐较短的已完成答案并回填其插槽,以便 GPU 永远不会闲置等待较长的一代

将连续批处理与 vLLM 的 PagedAttention 相结合,在每个解码步骤中以低成本插入和删除序列

代码完成服务通过保持批次完整,在突发、可变长度流量下维持每秒高令牌数

风险与防护栏

优化一项基准测试可以隐藏更广泛的系统弱点。

基础设施和维护成本常常被低估。

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

2

在实际负载和数据条件下进行基准测试。

3

仪器监控错误、漂移和用户影响。

4

在扩展之前准备回滚和事件响应路径。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Continuous Batching quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

用于 ML 工作负载的 Kubernetes

常见问题

What is Continuous Batching?

连续批处理是一种服务技术,可以从正在运行的批处理中逐个令牌添加和删除请求,而不是等待整个固定批处理完成。它使 GPU 持续忙碌,并急剧增加 AI 模型可以同时服务的用户数量。

LLM 服务的静态(固定)批处理的主要弱点是什么?

由于输出长度各不相同,因此完成的序列会处于空闲状态,直到最慢的序列完成为止,从而浪费 GPU 周期并延迟新请求。

连续批处理以什么粒度添加和删除请求?

连续(迭代级别)批处理会在每个解码步骤后更新活动集,因此它会逐个令牌而不是每个整个请求进行操作。

当序列在连续批处理下完成中批时,其插槽会发生什么情况?

已完成的序列将被逐出,等待的请求将立即插入,从而保持批次已满且 GPU 繁忙。

哪种技术与连续批处理自然地结合在一起,可以使插入/删除序列变得便宜?

PagedAttention 将每个序列的 KV 缓存存储在独立的块中,因此在运行中添加或删除序列不会干扰其他序列的内存。

哪些研究论文被普遍认为推广了迭代级(连续)批处理?

Orca 论文引入了迭代级调度,该思想被 vLLM、TGI 和 TensorRT-LLM 等服务系统采用。