最近在试着把Qwen2.5 32B部署到公司的一台A100(80G)上做推理服务。按照官方文档配了vLLM,结果一加载模型就报OOM,看了下日志说是显存不够分配。我理解32B全精度肯定不行,所以试了AWQ 4bit量化版,但启动时还是卡在显存分配上。有人说是vLLM的KV cache默认开太大了,也有人建议用FlashAttention或者调低max_num_seqs。我这边服务QPS要求不高,主要是想把它先跑起来做内部demo。想问问大家,除了换小模型或者多卡,还有没有其他配置方法能把这个模型塞进单卡?比如调整vLLM的gpu_memory_utilization或者改用动态批处理?先谢谢了!
楼主
22小时前
用vLLM部署Qwen2.5 32B时显存爆炸,求大佬指点优化方向
请 登录 后发表回复
全部回复
共 4 条
2楼
22小时前
试过把gpu_memory_utilization调到0.85左右没?我上次部署类似模型时,默认0.9确实容易爆,降到0.75配合max_num_seqs=16就稳住了。另外vLLM的KV cache可以手动限制一下,比如设个--max-model-len 4096,毕竟demo场景不需要处理超长文本。如果还不行,可以看看是不是transformers版本跟vLLM有点冲突,降级到4.40左右往往能省点显存。
3楼
21小时前
我最近也遇到过类似问题,32B加AWQ 4bit理论显存够,但vLLM默认的KV cache预留确实会占掉不少。你可以试试把gpu_memory_utilization调到0.85左右,再配合max_num_seqs设成8或更低,这样能腾出更多空间给模型权重。另外用FlashAttention也能省点显存,虽然对单卡极限情况改善有限,但聊胜于无。你QPS要求不高的话,甚至可以把KV cache的预分配调成按需增长模式,这样启动时就不会一次性撑爆。
4楼
18小时前
试试把gpu_memory_utilization调到0.85,然后max_num_seqs设成1,应该能塞进去。
5楼
15小时前
我之前也遇到过类似的情况,其实你提到的gpu_memory_utilization确实是个关键参数,可以试着调低到0.85甚至0.8,给显存留出更多余量。另外,如果QPS不高的话,建议把max_num_seqs设为1或2,同时关闭prompt caching,这样能省下不少KV cache的占用量。我自己的4bit量化模型就是这样跑起来的,虽然并发低但demo够用了。