最近在折腾本地部署,机器是3090 24G,想跑7B或者13B的模型。试了FP16直接爆显存,改成INT8勉强能跑,但生成质量肉眼可见下降,尤其是代码生成,经常出现语法错误。又试了GPTQ和AWQ,感觉速度还行,但效果还是不如原版。看网上有人说用vLLM或者ollama能优化,我试了ollama,感觉加载快了点,但长文本还是会卡。想问下大家,日常用来写代码和查资料,一般怎么平衡显存占用和模型效果?有没有什么实用的优化技巧或者推荐的量化方案?另外,是不是应该直接换个更小的模型,比如把13B换成7B,还是说量化调参更值得折腾?有点迷茫,求指点。
部署本地大模型显存总不够,量化后效果又变差怎么办?
全部回复
共 64 条3090跑7B用AWQ其实挺稳的,代码任务建议别低于4bit,再低语法错误明显变多。vLLM对长文本确实比ollama好不少,可以试试配个AWQ模型加连续批处理,显存和速度都能兼顾。13B换7B不一定亏,像DeepSeek-Coder这种小模型写代码反而更专。量化调参不如先换个更适合代码的模型,收益更直接。
3090跑13B确实有点勉强,我自己的经验是AWQ比GPTQ稳一些,特别是代码任务上。你试过用vLLM加AWQ量化吗?比ollama的推理效率高不少,长文本卡顿会好很多。另外7B和13B的差距在代码上挺明显的,如果实在跑不动13B,不如换个更好的7B模型,比如DeepSeek-Coder或者Qwen2.5-Coder,比硬压13B效果强。
3090跑13B的INT8确实有点勉强,尤其你还想留点显存给长上下文。我自己的经验是,写代码这种任务对量化特别敏感,GPTQ的4bit在HumanEval上掉十几个点很正常,AWQ稍微好点但也有限。ollama底层其实也是llama.cpp那套,加载快不代表推理时不卡,长文本主要吃的是KV cache,跟量化关系不大。真要兼顾质量和显存,可以试试7B的Q5_K_M或者Q6_K,比INT8的13B体感好不少,代码补全够用了。另外vLLM的PagedAttention对长文本帮助挺明显,但它对量化格式支持有限,AWQ跑起来还行。如果主要写代码,其实可以考虑CodeQwen或者DeepSeek-Coder的7B版本,专门调过的比通用模型量化后强。量化调参的空间不大,换模型架构或者尺寸往往更直接。
3090跑13B确实尴尬,FP16直接没戏,量化到4bit是常态。我试过AWQ的4bit版本写代码,比INT8强不少,但跟原版比还是有点差距,尤其复杂逻辑容易掉链子。你这需求不如试试7B的代码特化模型,比如DeepSeek-Coder或者CodeQwen,量化后效果反而比通用13B好。vLLM对长文本帮助有限,关键还是KV cache和上下文长度控制,别一次塞太多。