窗口与并发是什么关系
上下文窗口与并发请求数共享同一份 KV 显存预算:预算固定时,窗口翻倍、能同时服务的序列数大约减半。选择最大上下文长度的本质是业务取舍——要「一次读很长的文档」,还是要「同时服务很多人」。推理引擎按设定的窗口上限为每条序列管理 KV 块,窗口设得越大,每条序列占的块越多。
基本信息
| 参数 | vLLM:--max-model-len |
|---|---|
| 覆盖范围 | 输入与输出合计的总长度上限 |
| 与并发关系 | 窗口越大,单序列 KV 占用越多,可并发数越少 |
| 设置依据 | 业务真实长度分布,而不是模型的标称上限 |
| 超限行为 | 超出上限的请求被拒绝或截断,取决于服务配置 |
典型使用场景
- 长短混合业务:把窗口定在覆盖绝大多数请求的档位,超出的部分交给排队或长文专用实例
- 高峰期排队排查:确认是否因为窗口开得过大,把并发压到低位
- 成本优化:在业务可接受的前提下调小窗口,用并发换成本
- 长文场景独立部署:文档总结类请求单独一个实例,避免拖累短问答池
- 容量回填:窗口调整后重新压测,把新的并发上限写回台账
相对关系与设置
相对关系与设置
# 相对关系示意(同一份 KV 预算下)
# 窗口 4K → 可并发序列数为基准
# 窗口 8K → 约一半
# 窗口 32K → 约 1/8
# 设置窗口
vllm serve <模型路径> --max-model-len 8192
# 调整后必须复测:并发上限已变,旧压测结论不能直接沿用按业务定窗口
| 业务形态 | 窗口取向 | 取舍说明 |
|---|---|---|
| 短问答、分类抽取 | 偏小窗口 | 并发优先,单请求占用小 |
| 文档问答、代码审阅 | 中等窗口 | 覆盖多数请求长度,并发与能力平衡 |
| 长文总结、超长上下文 | 大窗口 | 单序列占用大,通常需要独立实例或更少并发 |
窗口限制的是输入加输出的总长度:把窗口设成 8K,意味着输入与生成的 token 合计不能超过 8K,规划时要给输出留出空间。
长短混合的常见做法是分池:短请求池用小窗口换高并发,长文池用大窗口小并发,网关按请求长度路由。