最近在试着把llama3.1-8B或者Qwen2.5-7B部署到自己的双3090上,跑推理服务给团队用。先试了FP16,显存直接爆了,后来查资料说AWQ量化能降到原来一半左右,我就用AutoAWQ做了4bit量化,结果跑起来一看,显存占用还是15-16G,几乎没怎么降。查了代码发现好像是因为模型加载时默认还是用FP16的权重?或者是量化后推理时算子没切到位?我用了vLLM加载,设了dtype=auto,但效果不明显。有没有大佬踩过这个坑?AWQ量化后显存占用的瓶颈到底在哪?是需要手动调一下并行策略,还是vLLM对量化模型的显存管理本身就有问题?真心求助,谢谢。
楼主
5小时前
部署7B大模型用AWQ量化后,显存为什么还是降不下来?
请 登录 后发表回复
全部回复
共 1 条
2楼
5小时前
这个问题我也遇到过,当时折腾了好久才发现是vLLM在加载AWQ模型的时候,默认的weight loading方式会先把FP16的原始权重读进来再转量化权重,导致中间有一波显存峰值,而且如果显存没释放干净,跑起来就会一直占着。你试试在加载时加上--quantization awq这个参数,同时指定--dtype half,别用auto,auto有时候会fallback到FP16。另外还有一点容易忽略,就是AWQ的量化权重虽然在存储上小了,但推理时为了保持精度,vLLM里很多算子还是需要保留一些FP16的中间缓存,尤其context长度大的时候,这部分显存开销几乎和量化前一样。你双3090的话,可以试试把max-model-len设小一点,比如4096,别用默认的8192,同时调整下--gpu-memory-utilization到0.85左右,给缓存留点余量。还有个比较trick的地方,用AutoAWQ做量化时记得设--calib-dataset对应你的实际任务分布,不然量化校准不对,vLLM可能会因为精度问题自动回退部分层到FP16计算,显存就下不来了。