最近在做一个小项目,把微调过的Qwen2.5-7B接到公司内部知识库问答上。本地测试一切正常,但推到服务器上就出问题了——用的是A10(24G显存),模型加载完占18G左右,按理说还有富余。结果只要并发一上来(大概3-4个请求),直接就CUDA OOM。我用的vLLM,加了--max-model-len 4096,并发数设的8,但日志显示实际批处理好像没生效?另外默认的KV Cache是不是没自动调优?试过把--gpu-memory-utilization调到0.9,还是不行。有没有大佬遇到过类似情况,是量化精度选错了(目前用的AWQ),还是并发控制参数根本就没奏效?求指点,孩子快被线上事故逼疯了。
楼主
2026-08-15
部署Qwen2.5-7B到生产环境,显存明明够却一直OOM?
请 登录 后发表回复
全部回复
共 61 条
2楼
22天前
A10 24G 跑 Qwen2.5-7B 的 AWQ 确实挺紧的,你看到加载完占 18G 那只是权重加基础开销,KV Cache 是后面随着请求动态涨的。vLLM 默认会按 gpu-memory-utilization 去抢显存做 KV Cache 池,0.9 的话等于只给系统留 2G 多,稍微有点波动就容易炸。你说的批处理没生效,我猜是 max-num-seqs 设了 8 但实际被 max-model-len 和可用 KV 块卡住了,调度器拿不到足够 block 就只能排队或者直接 OOM。可以先把 max-model-len 降到 2048 试试,如果立马好转那就是 KV 显存不够,跟量化精度关系不大。另外 AWQ 在 vLLM 里对 7B 的显存节省其实有限,真正吃紧的是长上下文下的 KV,不是权重。建议你开一下 enable-prefix-caching,知识库问答场景 system prompt 和检索片段重复度高,命中缓存能省不少。还有 max-num-batched-tokens 别用默认,手动设小一点比如 2048,让调度更平滑。实在不行就上张量并行或者换更小的量化,但先确认是不是 KV 池被撑爆了。