量化到底怎么省显存?PTQ/QAT/GPTQ/AWQ全解析,Maths, CS & AI Compendium推理篇
【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium
如果你曾在单卡上加载大语言模型被"显存不够"劝退,那一定听说过量化(Quantisation)。这篇文章基于开源教材Maths, CS & AI Compendium的 AI 推理章节,用最少公式讲透 LLM 量化省显存的核心方法:PTQ、QAT、GPTQ、AWQ 各自怎么做、代价是什么、以及不同部署场景下如何选型。
🧮 一、量化为什么能省显存:一笔简单的账
一个 70B 参数模型用 FP16 存储需要140 GB 显存——超过任何单张 GPU。把权重压到 INT4 后只剩35 GB(单卡 A100 可跑),配合权重卸载甚至能塞进 20 GB 的消费级 RTX 4090。
量化省显存的原理很简单:LLM 推理是典型的访存带宽瓶颈——生成每个 token 都要把全部权重从显存搬进计算单元,瓶颈在"搬"而不是"算"。权重每小 4 倍,搬运的数据就少 4 倍,吞吐几乎线性提升。所以量化不只是"省内存",而是又大又快的压缩。
| 格式 | 每参数字节 | 70B 模型权重占用 | 典型用途 |
|---|---|---|---|
| FP32 | 4 B | 280 GB | 训练(金标准) |
| FP16 / BF16 | 2 B | 140 GB | 混合精度训练、标准推理 |
| INT8 | 1 B | 70 GB | PTQ 推理 |
| INT4 | 0.5 B | 35 GB | 权重量化(GPTQ / AWQ) |
| 三值 {-1,0,1} | ~0.2 B | ~15 GB | 极限压缩(BitNet) |
核心权衡只有一个:精度换显存。量化误差会损失模型质量,所有方法的差异本质上是"用多小的代价把损失压到最低"。
📖 本节内容来自教材第 17 章:01. quantisation.md
🎯 二、PTQ(训练后量化):零成本上手量化
PTQ(Post-Training Quantisation)是成本最低的路线:不重新训练,只拿一个很小的校准集(通常 128–512 条样本)跑一遍模型,统计激活值的分布,再算出最优的缩放因子(scale)。
校准方法有四档,精度依次提升:
| 校准方法 | 思路 | 特点 |
|---|---|---|
| Min-max | 用最小/最大值定 scale | 简单,但被离群值"绑架" |
| Percentile | 用 99.99 分位数代替绝对最大值 | 剪掉极端值,主流选择 |
| MSE 最优 | 搜索使重构误差最小的 clip 值 | PTQ 精度通常最好 |
| KL 散度 | 最小化量化前后分布差异 | TensorRT INT8 的默认方案 |
经验法则:INT8 的 PTQ 对大多数模型精度损失 <1%,是性价比之王;但压到 INT4 时,朴素的 PTQ 质量明显下滑——这时就该请出 GPTQ 和 AWQ 了。
🔁 三、QAT(量化感知训练):让模型自己适应低精度
当 PTQ 的质量不可接受(INT4 及以下),或者模型会被部署无数次(一次成本可以摊薄)时,就轮到QAT(Quantisation-Aware Training)。
QAT 的机制是:在训练图里插入"假量化"节点——前向传播时权重/激活真的被量化再反量化,反向传播时梯度"假装没有发生量化"直接穿过(直通估计器,STE)。这样模型在训练过程中就学会了对量化噪声免疫。
| 对比项 | PTQ | QAT |
|---|---|---|
| 是否需要重训 | ❌ 只需校准 | ✅ 微调或重训 |
| 成本 | 几乎为零 | 70B 模型约 $10k–$100k 算力 |
| 低位宽(INT4/INT2)表现 | 明显掉点 | 通常能找回几乎全部精度 |
| 适用场景 | 快速部署、INT8 | 边缘设备、严格时延预算、大规模复用 |
一句话:PTQ 是"先住进来再装修",QAT 是"装修时就按低精度设计图纸"。
📐 四、GPTQ:逐列量化,误差当场补偿
GPTQ(Frantar et al., 2022)回答了一个关键问题:压到 INT4 时,怎么让整层输出几乎不变,而不仅仅是权重本身变准?
思路是"最优大脑量化"(OBQ)的 Transformer 版本:
- 用校准集算出该层的Hessian 矩阵(二阶信息,告诉它哪些权重对输出影响大);
- 一列一列地量化权重;
- 每量化完一列,产生的误差立刻按 Hessian 权重分摊补偿给后面的列,使整个 $XW$ 乘积的输出变化最小。
效果:4-bit 分组量化(group size 128)在多数 LLM 上困惑度损失 <1%,单个 70B 模型量化约 1 小时(单 GPU)。代价是需要 Hessian,流程偏重。
🛡️ 五、AWQ:保护那 1–3% 的"关键通道"
AWQ(Activation-Aware Weight Quantisation,Lin et al., 2023)的发现更直观:权重里有1–3% 的通道对应的激活值幅值特别大,它们对输出质量贡献远超其余部分。量化时"一视同仁"就会在这些关键通道上损失最狠。
AWQ 的对策:
- 量化前把关键通道乘以一个放大系数 $s$(值变大了,舍入误差的相对影响就小了);
- 对应激活除以 $1/s$,保证输出完全不变;
- $s$ 按组优化,使总量化误差最小。
AWQ不需要 Hessian、量化更快,质量与 GPTQ 相当,因此成了很多开源 LLM 量化流水线的默认选择。
| 对比 | GPTQ | AWQ |
|---|---|---|
| 核心机制 | 逐列误差补偿(Hessian 引导) | 通道缩放,保护重要权重 |
| 是否需要二阶信息 | ✅ | ❌ |
| 量化速度 | 较慢 | 更快 |
| 4-bit 质量 | <1% 困惑度损失 | 相当 |
| 额外开销 | 无需推理期特殊处理 | 推理期需在线反量化 |
🚀 六、从 INT4 到 1-bit:进阶量化方法一览
教材里还梳理了一条"极限压缩"技术路线,按需了解即可:
- GGUF / llama.cpp:CPU 推理事实标准,Q4_K_M 等 k-quants 格式给重要权重块分配更多比特,4-bit 平均精度下质量损失极小,消费级硬件首选。
- QuIP / QuIP#:量化前先用随机正交矩阵"旋转"权重,把离群值摊平;再用 E8 晶格码本,做到2-bit 可用。
- SpQR:找出 0.1–1% 的离群权重保留 FP16 全精度,其余压到 INT3/INT4。
- HQQ:零校准数据,直接优化出量化权重,适合拿不到代表性数据、或数据敏感的场景。
- AQLM:用多码本向量量化,2-bit 下质量超越 GPTQ/AWQ。
- BitNet b1.58:权重全部变成 {-1, 0, +1},矩阵乘法退化为纯加减法,70B 模型约 15 GB 即可运行,无需浮点乘法器。
🗄️ 七、别忽略 KV-Cache:另一半显存巨兽
权重压完,长上下文场景下显存大头其实是KV-Cache(注意力缓存)。它的体积随序列长度线性增长:
KV-Cache = 2 × 层数 × 头数 × 头维度 × 序列长度 × 每元素字节数
一个 70B 模型跑 128K 上下文,FP16 的 KV-Cache 高达330 GB,远超显存。解法是把缓存的 K/V 压到 INT8/INT4(按通道/按头量化),配合 PagedAttention 和 GQA/MLA 这类架构级优化,能同时换来更长上下文 + 更大 batch + 更快推理——对 LLM 服务来说这是杠杆最高的优化之一。
📖 延伸阅读:02. efficient architectures.md(GQA、稀疏注意力、蒸馏与剪枝)
✅ 八、量化选型速查表
| 你的场景 | 推荐方案 |
|---|---|
| 想快速验证、部署 INT8 | PTQ + Percentile/MSE 校准 |
| 单卡 GPU 跑 7B–70B 模型 | GPTQ 或 AWQ 的 4-bit 权重量化 |
| 消费级硬件 / CPU 推理 | llama.cpp + GGUF Q4_K_M |
| PTQ 掉点明显、可接受微调成本 | QAT |
| 极致压缩(2-bit 及以下) | QuIP#、AQLM、BitNet |
| 长上下文服务 | 权重 INT4 + KV-Cache INT8/INT4 |
| 拿不到校准数据 | HQQ(零样本) |
📚 九、深入学习的资料入口
- 量化完整章节(含 FP8 训练、混合精度、SmoothQuant 激活量化):01. quantisation.md
- 推理服务与批处理(PagedAttention、连续批处理):03. serving and batching.md
- 推理部署与成本优化(投机解码、前缀缓存、成本基准):05. scaling and deployment.md
- 为什么低精度能提速:硬件与 Roofline 模型背景见 04. GPU architecture and CUDA.md
- 全书章节总览与导读:README.md、llms.txt
💡最后一句话总结:量化 = 用"缩放因子 + 低位整数"表示权重,把显存和带宽需求压到 1/2–1/16;PTQ 免费但上限低,GPTQ/AWQ 是 4-bit 推理的两大主力,QAT 花训练成本换极限精度,KV-Cache 量化则是长上下文的最后一块拼图。
【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考