在 LLM 量化领域,W4A16(权重 4-bit,激活 FP16)是当前显存受限场景下的最优解。但在 AWQ 出现之前,W4 量化面临一个根本矛盾:
GPTQ 等二阶方法虽然精度高,但校准极慢;简单 Round-to-Nearest 快,但 W4 下精度崩塌。
AWQ (Activation-aware Weight Quantization) 打破了这一僵局。它发现了一个被忽视的事实:LLM 中仅 0.1%~1% 的权重是"显著权重",而它们的位置恰好由激活值决定。 通过激活感知的逐通道缩放,AWQ 在 W4 下实现了优于 GPTQ 的精度,同时校准速度快一个数量级。
本文将从数学本质出发,完整推导 AWQ 的核心公式,并与 SmoothQuant 进行深度对比。
一、 核心洞察:权重不是生而平等的
传统量化将所有权重视为同等重要,均匀分配量化精度。但 AWQ 的作者通过实验发现:
- 激活值 ∥X:,j∥\|X_{:,j}\|∥X:,j∥ 大的输入通道 → 对应权重 Wj,:W_{j,:}Wj,: 对输出贡献大 → 显著权重
- 激活值小的通道 → 权重即使量化误差大,对最终输出影响也微乎其微
关键推论:激活值的分布是权重重要性的天然探针。我们不需要昂贵的 Hessian 矩阵来评估重要性,只需统计激活值的幅度即可。
二、 数学推导:从误差模型到最优缩放
2.1 等价变换框架
与 SmoothQuant 相同,AWQ 也使用逐通道对角缩放:
Y=XW=(X⋅diag(s)−1)⋅(diag(s)⋅W)=X^⋅W^ Y = XW = (X \cdot \text{diag}(s)^{-1}) \cdot (\text{diag}(s) \cdot W) = \hat{X} \cdot \hat{W} Y=XW=(X⋅diag(s)−1)⋅(diag(s)⋅W)=X^⋅W^
- W^j,:=sj⋅Wj,:\hat{W}{j,:} = s_j \cdot W{j,:}W^j,:=sj⋅Wj,::显著权重被放大,量化时有效位数更多
- X^:,j=X:,j/sj\hat{X}{:,j} = X{:,j} / s_jX^:,j=X:,j/sj:激活值被缩小,但保持 FP16 不量化,无精度损失
2.2 输出量化误差建模
设 W^\hat{W}W^ 的 INT4 量化误差为 ΔW=Q(W^)−W^\Delta W = Q(\hat{W}) - \hat{W}ΔW=Q(W^)−W^,输出误差为:
ΔY=X^⋅ΔW=X⋅diag(s)−1⋅ΔW \Delta Y = \hat{X} \cdot \Delta W = X \cdot \text{diag}(s)^{-1} \cdot \Delta W ΔY=X^⋅ΔW=X⋅diag(s)−1⋅ΔW
目标是最小化输出误差期望:
mins E∥X⋅diag(s)−1⋅ΔW∥F2 \min_s \; \mathbb{E}\left \\\| X \\cdot \\text{diag}(s)\^{-1} \\cdot \\Delta W \\\|_F\^2 \\right sminE∥X⋅diag(s)−1⋅ΔW∥F2
展开 Frobenius 范数,并利用量化误差独立性假设:
E∥ΔY∥F2=∑j=1K∥X:,j∥2sj2⋅E∥ΔWj,:∥2 \mathbb{E}\\\|\\Delta Y\\\|_F\^2 = \sum_{j=1}^{K} \frac{\|X_{:,j}\|^2}{s_j^2} \cdot \mathbb{E}\\\|\\Delta W_{j,:}\\\|\^2 E∥ΔY∥F2=j=1∑Ksj2∥X:,j∥2⋅E∥ΔWj,:∥2
2.3 量化误差与 sjs_jsj 的关系
INT4 均匀量化的误差方差满足:
E∥ΔWj,:∥2∝δj2∝(sj⋅Rj)2 \mathbb{E}\\\|\\Delta W_{j,:}\\\|\^2 \propto \delta_j^2 \propto (s_j \cdot R_j)^2 E∥ΔWj,:∥2∝δj2∝(sj⋅Rj)2
其中 RjR_jRj 是原始权重第 jjj 行的动态范围。代入上式:
E∥ΔY∥F2∝∑j∥X:,j∥2⋅Rj2 \mathbb{E}\\\|\\Delta Y\\\|_F\^2 \propto \sum_{j} \|X_{:,j}\|^2 \cdot R_j^2 E∥ΔY∥F2∝j∑∥X:,j∥2⋅Rj2
sjs_jsj 消掉了! 这说明在理想均匀量化模型下,缩放不影响总误差。这正是传统方法的盲区。
2.4 AWQ 的关键修正:低比特 Clipping 效应
上述模型的失效源于一个假设:量化误差 ∝sj2\propto s_j^2∝sj2。但在 INT4 低比特 regime 下,clipping error 占主导,实际误差增长快于 sj2s_j^2sj2。
AWQ 引入重要性加权修正后,经验最优解为:
sj∗∝(E∥X:,j∥2)β,β≈0.5 \boxed{s_j^* \propto \left( \mathbb{E}\\\|X_{:,j}\\\|\^2 \right)^{\beta}, \quad \beta \approx 0.5} sj∗∝(E∥X:,j∥2)β,β≈0.5
即:缩放因子正比于激活值幅度的平方根。显著权重被放大保护,非显著权重被缩小容忍。
2.5 逐通道网格搜索
理论公式给出方向,但 INT4 的非线性使解析解不够精确。AWQ 对每个通道在 15 个候选值中搜索最优 sjs_jsj:
sj∈{c⋅Ijβ∣c∈{0.8,0.9,1.0,1.1,1.2}, β∈{0.4,0.5,0.6}} s_j \in \{ c \cdot I_j^{\beta} \mid c \in \{0.8, 0.9, 1.0, 1.1, 1.2\}, \; \beta \in \{0.4, 0.5, 0.6\} \} sj∈{c⋅Ijβ∣c∈{0.8,0.9,1.0,1.1,1.2},β∈{0.4,0.5,0.6}}
评估指标为该通道的输出重建误差:
Lj(sj)=∥X:,jWj,:−X:,j⋅Q(sjWj,:)sj∥2 \mathcal{L}j(s_j) = \left\| X{:,j} W_{j,:} - X_{:,j} \cdot \frac{Q(s_j W_{j,:})}{s_j} \right\|^2 Lj(sj)= X:,jWj,:−X:,j⋅sjQ(sjWj,:) 2
由于逐通道量化独立,各通道可并行搜索,无需 Hessian 逆矩阵,校准速度远快于 GPTQ。
三、 推理时的零开销融合
AWQ 的工程优雅之处在于:推理时激活值无需任何操作。
量化存储 (Qj,scalej,zeroj)(Q_j, \text{scale}_j, \text{zero}_j)(Qj,scalej,zeroj),反量化后需还原为原始尺度:
W^j,:sj=scalejsj⏟scalej′⋅Qj+zerojsj⏟zeroj′ \frac{\hat{W}_{j,:}}{s_j} = \underbrace{\frac{\text{scale}j}{s_j}}{\text{scale}'_j} \cdot Q_j + \underbrace{\frac{\text{zero}j}{s_j}}{\text{zero}'_j} sjW^j,:=scalej′ sjscalej⋅Qj+zeroj′ sjzeroj
仅需在模型加载时将 scale 和 zero-point 除以 sjs_jsj,纯标量运算,零运行时开销。激活始终以 FP16 参与 GEMM,无任何额外 Kernel。
四、 AWQ vs SmoothQuant vs GPTQ 全面对比
| 特性 | GPTQ | SmoothQuant | AWQ |
|---|---|---|---|
| 量化位宽 | W4/W8, A16 | W8A8 | W4A16 |
| 核心策略 | 二阶 Hessian 逐列优化 | 激活-权重量化难度平衡 | 激活感知显著权重保护 |
| sss 依赖 | Hessian 逆矩阵 | max∣X∣\max|X|max∣X∣ 和 max∣W∣\max|W|max∣W∣ | 仅 E∣X∣\mathbb{E}|X|E∣X∣ |
| 校准速度 | 🐢 慢 (分钟~小时级) | ⚡ 快 (秒级) | ⚡ 快 (秒~分钟级) |
| W4 精度 | 基准 | N/A | 🏆 优于 GPTQ |
| 显存占用 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ (最小) |
| 推理吞吐 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ (大Batch) | ⭐⭐⭐⭐ (小Batch/长上下文) |
| 硬件友好度 | 自定义 Kernel | 标准 INT8 Tensor Core | 标准 INT4 GEMM + fuse |
| 代表引擎 | AutoGPTQ | TensorRT-LLM | vLLM, SGLang, llama.cpp |
选型决策树
你的部署场景是什么?
├── 高并发服务化 (Batch ≥ 32) → SmoothQuant W8A8
├── 显存极度受限 / 边缘设备 → AWQ W4A16 ✅
├── 小 Batch + 长上下文 → AWQ W4A16 ✅
└── 追求 W4 极致精度 → AWQ W4A16 ✅
五、 与 SmoothQuant 的数学本质区别
两者都使用 Y=(X/s)(sW)Y = (X/s)(sW)Y=(X/s)(sW) 的等价变换,但哲学完全不同:
| SmoothQuant | AWQ | |
|---|---|---|
| sss 公式 | sj=max∣Xj∣αmax∣Wj∣1−αs_j = \frac{\max|X_j|^\alpha}{\max|W_j|^{1-\alpha}}sj=max∣Wj∣1−αmax∣Xj∣α | sj∝E∣Xj∣βs_j \propto \mathbb{E}|X_j|^\betasj∝E∣Xj∣β |
| 依赖统计量 | XXX 和 WWW 的 Max | 仅 XXX 的 Magnitude |
| 优化目标 | Min-Max 均衡(双方都好量化) | 重要性加权误差最小化 |
| sss 的作用 | 磨平离群点 | 放大显著权重 |
| 量化对象 | X^\hat{X}X^ 和 W^\hat{W}W^ 都被量化 | 仅 W^\hat{W}W^ 被量化 |
| 一句话 | "均贫富" | "保重点" |
六、 总结
AWQ 的贡献可以凝练为三点:
- 理论:证明了激活值幅度是权重重要性的充分代理变量,无需二阶信息
- 方法 :通过 s∝Is \propto \sqrt{I}s∝I 的缩放 + 网格搜索,在 W4 下实现 SOTA 精度
- 工程:缩放因子融合进 dequant 参数,推理零开销,兼容所有 INT4 GEMM 引擎
如果你正在部署 LLM 且显存是第一瓶颈,AWQ 应该是你尝试 W4 量化的第一选择。它与 SmoothQuant 并非竞争关系,而是针对不同部署约束的互补最优解。
参考资料:
- Lin et al., "AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration", MLSys 2024
- Xiao et al., "SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models", ICML 2023
- Frantar et al., "GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers", ICLR 2023