一句话定义:批处理等待窗口(Batch Window,常写作 Max Wait / Maximum Wait Time)是服务端在把陆续到达的小请求攒成一批再一起处理时,愿意为“再凑几条”而多等的那个时间上限。
为什么会有这个参数
推理服务跑在 GPU 上,一次算 1 条和一次算 32 条,耗时差距往往远小于 32 倍,因为算力是并行铺开的。于是最省钱的用法是“凑一批一起算”。
可请求是零散到达的:第 1 条来了,第 2 条可能 3 毫秒后才来。如果来一条发一条,GPU 大部分时间在“一个人也发车”;如果死等凑够 32 条,第 1 条可能等到超时。所以工程上给出两个阈值,谁先满足就发车:攒够最大批大小(Max Batch Size)就走,或者最多等 Max Wait 毫秒也走。
打个比方:电梯
写字楼电梯不是“有人按就立刻关门”,也不是“必须站满 12 人才走”。它通常这样:满员就走;没满的话最多等十来秒,到点也关门。第一个进电梯的人最多损失十来秒,但这一趟送上去的人多出好几倍,电梯(GPU)的空转时间大幅下降。Max Wait 就是那个“最多等十来秒”。
和相邻概念的区别
| 概念 | 作用 | 关心的问题 |
|---|---|---|
| 批处理(Batching) | 机制本身:多条一起算 | 怎么把请求合并 |
| 等待窗口(Max Wait) | 一个参数:最多等多久 | 合并的代价有多大 |
| AI 词典:连续批处理">连续批处理(Continuous Batching) | 批次内动态进出,算完一条补一条 | 减少“等最慢那条”的浪费 |
| 限流(Rate Limiting) | 主动拒绝或排队以保护系统 | 系统别被打垮 |
注意:连续批处理让批次不再“整批进整批出”,但等待窗口依然存在,它决定的是“新请求进来后,等多久开始第一批”。
对从业者的实际意义
这个参数是一个延迟与吞吐之间的调节旋钮:调小,首字延迟(TTFT)更低但吞吐下降;调大,吞吐明显上升但尾部延迟(P99)变差。
- 交互式对话、语音这类人盯着屏幕的场景,窗口要小,让用户感觉“立刻有反应”。
- 离线任务——批量打标、文档转向量、夜间跑评测——窗口可以放大,单位时间处理量更重要。
- 它只加在“等凑批”这一步,不是每条请求都固定多花这么多时间:高峰时请求密集,窗口常常还没到就攒满了。
具体默认值各框架不同,以官方页面为准。
对普通人的意义
如果你觉得某个 AI 应用“第一句话总要顿一下,之后哗哗地出字”,那顿的一下里,可能就有这几十毫秒的等待窗口在换更便宜的算力。它不是卡了,而是故意在攒人。
