HOW 技术原理

量化:4bit 之后到底掉了什么

量化换掉一部分精度,换来的是能不能在你这张卡上跑起来。掉多少分,得自己测。

量化:4bit 之后到底掉了什么
题图 / Unsplash

量化在做什么

模型参数原本是十六位浮点数,量化把它压成八位或四位的整数,体积和显存占用随之下降。

七亿参数的小模型,半精度要十几 G,四比特只要四五 G。这个差别决定了你能不能在一张消费级卡上跑。

代价是精度。原本细微的数值差异被抹平,模型在某些需要精细判断的地方会变差。

量化方法有很多种,效果差别不小。同样是四比特,有的几乎无损,有的明显掉点。

看量化版本时注意两件事:用的什么方法、校准数据是什么。校准数据和你的任务差太远,掉点会更明显。

电路板特写,芯片与精度
场景配图 / Unsplash

掉在哪几类任务

长文推理。需要跨段落比较多处细节时,量化模型的遗漏明显增多。

代码生成。语法错误率上升,尤其是复杂结构。

数学与精确计算。本来就不擅长,量化后更不稳。

日常问答、分类、摘要,掉得不明显。这几类任务对数值精度不敏感,量化后基本可用。

分类任务尤其稳,因为最终只取一个类别,中间的小数误差很难改变结果。

怎么测才靠谱

别信通用结论。同一套量化方案,在不同模型、不同任务上表现差别很大。

准备三十到五十道你自己的题,覆盖你最常做的任务。同一批题,跑一遍原始模型,跑一遍量化模型,对比正确率。

重点看“错得离谱”的比例。有些量化模型不是整体变差,是在少数样本上完全崩掉,这种更危险。

跑三次取平均。单次结果受随机性影响,差异可能比量化本身还大。

测的时候把温度调到最低,减少随机性干扰。

机房服务器,显存换空间
场景配图 / Unsplash

什么时候可以用

数据不能出内网,又没有预算买大卡,量化是唯一选择。这时候讨论的不是要不要,是选哪种方案。

任务单一、输出格式固定、有人工复核,量化模型够用。

反过来,任务是长文档分析、复杂代码、需要精确数字的,别用量化模型顶。省下的硬件钱,会以返工的形式还回去。

补充一句显存估算有个粗公式:参数量乘每参数字节数,再加上下文缓存。四比特大约每参数零点五到零点七字节。
色卡,色彩层次被压缩
场景配图 / Unsplash

常见问题

量化后还能微调吗?

能,但效果通常不如在原始精度上微调。常见做法是先微调再量化。

八比特和四比特差多少?

八比特通常接近无损,四比特在复杂任务上有可见差距。显存够就上八比特。

为什么同一个模型,不同量化版本效果差很多?

量化方法、校准数据、分组粒度都不同。下载时说清楚是用什么方法量化的。