模型量化是什么:FP16→INT4 到底在换什么
这一篇只讲概念与权衡。怎么挑档位、怎么上线,见「使用」层。
一句话解释
模型内部是几亿到几千亿个数字(参数)。默认每个数字用 16 位精度存。量化就是把这些数字存得更粗——用更少的位表示,代价是数值不再精确。
类比:把一张 24 位色照片存成 8 位色。文件小了很多,肉眼大多时候看不出差别,但渐变处会出现断层,细节会糊。
换来了什么
| 方面 | 效果 |
|---|---|
| 显存/内存 | 几乎线性下降:精度位数减半,占用大致减半 |
| 速度 | 通常变快,因为瓶颈常在「把权重搬进计算单元」而不是计算本身 |
| 成本 | 同一张卡能装下更大的模型,或同一模型能服务更多并发 |
数量级感受:一个 70 亿参数的模型,16 位精度约需 14GB;压到 4 位精度约需 4GB——从「消费级显卡装不下」变成「随便一台机器都能跑」。这就是量化让本地跑大模型成为可能的唯一原因。
代价是什么
- 精度损失:模型输出会变差,但不是均匀变差。抄写、改写、简单问答几乎看不出;多步推理、精确数字、长链代码更容易出错。
- 越狠越明显:8 位基本无痛,4 位是当前性价比甜点,低于 4 位开始明显退化。
- 不同任务敏感度不同:同一个量化版本,摘要得分不变、数学得分掉一截,是很常见的现象。
- 不是所有部分都能同等压缩:实践中会保留一部分关键层用高精度,所以「4 位」不等于「全部 4 位」。
常见名词(只需知道是什么)
- GGUF:一种本地推理常用的模型打包格式,里面可以包含不同量化版本。它是格式名,不是压缩率。
- Q8 / Q6 / Q5 / Q4 / Q3 / Q2:大致表示平均每位权重用多少位。数字越小越省、越差。
- safetensors:训练与服务器侧常用的原始精度权重格式。
- 混合精度 / 保留层:关键部分用高精度、其余压狠一点,用来找回精度。
什么时候该量化,什么时候不该
该:本地跑、显存不够、成本敏感、任务不苛刻(摘要、改写、检索问答)。
不该:你要评测「这个模型到底行不行」(量化会污染结论)、你要继续训练(需要原始精度)、你的场景是精确计算或多步推理且已经出现退化。
一个判断习惯
看到「量化版」不要直接当成同一个模型。它更像同一个模型的一个更便宜、更迟钝的兄弟:多数时候够用,关键时候先自己测一遍。