AWQ 的原理是什么?它和 GPTQ 有什么区别?
简化版
AWQ 是 Activation-aware Weight Quantization,它发现少量对激活特别重要的权重通道对模型质量影响很大,于是通过缩放保护这些通道,再做低比特权重量化。相比 GPTQ 的二阶误差补偿,AWQ 更强调激活感知和部署效率。
详细版
- AWQ 认为不是所有权重同等重要,关键通道需要被保护。
- 它用校准激活寻找对输出敏感的权重通道。
- 通过 scale 调整权重和激活分布,让重要权重量化误差更小。
- AWQ 通常适合 4bit 权重量化和高效推理 kernel。
- 和 GPTQ 一样属于训练后量化,但优化目标和实现路径不同。
完整版教学
这道题考察候选人是否能比较主流 LLM 低比特量化方案,而不是只背名词。
一、这题真正考什么
这道题考察候选人是否能比较主流 LLM 低比特量化方案,而不是只背名词。
比较 AWQ 与 GPTQ 时要先区分“重要性来自哪里”:AWQ 用校准激活近似通道对输出的敏感度,GPTQ 则利用近似 Hessian 在逐列量化时补偿重构误差。二者都属于 PTQ,却不是同一个目标函数换了文件后缀。
二、核心机制怎么工作
AWQ 的核心观察是:保护少数显著通道,往往比平均照顾所有权重更有效。它基于校准数据统计激活大小,找到更影响输出的通道,然后用缩放因子把权重量化误差转移到模型更能承受的位置。
缩放并没有改变浮点线性层的函数,因为 Y=XW=(XS)(S^-1W);变化发生在随后对 S^-1W 舍入到低比特网格时。合适的 S 能让高激活通道对应的关键权重少受舍入影响,但过强缩放会把动态范围压力转移到其他通道。
三、带数字的拆解
在一个线性层中,若 1% 的通道承担了主要激活贡献,把这些通道直接粗暴量化可能造成输出明显偏移。AWQ 会先调整 scale,使这些通道在 4bit 网格中保留更多有效信息。
线性层输出:Y = XW
缩放后等价形式:Y = (XS) (S^-1 W)
选择 S 的目标是在保持输出近似的同时降低重要权重量化误差
四、流程图和工程落点
可以把它拆成下面这条链路来讲:
校准样本前向
|
统计激活通道重要性
|
搜索缩放因子
|
保护关键权重通道
|
执行低比特量化
|
使用匹配 kernel 推理
五、和相近方案怎么区分
| 维度 | AWQ | GPTQ |
|---|---|---|
| 核心思想 | 保护激活重要通道 | 二阶误差补偿 |
| 校准数据 | 需要 | 需要 |
| 部署侧 | 常强调高效 kernel | 格式生态较多 |
| 调参重点 | scale 搜索和 group | group、act-order、damp |
六、上线或训练时最容易踩的坑
-
AWQ 的质量优势依赖校准样本能代表真实激活分布。
-
只下载 AWQ 权重不代表一定快,推理框架和 kernel 支持同样关键。
-
校准集中缺少代码、长文本或目标语言时,激活重要性排序会偏向错误的通道。
-
必须在目标推理框架上确认 group size、zero point 与 kernel 匹配,否则权重虽小却发生反量化回退。
七、常见误区与追问
- 误区:AWQ 和 GPTQ 只是文件格式不同。 AWQ 依据激活幅值保护显著通道;GPTQ 用二阶近似逐块补偿量化误差,优化依据和转换过程都不同。
- 误区:保护少数通道会让其他通道完全不重要。 AWQ 仍会量化全部目标权重,只是通过缩放降低敏感通道的误差;普通通道的累计误差仍需评测。
- 误区:AWQ 不需要校准数据。 它必须用代表性输入统计激活,校准分布偏离线上请求时,所谓“重要通道”也会选偏。
- 追问:AWQ 为什么叫 activation-aware? 权重重要性不是只看权重绝对值,而是结合输入激活估计该权重误差会怎样传到层输出。
- 追问:AWQ 适合和 LoRA 合并后的模型一起用吗? 可以先把 LoRA 合并到浮点基座再重新校准和量化;若运行时动态切换 Adapter,则需确认量化基座与 Adapter kernel 的兼容性。
- 追问:如何在 AWQ 和 FP16 之间做质量验收? 除困惑度外,要对代码、长上下文、结构化输出和业务集做逐项回归,并在目标卡型测真实吞吐、显存和尾延迟。
八、加强记忆
记住“AWQ 先找关键通道,再保护它们量化”。GPTQ 像算误差账,AWQ 像给重要通道加保护垫。
记忆时抓住“激活找重要性、等价缩放改量化难度、kernel 决定真实收益”三点。AWQ 的价值不是把所有误差平均压小,而是优先保护最影响输出的少数通道。