长上下文的三个关注点
长上下文上线要同时关注三件事:缓存显存随长度线性增长、预填充时间随输入增大、以及超窗请求的处理策略。常用手段包括降低缓存精度、分块预填充,以及入口处的截断或摘要。窗口开多大,本质上是显存预算怎么分配的问题。
基本信息
| 适用平台 | 自托管推理服务 |
|---|---|
| 确认窗口 | 读模型配置里的最大位置数 |
| 设定上限 | 按显存预算设置服务端的窗口参数 |
| 联动影响 | 窗口越大,可并发的序列数越少 |
确认窗口与设定上限
确认窗口与设定上限
grep -o '"max_position_embeddings": *[0-9]*' <模型目录>/config.json
vllm serve <模型路径> --max-model-len <按显存预算设定>典型使用场景
- 长文档问答:窗口要覆盖检索之后的材料长度
- 多轮对话:窗口决定历史保留多少轮
- 容量规划:窗口与并发是一对取舍,先算需求再定
- 成本核算:长上下文显著增加预填充与缓存开销
- 回归验证:窗口调整后重跑长输入档位的基准
三个关注点
| 关注点 | 为什么关注 | 常见手段 |
|---|---|---|
| 缓存显存 | 随序列长度线性增长 | 降低缓存精度 |
| 预填充时间 | 随输入长度增长 | 分块预填充与排队控制 |
| 超窗请求 | 处理行为因实现而异 | 入口截断或摘要压缩 |
服务端窗口参数同时决定引擎的缓存空间预留:窗口开大,可并发的序列数就下降,属于显存预算决策。
服务端窗口上限与模型能力上限是两件事:设小了用不满模型能力,设得超过模型上限则可能直接报错。
调大窗口前先确认显存余量:预留不足时表现为启动失败或运行期频繁抢占。
长输入与长输出要分开看:预填充耗时随输入增长,解码随输出增长,两类负载压在同一实例上的表现并不相同。