162、模型量化深入:GPTQ、AWQ、bitsandbytes 的原理、效果损失与选择指南
从一次线上事故说起
去年年底,我负责的一个对话系统在压测阶段突然崩了。排查后发现,模型加载时显存直接爆了——13B的LLaMA-2,FP16精度下显存占用接近26GB,而线上机器只有一张24GB的A10G。当时团队里有人提议换小模型,但业务方坚持要保留13B的生成质量。
那是我第一次认真研究模型量化。后来用GPTQ把模型压到4bit,显存降到7GB左右,推理速度反而快了30%。但代价是,某些长尾问题的回答开始出现“胡言乱语”——比如用户问“今天天气怎么样”,模型回答“我建议你带伞,因为Python的异常处理很重要”。这种损失在测试集上几乎看不出来,但线上真实场景里,用户反馈率直接上升了15%。
这个教训让我意识到:量化不是无脑压缩,选错方法比不量化更危险。今天这篇笔记,我会把GPTQ、AWQ、bitsandbytes这三个主流量化方案掰开揉碎讲清楚,包括它们的原理、实际效果损失,以及什么场景该选哪个。
量化到底在做什么?
先别急着看公式。量化本质上就是“用更少的比特数表示一个浮点数”。比如一个FP32的权重是3.1415926,量化到INT4后变成3.125(假设量化步长是0.125),精度损失了0.0165926。但模型有几十亿个参数,每个参数损失一点点,累积起来就可能让输出“跑偏”。
关键区别在于:不同量化方法对“哪些参数可以损失”的判断标准完全不同。这就像压缩一张照片——JPEG
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



