← 返回题目列表

AWQ 的原理是什么?它和 GPTQ 有什么区别?

高频 困难 第 12 / 25 题 更新于 2026/09/25
模型压缩AWQ权重量化PTQ推理部署
学习 AI 实战项目

简化版

AWQ 是一种训练后、仅权重量化方法:它用校准激活识别对输出更敏感的权重通道,再搜索逐通道缩放,使这些权重落到更合适的低比特量化网格上。GPTQ 则利用近似二阶信息逐块量化并补偿已产生的误差;二者都要校准,但重要性依据和求解过程不同。

详细版

  • AWQ 的出发点是权重误差对输出的影响还取决于输入激活;只按权重绝对值判断敏感性不够。
  • 它从少量代表性校准样本收集激活统计,并搜索逐输入通道 scale。缩放在浮点域保持线性层等价,却改变随后舍入时各通道承担的误差。
  • GPTQ 常以层输出重构误差为目标,利用输入近似 Hessian 的逆逐列或逐块更新未量化权重;AWQ 不做这种逐列二阶补偿。
  • 两者常用于 4 bit weight-only 部署,真实速度由 group size、零点、打包格式和目标运行时 kernel 决定,不能只比较算法名称。

完整版教学

记忆钩子:AWQ 是“用激活找敏感通道,再搜索缩放”;GPTQ 是“用二阶重构误差决定如何逐块舍入并补偿”。

一、为什么仅看权重大小不够

线性层输出是 Y=XW,某个权重的舍入误差最终要与对应输入激活相乘。一个绝对值不大的权重若经常乘上幅值很大的激活,仍可能显著扰动输出;反过来,大权重所在通道若很少被激活,影响未必最大。因此 AWQ 用校准激活辅助判断敏感性,而不是把每个权重一视同仁。

二、核心机制怎么工作

AWQ 的经验观察是:每层通常只有一小部分权重通道尤其敏感,优先保护它们往往比统一提高所有权重精度更划算。这里的“小部分”是模型和校准分布相关的经验现象,并不是固定的 1%。实现会根据激活统计和权重分布搜索缩放指数或缩放因子,使量化后的层输出误差更小。

缩放并没有改变浮点线性层的函数,因为 Y=XW=(XS)(S^-1W);变化发生在随后对 S^-1W 舍入到低比特网格时。合适的 S 能让高激活通道对应的关键权重少受舍入影响,但过强缩放会把动态范围压力转移到其他通道。

三、一个缩放为何能改变量化误差

设两条输入通道的激活峰值分别为 8 和 0.5,量化前某列权重为 [0.20, 0.80]。若量化后误差分别是 0.02 和 0.04,它们对输出误差的量级约为 8×0.02=0.16 与 0.5×0.04=0.02;第一通道虽然权重更小,却敏感得多。选择对角缩放矩阵后,可把第一通道对应权重放大后再量化,从而相对减小它的舍入误差。

Y = XW = (X S^-1)(S W)       # S 为正的逐输入通道对角矩阵
Y_hat = (X S^-1) Q(S W)      # 量化后不再严格等价
目标:搜索 S,使 ||XW - (X S^-1)Q(SW)|| 尽可能小

缩放不能凭空消除误差:权重侧更容易量化时,激活幅值和其他通道的权重动态范围会变化。AWQ 的关键正是搜索这个折中,而不是简单地把“重要权重”永久保留为浮点数。

四、从校准到部署的完整流程

先取能代表线上语言、长度和任务类型的校准样本,对目标线性层收集输入激活统计。随后在候选缩放参数中评估量化层输出或模型质量,选出 scale,再按 group size、对称/非对称策略执行低比特打包。最后必须用目标运行时加载,因为转换器与 kernel 对 scale、zero point 和张量布局的约定必须一致。

校准样本前向
   |
统计激活通道重要性
   |
搜索缩放因子
   |
保护关键权重通道
   |
执行低比特量化
   |
使用匹配 kernel 推理

五、AWQ 与 GPTQ 到底差在哪里

维度AWQGPTQ
核心思想保护激活重要通道二阶误差补偿
误差处理先搜索通道缩放,再统一量化量化一部分后更新剩余权重以补偿误差
二阶信息不依赖 GPTQ 式 Hessian 逆更新用输入统计近似 Hessian,并做逐块求解
校准数据用于激活统计与 scale 搜索用于估计层输入协方差/重构误差
常见旋钮缩放搜索、group size、zero pointgroup size、列顺序、damping
部署前提量化布局必须有匹配 kernel同样依赖格式和 kernel 支持

六、校准集怎样影响结果

AWQ 学到的是校准分布下的激活敏感性。如果校准集只有短英文对话,线上却主要是中文代码和长上下文,通道排序与缩放可能失配。校准不只看样本条数,还要覆盖实际 Prompt 模板、主要语言、长度区间和高风险任务;选择 scale 的数据与最终回归集也应分开,避免把校准误差当成泛化质量。

七、性能收益为何不能由“4 bit”直接推出

4 bit 通常能明显减少权重字节,但推理时仍可能把权重解包或反量化到更高精度参与矩阵乘。若目标 GPU/CPU 没有匹配的 fused kernel,转换开销、内核启动和不合适的 batch 可能抵消带宽收益。验收要同时测文件大小、峰值显存、Prefill 吞吐、TPOT 和业务正确率,并与同运行时的 FP16/BF16 基线比较。

八、常见误区与追问

  • 误区:AWQ 和 GPTQ 只是文件格式不同。 AWQ 依据激活幅值保护显著通道;GPTQ 用二阶近似逐块补偿量化误差,优化依据和转换过程都不同。
  • 误区:保护少数通道会让其他通道完全不重要。 AWQ 仍会量化全部目标权重,只是通过缩放降低敏感通道的误差;普通通道的累计误差仍需评测。
  • 误区:AWQ 不需要校准数据。 它必须用代表性输入统计激活,校准分布偏离线上请求时,所谓“重要通道”也会选偏。
  • 追问:AWQ 为什么叫 activation-aware? 权重重要性不是只看权重绝对值,而是结合输入激活估计该权重误差会怎样传到层输出。
  • 追问:AWQ 适合和 LoRA 合并后的模型一起用吗? 可以先把 LoRA 合并到浮点基座再重新校准和量化;若运行时动态切换 Adapter,则需确认量化基座与 Adapter kernel 的兼容性。
  • 追问:如何在 AWQ 和 FP16 之间做质量验收? 除困惑度外,要对代码、长上下文、结构化输出和业务集做逐项回归,并在目标卡型测真实吞吐、显存和尾延迟。

九、加强记忆

把 AWQ 串成“激活统计 → 敏感通道 → 等价缩放 → 低比特打包 → 目标 kernel 验收”。它不是把少数权重永远留在高精度,也不是 GPTQ 的另一种文件后缀;二者的共同点是 PTQ,分界线是 AWQ 搜索激活感知的 scale,GPTQ 做二阶重构误差补偿。最后牢记:算法决定误差怎么分配,校准集决定它看见什么,kernel 才决定压缩能否变成真实加速。