双3090上AI代理等待从28秒降至7秒,靠调整OMP设置
背景介绍
我在两张3090上运行 Oh My Pi + vLLM。每轮平均等待时间从28秒降至7秒,主要来自修改OMP设置:
1. 为每个角色设置显式effort level
未设置的角色默认是xhigh(极高)。显式设置后可以有效控制各角色的推理开支,避免意外高推理强度拖慢响应。
2. 调整thinking_token_budget
将thinking_token_budget设为7500,限制每个回合的思考token数量。这个预算既能保留思考能力,又不会因过度思考导致每轮等待急剧上升。
3. 增加maxTokens
将maxTokens从8k增至32k,因为之前的文件写入会被截断。更大的输出上限确保长文件能被完整生成。
4. 工具输出超过10KB时转移到文件
当工具输出超过10KB时,将其写入文件而不是保留在上下文中,避免大量输出挤占有限的上下文窗口。
5. 限制子代理数量并启用appendOnlyContext
最多使用4个子代理,并开启appendOnlyContext,让上下文只追加、不重写,保持对话稳定。这个组合在双3090上运行良好。
帖子中有更多信息,也欢迎提问。
补充讨论:常见问题与经验
u/PM_ME_DEAD_CEOS:设置thinking budget会影响质量。
u/imnotzuckerberg:我在使用club3090(dual-fast)和autoround(Q4),以及2x 3090 + nvlink。
- 我取消了thinking budget的上限(缺点是它会想很久)。
- Token窗口为256k,但压缩(contractions)大约发生在75%。
- 如果使用超过2个子代理,性能会直线下降,效果明显变差(根据OMP报告,解码速度至少低到1 tok/s)。
所以我对你的设置很好奇,你是如何让4个子代理运行得如此顺畅的?
u/Open-Adhesiveness-86:一旦你添加第三个子代理导致解码速度降至约1 tok/s,检查vLLM日志中是否有'preempted ... not enough KV cache space',或观察vllm:num_preemptions_total指标。在256k上下文下,数个长并行会话会填满KV缓存,vLLM会不断驱逐并重新计算它们。通常降低max_model_len或使用fp8 KV缓存可以解决。