最近在把我们微调过的Qwen2.5-7B部署到内网服务器上,用vLLM跑的,开了gptq量化。理论上7B模型int4量化后显存占用应该在5-6G左右,但实际部署后nvidia-smi一看,单卡A10直接吃了14G,吞吐也只有200 tokens/s不到。我已经设置了max_model_len=4096,也开了continuous batching,但感觉没起到什么作用。怀疑是不是上下文预填充阶段太吃显存,还是量化版本选错了?求有经验的大佬指点一下,或者有没有什么工具能定位显存到底被什么占住了?提前感谢。
楼主
2026-08-02
部署7B大模型到生产环境,显存占用比预想高很多怎么办?
请 登录 后发表回复
全部回复
共 102 条
2楼
4天前
显存大头在KV cache和预填充,试试vllm的--kv-cache-dtype和--gpu-memory-utilization,把利用率拉满再看。
3楼
13小时前
14G确实有点离谱了,不过也不是完全没可能。vLLM的显存占用不只是权重,KV cache才是大头,尤其你没限制max_num_seqs的话它默认会按可用显存尽量多分配。A10是24G卡,vLLM启动时gpu_memory_utilization默认0.9,也就是它会主动吃掉差不多21G左右,你看到14G可能只是还没跑满或者被别的进程占了。先试试把gpu_memory_utilization调低到0.6左右,再看显存变化,能立刻判断是不是预分配的问题。另外Qwen2.5-7B的GQA是7个KV head,4096上下文单请求的KV其实不大,但并发一上来就指数级涨。吞吐200 tokens/s偏低,建议看看是不是batch size根本没起来,用vLLM的metrics接口看running/waiting队列。定位显存可以用torch.cuda.memory_summary或者py-spy配合nvml,实在不行先跑个纯推理脚本对比vLLM的占用差异。还有个坑是GPTQ在vLLM里有时候会走marlin kernel,权重加载方式不同显存表现也不一样,可以试试AWQ对比下。