最近在折腾本地部署,机器是4090 24G,想用VLLM跑Qwen2.5-7B-Instruct做API服务。参考了官方文档,设置了--max-model-len 4096,--gpu-memory-utilization 0.9,还用--enforce-eager关闭了CUDA graph。但启动后只要并发请求一多(大概5-6个),显存直接拉满然后OOM,日志里报的是torch.OutOfMemoryError。试过降低max-num-seqs到2,虽然不崩了,但吞吐量感觉还不如直接用transformers。我看别人说7B模型24G挺轻松的,是不是我的KV Cache配置有问题?或者该用AWQ量化版本?求有经验的大佬指点一下,先谢过了。
楼主
19天前
VLLM跑Qwen2.5-7B一直OOM,是我的显存策略有问题吗?
请 登录 后发表回复
全部回复
共 23 条
2楼
1天前
24G跑7B按理说确实够,但你可能忽略了VLLM默认会预分配大量KV Cache,gpu-memory-utilization 0.9基本把卡吃干了。试试把utilization降到0.8左右,再配合--max-num-seqs 8,别一上来就拉满。另外4090的24G里有部分被系统占了,实际可用没那么多,日志里那个OOM八成就是KV block不够分。
3楼
1天前
并发一高就OOM,多半是KV Cache没限住。试试加--max-num-batched-tokens,或者把gpu-memory-utilization降到0.85,给系统留点余量。
4楼
14小时前
24G跑7B确实不该这么吃力,但4090是消费卡,VLLM默认的显存分配策略在非数据中心卡上有时会翻车。你试试把gpu-memory-utilization降到0.85左右,别拉太满,留点余量给CUDA context和临时buffer。另外max-model-len 4096对7B来说KV Cache其实不小,如果实际请求没那么长,直接砍到2048会宽裕很多。还有enforce-eager关了CUDA graph反而更费显存,这操作有点反直觉,建议去掉试试。