云计算百科
云计算领域专业知识百科平台

16 位压到 4 位,模型为啥还不傻?——聊聊量化这笔反直觉的账

上周三晚上十一点多,我在自己那台 2019 年买的老笔记本上,跑起来一个 70 亿参数的模型。没接外接显卡,没租云服务器,16G 内存硬扛。能跑成,靠的是把模型量化到 4 位——权重(weights,模型的参数)从 16 位浮点数压成 4 位整数,磁盘体积从 14 个 G 掉到 4 个 G 出头。第一次看到回复一个字一个字往外蹦的时候,我盯着屏幕愣了好几秒:位宽砍到只剩四分之一,它怎么还能好好说话?

这听起来像把高清图硬压成马赛克,模型该立刻变傻才对。

先把话说清楚:量化(quantization)到底干了什么。训练完的模型里,每个参数默认用 16 位浮点数(FP16,用 16 个二进制位存一个数)保存,能表达六万多个档位;4 位量化(INT4,只用 4 个二进制位)只留 16 个档位,相当于让每个参数从"精确到小数点后好几位"退化成"只有 16 档的旋钮"。2022 年 GPTQ 论文出来之后,大家陆续确认了一个反直觉的事实:对大部分大模型来说,压到 INT4 之后,困惑度(perplexity,衡量模型"茫然程度"的指标,越低越好)只涨一点点。我拿 Qwen 系一个 7B 模型试过:FP16 的 PPL 是 6.8,GPTQ 压完是 7.1,回答质量肉眼几乎看不出差别,显存占用直接砍到三分之一。

为什么能压这么狠?我自己琢磨下来是两层原因。一层是冗余:大模型的知识摊在几十亿个参数上,单看任何一个参数,精度都没那么要紧——一本书的信息量不在某个字用什么字体上。另一层是异常值,这个更关键:量化真正怕的不是"数多",是少数参数特别大。模型推理时的激活值(activations,每层算出来的中间结果)里经常冒出一些数值大得离谱的离群点,均匀的刻度尺量到它们直接爆表,这才是精度崩掉的元凶。AWQ(激活感知量化,Activation-aware Weight quantization)的思路就是认出这帮关键通道,给它们单独留精度,其余照压不误。

思路挺好,我第一次动手就翻了车。当时压的不是开源底座,是我自己微调过的客服小模型——底座压完 PPL 纹丝不动,我微调过的版本压完直接答非所问,用户问退款它聊物流。折腾了一晚上才想明白:微调(SFT,监督微调,拿人工标注的问答对继续训练)改动的参数本来就不多,量化引入的噪声跟这点偏移一叠加,新学的本事全被淹了。还有个更隐蔽的坑:校准数据(calibration set,量化时用来统计数值分布的那一小批样本)。我图省事用了通用语料,跟业务领域八竿子打不着,压出来的模型在客服话术上格外拉胯。换上业务对话重新校准,同样的算法,分数立刻回来一截。同样一个 7B 模型,通用语料校准和业务语料校准,在我们那套客服测试题上能差出好几分,这钱真不能省。

更阴的坑在长文本。PPL 是在几百 token 的窗口上测的,我测着挺好就上了线,结果用户灌进一万字的合同让它总结,输出开始蹦乱码。那天我盯着满屏莫名其妙的字符,旁边的同事探头看了一眼:"你这不是 AI,是抽象画生成器。"后来排查才反应过来:KV 缓存(模型处理长文时缓存的中间状态)没量化时占的显存比权重还大,4 位权重省下的空间被长上下文一口口吃回去,而我对 KV 缓存用的是另一套更激进的压缩策略,精度损失全在长文本上兑现。短文本测分没事,长文本当场露馅——评测窗口和你真实业务的窗口不一样,分数就是会骗人。打那以后我给自己立了个规矩:压完的模型,必须拿业务里最长的真实样本再过一遍,报告上 PPL 好看不算数。

顺着这个思路往下走,量化的终点可能不是"省显存的技巧",而是模型出厂时的默认形态。现在主流开源模型放出来,官方渠道基本都直接带 INT4 版本;手机厂商的端侧模型全是 4 位起步;连训练侧,FP8(8 位浮点)精度都已经在大厂的生产管线里跑起来了。位宽和精度的这笔账,整个行业都在重算。我的判断是:再过一两年,"全精度跑推理"反而会成少数派,就像今天没人为了一部电影专门去下无损原盘。车里、手机相册那些离了网就不能摆烂的功能,背后全是低位宽模型在撑着,这块的用量只会越来越大。

不过话说回来,量化不是免费的午餐。低比特下,模型的"长尾能力"掉得比平均指标狠得多——复杂推理、小语种、冷门知识,这些在公开榜单上权重不高的能力,恰恰是被压得最惨的。平均分好看,不代表你的场景没事。这也是我现在的习惯:压之前先建一套自己业务的小评测集,几十条真实问题就够,别信公共榜单的均值。

所以想跟大家聊的就这么个事:你在业务里敢直接上 INT4 吗?是先建领域评测集再压,还是干脆 FP16 不折腾?如果你的模型也遇到过"短文本没事、长文本崩"的情况,评论区说说,你们最后把阈值定在了哪——我很好奇这条路大家各自走到哪一步了。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 16 位压到 4 位,模型为啥还不傻?——聊聊量化这笔反直觉的账
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!