首页优化地图方法索引基础概念
返回技术汇总表 ↗

M021 · 独立详解

Continuous Batching / 连续批处理

每轮重新安排活跃请求,让结束请求释放的执行位置及时服务其他请求。

调度与并行详解已编写

先看短片 · 建立直觉

连续批处理:谁先结束,就先腾出位置

1 分 52 秒
中文合成旁白 · 中文字幕查看讲解稿 ↗
按章节观看 · 5 个片段
↓ 文字详解 · 原理、算例与实现
本页目录

01 · 固定批次为什么会等待

假设 A、B、C 同时进入生成批次,但生成长度为 2、5、3。如果这组批次必须等最慢的 B 结束才整体替换,A 和 C 结束后留下的位置无法给排队请求使用。变长输出让设备利用率和排队时间受到影响。

一次前向可以并行处理多个请求,但同一个普通自回归请求的下一步依赖上一步选择的 token。连续批处理利用的是请求之间的并行,并没有解除请求内部的生成依赖。

依据:Orca · 迭代级调度原始论文 / 演讲 ↗ · TensorRT-LLM 官方仓库 ↗

02 · 从整批替换变成每轮重排

  • 收集尚未结束的 Decode 请求与待进入的 Prefill 请求。
  • 根据计算预算、KV 预算、优先级和执行限制选择本轮工作。
  • 准备各请求的 token、位置与块表,组织设备执行。
  • 处理输出与停止状态;完成的请求释放资源,下一轮允许其他请求加入。
教学伪代码 · 展示依赖,不是可直接部署的实现
while waiting or active:
    reap_finished_requests()
    batch = schedule(active, waiting, token_budget, kv_budget)
    inputs = prepare_inputs(batch)
    outputs = execute(inputs)
    update_states_and_emit(outputs)

教学循环省略了异步执行、抢占、分布式一致性和错误恢复。Prefill 进入方式也不固定:长输入一次完成或分块,与 Decode 混合或分开,取决于调度策略。连续批处理、Chunked Prefill 和异步调度是相关但不同的方法。

依据:vLLM · 调度优化与预算 ↗ · TensorRT-LLM · Overlap Scheduler ↗

03 · 一个排队请求什么时候能进来

自设例子:三个执行位置,A/B/C 的 Decode 轮数为 2/5/3,D 在第 2 轮结束后已经完成 Prefill 并可进入 Decode。固定批次最早第 6 轮开始 D;连续批处理可以第 3 轮把 D 放进 A 的位置。假设每轮等时,这是执行位置示意,不是服务实测。

轮次固定批次连续批处理
1A、B、CA、B、C
2A、B、C;A 结束A、B、C;A 结束
3空、B、C;C 结束D、B、C;C 结束
4–5空、B、空D、B、其他可入请求
6才开始下一批继续按状态安排

如果 D 尚未完成 Prefill,调度器还必须为其输入计算分配预算;不能只把一个长提示词当作一个 Decode token 插入。能否提前服务 D,还取决于 KV 空间和本轮计算成本。

04 · 调整哪些预算

预算 / 约束过大或过小的影响
同时活跃请求数增大可能提高吞吐,也增加每轮时间和 KV 占用。
每轮 token 预算Prefill token 数和 Decode token 数的成本不同;只限制请求数不够。
Prefill 分块大小小块利于交错,但带来更多轮次和调度成本。
KV 预算与抢占策略缓存不足会触发排队、重算或迁移,直接影响尾延迟。

这些是通用调度维度,具体参数名称和默认值由引擎版本决定。先固定服务目标,再调整预算,不要把某版本的默认值当成最佳配置。

依据:vLLM · 调度优化与预算 ↗ · TensorRT-LLM 官方仓库 ↗

05 · 吞吐、首 token 和每 token 延迟一起看

首 token 时间 TTFT 包含排队、预处理和 Prefill;TPOT 观察后续输出的间隔。较大批次可能提高总 tokens/s,同时拉长单请求的输出间隔。不能仅凭 tokens/s 判断用户体验改善。

  • 固定请求到达过程、输入长度、输出长度及采样配置,进行可重复的负载回放。
  • 同时报告吞吐、TTFT / TPOT 的分位数、拒绝 / 取消率与 KV 压力。
  • 把单请求低负载与高并发饱和负载分开;没有并发时可填补的位置有限。

分页 KV 帮助管理动态请求;前缀复用减少重复 Prefill;分块 Prefill 控制长请求对 Decode 的影响。这些方法需要一起实验,但应分别记录开关。

06 · NVIDIA 与昇腾怎样对照

连续批处理首先是引擎运行时的组织方式,不是 GPU 或 NPU 固有的专属指令。两种平台都要检查服务引擎对变长批次、KV 布局、图执行和分布式调度的支持。对比时匹配同一请求轨迹和延迟目标,再看实际后端及调度开销。

依据:TensorRT-LLM 官方仓库 ↗ · vLLM · 调度优化与预算 ↗

07 · 自查与小实验

  • 把 A/B/C 的结束时刻画成时间线,指出哪些空位置可以给新请求使用。
  • 同样请求流,分别限制小、中、大批次,画出吞吐与 P95 TPOT 的关系。
  • 说明为什么“连续批处理”和“长 Prefill 分块”可以组合,但不是同一个开关。

流程位置与关联方法

这个方法可能出现在多个位置;计算线包含模型计算与算子实现,执行线包含运行时、内存和通信。

资料与核查范围

原理依据以原始论文和官方文档为主;算例与时间线是教学推导。文档核查日期:2026-10-10。引用 main / latest 文档时,实际接口以安装版本为准。

代码为接入片段或教学伪代码;本页没有声称完成 NVIDIA / 昇腾硬件实测。

← 返回总表中的 M021继续阅读:Chunked Prefill / 分块预填充 →
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