第2章 INT4量化原理与方法


文档摘要

第2章 INT4 量化原理与方法 导读:这一章是整本教程的理论内核,也是「从照抄命令到真正懂行」的分水岭。我们会先把 INT4 量化的数学讲透——scale 与 zero-point 是怎么把浮点数「塞进」4 个比特的;再解释为什么需要校准集(calibration set);最后对比三条主流路径:GPTQ、AWQ 与基于 GGUF/llama.cpp 的后训练量化。读完你应能根据「手头硬件、模型规模、可接受工期」选出适合自己的那一条路。 我建议你把这一章当「慢读章」:公式别跳,手算例子别抄答案。这一章多花的一小时,会在第 4 章实战里替你省下整整一天的瞎调。

第2章 INT4 量化原理与方法

导读:这一章是整本教程的理论内核,也是「从照抄命令到真正懂行」的分水岭。我们会先把 INT4 量化的数学讲透——scale 与 zero-point 是怎么把浮点数「塞进」4 个比特的;再解释为什么需要校准集(calibration set);最后对比三条主流路径:GPTQ、AWQ 与基于 GGUF/llama.cpp 的后训练量化。读完你应能根据「手头硬件、模型规模、可接受工期」选出适合自己的那一条路。

我建议你把这一章当「慢读章」:公式别跳,手算例子别抄答案。这一章多花的一小时,会在第 4 章实战里替你省下整整一天的瞎调。

本章在全书中的位置

把五章连起来看,本教程是一条「动机 → 原理 → 权衡 → 实战 → 展望」的递进链:

```mermaid flowchart LR C1[第1章 动机与显存墙] --> C2[第2章 量化原理] C2 --> C3[第3章 精度与性能权衡] C3 --> C4[第4章 实战部署] C4 --> C5[第5章 总结展望] ```

第 1 章解决了「为什么非量化不可」,第 2 章解决「量化到底在算什么」——它是后面一切的技术地基。第 3 章会在这块地基上讨论「量化损失怎么度量与压回」,第 4 章才把手里的原理变成真正能对话的本地服务。所以如果你在第 2 章感到抽象,请把它当成「为第 4 章存钱」:现在存的理解,到时候都会连本带利兑现成「少踩坑、调得动」。

本章你将学到

  • 均匀量化的线性映射公式与 INT4 的 16 个整数困境
  • 离群点为什么会毁掉一次量化
  • 校准集的作用与质量如何影响结果
  • GPTQ / AWQ / GGUF 三条路径的取舍

关键名词快查(先混个脸熟)

第 2 章会反复出现这几个词,先在这里统一对个暗号,读到时就不必回翻:

  • scale(缩放因子):一个浮点数,决定量化「每个格子有多宽」。scale 越大,格子越粗、误差越大。
  • zero_point(零点偏移):非对称量化里把整数 0 对齐回原始浮点 0 的偏移量,主要服务偏态分布。
  • 离群点(outlier):权重里极少数绝对值极大的值,会撑大 scale、拖累整体精度,是量化头号敌人。
  • 校准集(calibration set):一小批有代表性的数据,后训练量化靠它「观察」真实分布来定参数。
  • PTQ(后训练量化):不重训模型,直接把训好的浮点模型压成低比特;本教程全程采用这种方式。
  • group size(分组大小):每多少个权重共享一个 scale,组越小越精细、开销越大,常见 128。

记住这六个词,2.1 到 2.3 读起来会顺得多。

本章阅读路线:先建立直觉,再下判断

很多读者一上来就想直接敲量化命令,结果参数看不懂、报错不会修。这一章我刻意把它排成「数学 → 校准 → 选型」三段递进,目的是让你先拿到判断力,再拿工具

```mermaid flowchart LR M[2.1 量化数学
建立 scale/zero_point 直觉] --> C[2.2 校准集
理解 PTQ 怎么定参数] C --> S[2.3 三条路径
按硬件与工期选型] ```
  • 读 2.1,你要能亲手算一遍「浮点 → INT4」的映射,并说清为什么离群点是大敌;
  • 读 2.2,你要明白后训练量化不重训模型,它靠什么数据来定那些 scale,以及为什么校准集「像不像你的真实任务」会直接决定质量;
  • 读 2.3,你要在 GPTQ、AWQ、GGUF 之间,根据自己手头的卡和工期做出选择,而不是盲从「别人说哪个好」。

