← 返回题目列表

GPTQ 的原理是什么?为什么能做低比特权重量化?

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

简化版

GPTQ 是一种训练后权重量化方法,它利用少量校准数据估计每层输入分布,并用近似二阶信息逐列量化权重、补偿误差。它常用于把 LLM 权重压到 4bit,同时尽量保持生成质量。

详细版

  • GPTQ 属于 PTQ,不需要完整重新训练。
  • 它关注量化误差对层输出的影响,而不是单纯最小化权重误差。
  • 校准数据用于估计 Hessian 或输入相关矩阵。
  • 逐列量化后会把误差传播补偿到剩余列。
  • 工程上常与 group size、act-order、per-channel scale 等配置一起调优。

完整版教学

记忆钩子:RTN 只看当前权重怎样舍入;GPTQ 还要问“这个误差经校准输入放大后有多痛”,并把误差补到尚未量化的列。

一、为什么逐元素四舍五入不够

在线性层 Y=XW 中,权重误差是否伤害输出取决于校准输入 X。两个数值相同的舍入误差落在不同输入方向上,产生的层输出误差可以完全不同。GPTQ 因而最小化校准样本上的层输出重构误差,而不是只追求 W_q 与 W 的逐元素距离最小。

二、核心机制怎么工作

普通 round-to-nearest 量化只关心每个权重离散化后的差距。GPTQ 更进一步:它估计输入协方差信息,判断某个权重量化误差会如何影响输出,再把已量化列产生的误差补偿到未量化列,从而在 4bit 等低位宽下保留更多层输出行为。

在线性层 Y=XW 中,GPTQ 近似最小化校准样本上的 ||XW-XW_q||²。近似 Hessian 来自 XᵀX;按列量化并更新剩余列,使早期舍入误差不会无条件累积。damp 参数用于缓解 Hessian 病态,act-order 会优先处理更敏感的列。

三、带数字的拆解

如果一个 7B 模型全部权重按 FP16 存储,裸权重约 7×10^9×2=14 GB;理想 4 bit 裸权重约 3.5 GB。实际文件还包含 scale、zero point、分组元数据和高精度保留张量,具体大小由格式决定,不能承诺固定落在某一区间。GPTQ 的价值是约束这种大幅压缩造成的层输出偏移。

目标:min ||XW - XQ(W)||^2
X 表示校准输入激活,W 表示原始权重,Q(W) 表示量化权重
误差补偿会根据近似 Hessian 逆矩阵更新剩余未量化权重

四、逐层求解怎样发生

实现通常一次处理一层:先缓存该层输入,构造带 damping 的输入 Gram 矩阵并获得可用的逆或分解;然后按块处理权重列,量化当前列后,依据二阶信息更新仍未量化的列。完成本层后可用量化输出继续校准下一层,避免一次保存整网激活。

准备校准样本
   |
收集层输入激活 X
   |
估计二阶信息
   |
按列量化权重
   |
传播并补偿误差
   |
导出低比特权重

五、和相近方案怎么区分

方法是否训练特点
RTN否最快但质量波动大
GPTQ否二阶误差补偿,4bit 常用
AWQ否保护重要通道,部署友好
QLoRA是量化基座上训练 LoRA

六、校准、数值稳定与运行时约束

校准样本过短或领域单一会让 XᵀX 只描述局部输入,转换后可能在长文本、代码或其他语言上掉点。Gram 矩阵病态时求逆不稳定,需要 damping 等数值处理;但 damping 也不是越大越好,它会改变敏感度近似。group size 变小通常让 scale 更贴合局部权重,却增加元数据和反量化负担;最终还要确认目标运行时支持对应列顺序、位宽、零点和打包布局。

七、常见误区与追问

  • 误区:GPTQ 会重新训练整个模型。 它通常冻结模型并逐层求解量化与误差补偿,不进行常规多轮反向传播,因此属于 PTQ。
  • 误区:4bit 模型显存一定只有 FP16 的四分之一。 Scale、zero point、打包对齐、未量化层、KV Cache 和运行时工作区都会让总显存高于纯权重理论值。
  • 误区:量化误差只需要看权重差值。 相同权重误差乘上不同激活会产生不同输出误差,GPTQ 使用校准激活正是为了估计这一影响。
  • 追问:GPTQ 为什么需要校准数据? 校准输入用于构造层输入统计和近似 Hessian,决定哪些方向的舍入误差更伤输出。
  • 追问:group size 对精度和速度有什么影响? 小 group 的缩放更贴合局部分布,通常质量更好,但元数据、反量化和 kernel 开销更高。
  • 追问:GPTQ 和 AWQ 如何选择? 比较目标框架支持、目标任务质量和真实吞吐;GPTQ偏二阶误差补偿,AWQ偏激活显著通道保护,没有脱离实现环境的固定赢家。

八、加强记忆

把 GPTQ 串成“缓存校准输入 → 构造二阶近似 → 按块逐列舍入 → 补偿剩余权重 → 用目标 kernel 回归”。它优化的是层输出重构,不是逐元素权重距离;damping、group size 与列顺序影响求解,格式和 kernel 决定真实部署收益。与 AWQ 比较时,抓住 GPTQ 的二阶补偿,而不是笼统地说二者都是 4 bit。