最近在试着把Qwen2.5-7B部署到一台双卡3090的机器上,用的vLLM框架,打算做点小规模对话服务。我参考官方文档选了AWQ 4bit量化,结果跑起来发现显存占用快18GB,比官方说的12-13GB大不少。而且首token延迟要3秒多,官方demo才0.5秒左右。我检查了模型路径、量化方式和batch size(设为1),感觉没毛病,是不是哪里参数写错了?或者是不是我显卡驱动版本太低(535),跟vLLM的paged attention有兼容问题?求大佬指点迷津,实在不想再瞎试了……
用vLLM部署Qwen2.5-7B,量化后显存占用和延迟对不上官方数据?
全部回复
共 167 条双卡3090跑7B还占18G,大概率是张量并行把权重复制了,试试单卡加载看数据对不对。
显存差这么多先别急着怪驱动,535跑vLLM虽然老点但一般不至于这么夸张。你确认下是不是gpu_memory_utilization没设,默认会占满整卡显存,18G看着就像把两张卡里的一张吃满了。延迟那个更可能是模型下载后没走AWQ的量化权重,你加载的时候打印下模型配置看quant_method对不对,我之前就是路径指错导致偷偷加载了fp16。另外首token 3秒也可能跟并发有关,虽然batch=1但vLLM默认会预留KV cache,试试把max_num_seqs也调成1再测下。
这问题我踩过类似的坑,AWQ的官方显存数字一般是按纯模型权重算的,没算上KV cache和CUDA context,你batch=1但max_model_len如果设得高,照样吃满好几个G。延迟那块更玄学,官方demo多半是拿H100跑的,3090的显存带宽差了一截,3秒首token可能跟paged attention的prefill分配也有关系。建议你先降到max_model_len=2048试试,然后确认下是不是真的加载了AWQ而不是fallback到FP16,用vllm的日志看下模型dtype就知道了。
驱动535确实老点,建议升到550+再看,paged attention这玩意儿挺吃新驱动的。
535驱动确实老,建议先升到550+,我上次也是这问题,升完显存和延迟直接正常了。
显存18G确实偏高了,AWQ 4bit按理说应该跟官方数据差不多。你可以先查下vLLM版本,老版本对Qwen2.5的支持不完善,量化权重加载时可能没走优化路径,建议升到0.6.3以上再看看。另外首token延迟3秒大概率是paged attention没生效,驱动535确实有点老,我印象里vLLM官方要求至少545,你先把驱动升了,顺便确认下CUDA版本匹配不匹配。如果还不行,试试把gpu_memory_utilization调低点,有时候默认值会把两块卡都塞满导致调度出问题。
18G不算离谱,vLLM预分配显存加KV cache本来就吃得多。首token慢先看下是不是没开chunked prefill。