【infra之路】AWQ 详解:激活感知权重保护,让 W4A16 量化精度超越 GPTQ

在 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

目标是最小化输出误差期望:

min⁡s  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 的贡献可以凝练为三点:

  1. 理论:证明了激活值幅度是权重重要性的充分代理变量,无需二阶信息
  2. 方法 :通过 s∝Is \propto \sqrt{I}s∝I 的缩放 + 网格搜索,在 W4 下实现 SOTA 精度
  3. 工程:缩放因子融合进 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
相关推荐
亦皓ai2 小时前
AI时代后端工程(二):AI把代码写得越来越快,我却越来越不敢让它直接开工了
人工智能·算法·机器学习·搜索引擎·transformer
咖啡星人k3 小时前
2026 AI Agent 长期记忆:为什么 AI 助手总“聊完就忘“?MonkeyCode 免费上手
人工智能·深度学习·机器学习·语言模型·自然语言处理
玖玥拾3 小时前
LeetCode 392 判断子序列
笔记·算法·leetcode
Rocky Ding*5 小时前
一文读懂Wan 3.0视频创作大模型核心基础知识
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·wan 3.0
重生之后端学习5 小时前
239. 滑动窗口最大值[困难]✅
java·数据结构·算法·leetcode·职场和发展
fpcc5 小时前
算法和数据结构—动态规划法
数据结构·算法·动态规划
我叫孙一鸣-专注电子元器件6 小时前
自动驾驶的眼睛正在换代:激光雷达的“小镜子”正在改变未来
人工智能·机器学习·自动驾驶·卫星通讯·压电驱动器
richard_first6 小时前
Transformer 与大语言模型:第10章 Residual (残差连接)
人工智能·深度学习·机器学习·transformer
星星.7228 小时前
C++算法竞赛|二分查找与二分答案:边界模板、浮点二分、STL
数据结构·c++·算法