连续批处理如何兼顾吞吐和用户延迟?
在每轮迭代调度请求,而不等待整批结束。
内容修订 4 · 2026-10-24
S05 · 修订 1 · 2026-10-21
- 轮次 1:A · B · C
- 轮次 2:A · D · C
- 轮次 3:E · D · C
问题从哪里来
静态请求批处理可能让短请求等待长请求,已完成槽位也不能及时补充。Orca 的迭代级调度允许完成的请求退出、新请求在迭代边界加入,提高利用率,同时引入更细粒度的调度问题。
关键机制
调度器结合待处理输入、正在生成的请求、token 预算和显存余量决定每轮工作。Prefill 的计算较重,decode 对每步时延敏感;大输入一次占用太多工作可能伤害正在输出的请求。分块 prefill 是可组合策略,不是所有连续批处理天然具备的性质。
TTFT = first_token_time − arrival; TPOT ≈ (last − first)/(output_tokens − 1)
算例与证据
教学时序:第1轮 A/B/C,B 完成后第2轮 A/D/C,A 完成后第3轮 E/D/C。替换的是请求槽位,不代表所有请求各自耗时相同。TPOT 示例公式要求输出至少2 token,均值也会隐藏尾延迟。
收益之外的新约束
高吞吐不等于好的交互体验。需报告 TTFT、token 间延迟、尾分位和满足 SLO 的吞吐,并给定到达率、输入/输出长度分布。过度合批可能提高吞吐却使每个用户更慢。
原始来源
- Orca: A Distributed Serving System for Transformer-Based Generative Models · 2022-07 · 核对 2026-10-21
- Efficient Memory Management for Large Language Model Serving with PagedAttention · 2023-09-12 · 核对 2026-10-21
启用脚本后可使用手动本地阅读记录和交互计算器。