最近在折腾本地部署,机器是3090 24G,想跑7B或者13B的模型。试了FP16直接爆显存,改成INT8勉强能跑,但生成质量肉眼可见下降,尤其是代码生成,经常出现语法错误。又试了GPTQ和AWQ,感觉速度还行,但效果还是不如原版。看网上有人说用vLLM或者ollama能优化,我试了ollama,感觉加载快了点,但长文本还是会卡。想问下大家,日常用来写代码和查资料,一般怎么平衡显存占用和模型效果?有没有什么实用的优化技巧或者推荐的量化方案?另外,是不是应该直接换个更小的模型,比如把13B换成7B,还是说量化调参更值得折腾?有点迷茫,求指点。
部署本地大模型显存总不够,量化后效果又变差怎么办?
全部回复
共 71 条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和上下文长度控制,别一次塞太多。
学到了,感谢分享!
换7B不如试试AWQ量化加vLLM,代码任务掉点没那么夸张。
3090跑13B确实吃力,量化掉质量基本是必然的。我建议你试试AWQ的4bit,比GPTQ对代码任务友好一些,再配合vLLM的paged attention,长文本会稳很多。其实日常写代码查资料,7B微调好的模型未必比13B量化差,比如DeepSeek-Coder-7B就很能打。别死磕13B了,省下的显存留给上下文更实用。
13B换7B不如先试AWQ加vLLM,代码场景7B其实够用,量化损失比你想的小。
3090跑13B确实吃力,我之前也是类似配置,后来发现AWQ量化比GPTQ在代码任务上稳一些,可以试试。另外vLLM的PagedAttention对长文本帮助挺大,比ollama更适合你这种场景。说实话写代码的话7B量化版和13B原版差距没那么大,省下的显存还能开更长上下文,不亏。
7B量化后写代码确实容易翻车,我一般查资料用4bit,写代码就老老实实跑FP16小模型,别硬撑。
3090跑7B用AWQ其实挺稳的,代码场景建议别死磕INT8,试试GPTQ的4bit 128g,质量比默认配置好不少。13B换7B我觉得不一定划算,小模型代码能力掉得更明显,还不如7B量化后多留点显存开长上下文。vLLM主要省的是并发和调度,单次生成对显存帮助有限,可以试试exllama2,速度和质量平衡得还行。