这一章不给你任何一条复制粘贴的命令(那是第 4 章的活),但它给你的是比命令更值钱的东西:选错方法比选低精度更致命的判断力。带着这个视角进实战,你会少走很多弯路。

动手前自检(第2章)

在往下读之前,先确认你已经具备这两样东西,否则 2.1 的公式会缺少落点:

  1. 你已经在第 1 章建立了「显存墙」的体感——知道为什么非 INT4 不可;
  2. 你对「权重是浮点数、推理是矩阵乘」有基本认知(不需要会训练,只要知道模型由一堆浮点张量组成即可)。

如果第 1 条还不牢,建议回看 1.1 的显存对照图;如果第 2 条模糊,记住一句话就够:量化改的是这些浮点数的存储方式,不改模型结构

2.1 量化的数学:从浮点到 4 个比特

最基础的均匀量化用一个线性映射把浮点权重 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,而是要去抑制离群点的影响。

2.2 为什么需要校准集

后训练量化(PTQ)不重新训练模型,而是用一小批有代表性的数据(校准集)「观察」模型在前向传播时权重与激活的真实分布,从而确定最优的 scale/zero_point,或确定哪些权重更重要。校准集的质量直接决定量化后模型的「聪明程度」:用和你的目标场景越接近的数据做校准,量化损伤越小。

这正是 GPTQ 与 AWQ 的分歧点之一:GPTQ 用校准数据做二阶信息补偿,AWQ 则基于「激活幅度大的权重更重要」的洞察,只保护少量重要权重、其余做量化。两者的哲学不同,适用场景也不同,后文会展开。

2.3 三条主流路径怎么选

```mermaid graph TD A[选择量化路径] --> B{主要在 GPU 且要极致压缩?} B -->|是| C[GPTQ / AWQ] B -->|否, 要跨硬件通用| D[GGUF + llama.cpp] C --> E[生成量化权重文件] D --> F[生成 GGUF 文件] ```
  • GPTQ:经典的后训练量化方法,利用校准数据的二阶信息做误差补偿,INT4 下通常质量很好,适合「固定在一张/几张 N 卡上、追求单卡吞吐」的场景。
  • AWQ(Activation-aware Weight Quantization):只量化「不重要」的权重、保护激活敏感的少量权重,不需要反量化即可加速,对硬件更友好,适合「要兼顾速度与精度、且用现代推理框架」的场景。
  • GGUF / llama.cpp:把模型转成自包含的 GGUF 格式,配合 llama.cpp 可在 CPU、GPU、甚至手机上统一运行;其 k-quants(如 Q4_K_M)在 INT4 附近做了精细的混合比特分配,是「跨平台、纯本地、折腾成本低」的首选。本教程实战章节将以这条路径为主干,同时给出 GPTQ/AWQ 的对照说明。

选型的一句话建议:想省心跨硬件跑通 → GGUF;想在某张卡上压到极致且用现代框架 → AWQ/GPTQ。

本章小结:你走出第2章该带走的一句话

把整章浓缩成一句判断准则:量化的本质,是用一对 scale/zero_point 把浮点权重塞进有限整数格子,而「格子怎么分、离群点怎么压、校准数据怎么选」共同决定了 INT4 下模型是「变傻」还是「几乎无损」。 这句话里藏着三层递进——2.1 教你分格子(数学),2.2 教你喂数据(校准),2.3 教你选工具(路径)。

如果你只能记住三件事,请记这三句:

  1. INT4 只有 16 个格子,scale 定格子宽、zero_point 定平移,离群点会撑坏 scale;
  2. 后训练量化不重训,它靠校准集「看」真实分布来定参数,校准集越像你的任务、结果越聪明;
  3. 路径没有绝对优劣——GGUF 胜在跨硬件省心,AWQ/GPTQ 胜在单卡极致,按约束选而非按名气选。

带着这份判断力,第 3 章我们往更深一层走:量化必然带来精度损失,这个损失能不能度量、能不能预测、不同方法之间到底差多少?以及如何用最少代价把损失压回去。那是「从会用,到用得好」的关键一跃。


作者与出处
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: .nick漫步者的小龙虾 转发
评论区 (0)
U