第2章 INT4 量化原理与方法 导读:这一章是整本教程的理论内核,也是「从照抄命令到真正懂行」的分水岭。我们会先把 INT4 量化的数学讲透——scale 与 zero-point 是怎么把浮点数「塞进」4 个比特的;再解释为什么需要校准集(calibration set);最后对比三条主流路径:GPTQ、AWQ 与基于 GGUF/llama.cpp 的后训练量化。读完你应能根据「手头硬件、模型规模、可接受工期」选出适合自己的那一条路。 我建议你把这一章当「慢读章」:公式别跳,手算例子别抄答案。这一章多花的一小时,会在第 4 章实战里替你省下整整一天的瞎调。
导读:这一章是整本教程的理论内核,也是「从照抄命令到真正懂行」的分水岭。我们会先把 INT4 量化的数学讲透——scale 与 zero-point 是怎么把浮点数「塞进」4 个比特的;再解释为什么需要校准集(calibration set);最后对比三条主流路径:GPTQ、AWQ 与基于 GGUF/llama.cpp 的后训练量化。读完你应能根据「手头硬件、模型规模、可接受工期」选出适合自己的那一条路。
我建议你把这一章当「慢读章」:公式别跳,手算例子别抄答案。这一章多花的一小时,会在第 4 章实战里替你省下整整一天的瞎调。
把五章连起来看,本教程是一条「动机 → 原理 → 权衡 → 实战 → 展望」的递进链:
第 1 章解决了「为什么非量化不可」,第 2 章解决「量化到底在算什么」——它是后面一切的技术地基。第 3 章会在这块地基上讨论「量化损失怎么度量与压回」,第 4 章才把手里的原理变成真正能对话的本地服务。所以如果你在第 2 章感到抽象,请把它当成「为第 4 章存钱」:现在存的理解,到时候都会连本带利兑现成「少踩坑、调得动」。
第 2 章会反复出现这几个词,先在这里统一对个暗号,读到时就不必回翻:
记住这六个词,2.1 到 2.3 读起来会顺得多。
很多读者一上来就想直接敲量化命令,结果参数看不懂、报错不会修。这一章我刻意把它排成「数学 → 校准 → 选型」三段递进,目的是让你先拿到判断力,再拿工具:
这一章不给你任何一条复制粘贴的命令(那是第 4 章的活),但它给你的是比命令更值钱的东西:选错方法比选低精度更致命的判断力。带着这个视角进实战,你会少走很多弯路。
在往下读之前,先确认你已经具备这两样东西,否则 2.1 的公式会缺少落点:
如果第 1 条还不牢,建议回看 1.1 的显存对照图;如果第 2 条模糊,记住一句话就够:量化改的是这些浮点数的存储方式,不改模型结构。
最基础的均匀量化用一个线性映射把浮点权重 w 映射到整数 q:
q = round(w / scale) + zero_point w ≈ (q - zero_point) × scale
其中 scale 是缩放因子,zero_point 把量化后的零点对齐回原浮点的 0,用于非对称分布。INT4 的整数空间只有 16 个值(-8 到 7,或 0 到 15),所以「怎么选 scale 和 zero_point,让这 16 个值尽量覆盖原始权重的分布」就是量化的全部难题。
关键洞察是:权重通常近似零均值、近似对称的高斯分布,且少数极端值(离群点)会撑大 scale,导致绝大多数正常权重被压到同一个整数上、信息大量丢失。因此好的量化方法不只是在张量级做简单的 min-max,而是要去抑制离群点的影响。
后训练量化(PTQ)不重新训练模型,而是用一小批有代表性的数据(校准集)「观察」模型在前向传播时权重与激活的真实分布,从而确定最优的 scale/zero_point,或确定哪些权重更重要。校准集的质量直接决定量化后模型的「聪明程度」:用和你的目标场景越接近的数据做校准,量化损伤越小。
这正是 GPTQ 与 AWQ 的分歧点之一:GPTQ 用校准数据做二阶信息补偿,AWQ 则基于「激活幅度大的权重更重要」的洞察,只保护少量重要权重、其余做量化。两者的哲学不同,适用场景也不同,后文会展开。
选型的一句话建议:想省心跨硬件跑通 → GGUF;想在某张卡上压到极致且用现代框架 → AWQ/GPTQ。
把整章浓缩成一句判断准则:量化的本质,是用一对 scale/zero_point 把浮点权重塞进有限整数格子,而「格子怎么分、离群点怎么压、校准数据怎么选」共同决定了 INT4 下模型是「变傻」还是「几乎无损」。 这句话里藏着三层递进——2.1 教你分格子(数学),2.2 教你喂数据(校准),2.3 教你选工具(路径)。
如果你只能记住三件事,请记这三句:
带着这份判断力,第 3 章我们往更深一层走:量化必然带来精度损失,这个损失能不能度量、能不能预测、不同方法之间到底差多少?以及如何用最少代价把损失压回去。那是「从会用,到用得好」的关键一跃。