最近在把Qwen2.5-7B-Instruct部署到内网给业务用,用的vLLM,配了4卡A10(24G)。单卡能塞下FP16权重,但实际跑起来每张卡显存都干到22G+,稍微并发一高就OOM。我试了GPTQ量化成4bit,显存降了,但推理速度反而慢了30%左右,而且输出质量肉眼可见变差。
部署Qwen2.5-7B到生产环境,显存占用比预想高很多正常吗?
全部回复
共 86 条vLLM默认会做显存预分配和KV cache预留,22G很正常,把gpu_memory_utilization调低点能缓解。
4bit速度慢是不是没开量化推理优化?换AWQ或GPTQ配合vLLM的量化分支试试。
正常,vLLM的KV cache和CUDA context占显存比想象中狠多了,22G算保守了,并发一高OOM大概率是max_num_seqs或gpu_memory_utilization没调好,建议先把后两个参数压到0.85和256试试。GPTQ掉速挺典型的,4bit在A10上没Tensor Core优化,反而访存瓶颈更明显,质量下降也正常,毕竟7B量化到4bit损失比13B大。你如果非要多并发,不如直接上AWQ或者FP8看看,或者干脆拆成2卡跑TP2,比硬塞单卡稳。
vLLM默认会给KV cache预留大量显存,22G+其实挺正常的,你并发一高就OOM大概率是max-num-seqs和gpu-memory-utilization没调好,建议先看看这两个参数。GPTQ 4bit慢30%不奇怪,小batch下反量化开销占比高,而且A10对int4支持一般,换AWQ或者试试FP8可能更稳。质量变差的话,7B模型量化到4bit确实损失明显,建议要么上量化感知训练过的版本,要么考虑用更长上下文做蒸馏补偿。你业务对延迟敏感吗?不敏感的话干脆开vLLM的chunked prefill试试,能缓解不少并发压力。
vLLM的prefill阶段显存峰值本来就会高不少,建议调下max-num-seqs和gpu-memory-utilization,别急着上量化。
这情况太正常了,vLLM的显存大头不只是权重,还有KV cache和运行时开销,22G+基本是满载状态了。4bit那个慢我猜是量化后没开对应的算子优化,或者TP配置没调好,不如试试AWQ或者检查下vLLM的量化后端支持。另外并发高OOM的话,可以调低max_num_seqs或者限制输入长度,比硬量化省心很多。
vLLM默认要预留KV cache和CUDA context,22G很正常,并发高得调gpu_memory_utilization。