最近想把公司的一个7B模型(Qwen2.5-7B)部署到线上给内部工具用,用的vLLM。单卡A10(24G)试了下,加载FP16权重加KV cache直接OOM,只能把max-model-len调到2048勉强跑起来,但稍微长点的对话就报错。后来看到有人用AWQ量化到4bit,显存占用是降了,但推理速度反而慢了,而且输出质量感觉有轻微下降。想问问各位大佬,生产环境一般怎么平衡显存、速度和效果?是直接上两张卡做张量并行,还是量化+offload?另外有没有靠谱的量化工具链推荐(GPTQ/AWQ/llama.cpp)?感谢!
部署7B大模型到生产环境,显存不够怎么办?求实战经验
全部回复
共 107 条A10单卡跑7B确实紧,试试gpu-memory-utilization调到0.95再加AWQ,速度慢可能是没开Marlin内核。
两张A10走张量并行最稳,量化掉点又掉速不太划算,KV cache用FP8试试。
AWQ 4bit 速度变慢大概率是没开 Marlin kernel,vLLM 里加 --quantization awq_marlin 试试,A10 上跑 7B 的 AWQ 一般能到 FP16 的八九成速度。质量下降确实有点,但内部工具场景基本能接受,实在敏感就上两张 A10 做 TP=2,比量化省心,就是卡成本翻倍。offload 不太建议放生产,CPU 那一趟来回延迟抖动太厉害,体验会很差。
A10跑7B的FP16确实尴尬,权重就占15G左右,KV cache再一挤就爆了。我们线上是双卡A10走张量并行,vLLM开tp=2,max-model-len给到8k都还算稳,代价就是成本翻倍。AWQ掉速可能是kernel没选对,试试换Marlin或者用vLLM自带的量化后端,GPTQ在A10上一般比AWQ快一点。如果预算卡死单卡,量化加CPU offload能撑,但延迟会明显上去,内部工具能忍的话倒也能用。
我们线上也是A10跑7B,最后选了双卡张量并行,vLLM直接开TP=2,显存压力小很多,长上下文也稳。AWQ确实省显存但吞吐掉得明显,GPTQ稍微好点但也就那样,量化这坑我踩过一轮还是觉得加卡最省心。如果预算卡死只能单卡,试试vLLM的gpu-memory-utilization调到0.9加上enable-prefix-caching,能榨出一点空间。llama.cpp那个Q4_K_M质量还行但并发上来就拉胯,内部工具低并发可以考虑。
我们也在生产上跑Qwen2.5-7B,一开始也是单卡A10被OOM教育了。后来试过AWQ 4bit,确实能塞进去,但你说的速度变慢我也遇到过,尤其是batch size小的时候反而不如FP16快。后来发现是kernel没选对,换用vLLM自带的awq_marlin后端之后吞吐才正常,输出质量的话我们做了一轮评测,日常问答几乎无感,但代码生成和数学推理确实会掉一点,看你们场景能不能接受。如果内部工具并发不高,我建议直接上两张卡张量并行,TP=2下A10 NVLink虽然不是满血但够用,显存压力小很多,还省得折腾量化。量化工具链我们最后固定用AutoAWQ,主要是和vLLM集成最顺,GPTQ也试过但校准集调起来更烦。真要极致省显存又不在乎延迟,llama.cpp的Q4_K_M可以考虑,但生产环境vLLM的continuous batching优势太大,不太建议换。
两张A10做张量并行最稳,KV cache能多分不少,量化掉点质量不太值。