最近在搞一个本地知识库问答,用的ChatGLM3-6B,显卡是4060Ti 16G。一开始直接FP16加载,跑起来就OOM,连对话都开不了。后来试了4bit量化,显存倒是够了(大概8-9G),但回答质量明显下降,很多简单推理都开始胡说八道。
大模型本地部署显存爆了,量化后效果又差,求指点
全部回复
共 108 条试试AWQ量化,比GPTQ保真度高不少,8G左右4060Ti应该扛得住。
16G显存跑6B的FP16确实挺紧张的,模型权重就占12G多,再加上KV cache和中间激活,OOM很正常。4bit量化掉点厉害的话,可以试试AWQ或者GPTQ的int4,比bitsandbytes的NF4保留精度好一些,尤其对中文任务。另外你知识库问答是不是prompt塞太长了,上下文一长显存和效果都会崩,建议限制一下检索返回的chunk数量。实在不行考虑换个更小的模型比如Qwen2.5-3B或者用llama.cpp跑GGUF的Q5量化,4060Ti这个卡其实挺适合的。
ChatGLM3-6B的4bit量化确实掉点厉害,尤其推理类任务,我之前也踩过这个坑。你可以试试AWQ或者GPTQ的int4,比bitsandbytes的NF4稳不少,显存占用差不多但输出质量能好一截。4060Ti 16G跑6B其实INT8就够用了,大概占11G左右,比4bit强很多。实在不行就换Qwen2.5-7B的GPTQ-int4,同显存下表现比ChatGLM3好挺多。
ChatGLM3-6B的4bit量化确实容易掉点,尤其推理任务上特别明显。你可以试试换成GPTQ的Int4,或者用AWQ量化,对效果保留比bitsandbytes的NF4好不少。4060Ti 16G其实跑Qwen2.5-7B的Int4挺舒服的,显存占用差不多但底子更强。知识库问答的话,检索质量比模型本身影响还大,先把embedding和召回调好再折腾量化。
4060Ti 16G跑ChatGLM3-6B其实不算太紧张,FP16权重就12G出头,你OOM大概率是上下文长度设太大了,KV cache吃掉的显存比想象中狠。可以先把max_length压到2K左右试试,或者用vLLM这类带PagedAttention的推理框架,显存利用率会好不少。至于4bit量化掉效果,这个确实挺常见的,尤其是量化只做weight-only的时候,激活值还是FP16,误差累积起来对推理任务影响很明显。你可以试试GPTQ或者AWQ,比bitsandbytes的NF4稳一些,另外量化后把temperature调低一点也能减少胡言乱语。如果实在接受不了质量损失,还有个折中方案是跑FP16但用CPU offload把部分层丢到内存里,速度慢点但答案质量能保住。知识库问答本身对模型推理要求不算特别高,配个好点的检索策略其实比死磕模型精度更划算。
4bit量化确实容易掉点,试试GPTQ的int4配group_size 128,或者换Qwen2.5-7B,对量化友好很多。
4060Ti 16G跑6B模型其实还行,FP16大概要12-13G显存,你OOM可能跟max_length设太大或者没开flash attention有关系。4bit掉点确实挺明显的,可以试试8bit量化,显存占用大概10G出头,质量比4bit好不少。另外知识库问答的话,检索质量本身可能比模型精度影响更大,先把召回调好再折腾量化吧。
4bit量化确实容易掉点,尤其推理类问题。你可以试试GPTQ的Int4,或者换AWQ量化,比bitsandbytes的NF4稳一些。4060Ti 16G跑6B其实FP16也就12G出头,OOM可能是上下文拉太长了,先把max_length压到2k试试。