GPTQ 算法
一句话定位:无需训练的 INT4 量化方案——逐层逐列量化,并用二阶信息把”已产生的量化误差”补偿到还没量化的权重上,使 4bit 也能保持较好精度。
1. 核心思想:误差补偿
朴素的逐权重取整(round-to-nearest)会让每个权重的误差独立累积,INT4 下整层输出严重偏移。
GPTQ 的关键洞察:量化的目标不是让权重接近原值,而是让该层的输出接近原输出。因此:
- 当某一列权重被量化产生误差后,立刻调整尚未量化的其余列,用它们来”抵消”这个误差对层输出的影响;
- 这样误差不再单调累积,而是被后续权重不断吸收补偿。
2. 实现要点
- 逐层进行(layer-wise):一层层独立求解,把全局问题拆成若干可解的小问题;
- 逐列(按输入维度)顺序量化:每量化一列,就把残余误差按最优方向分摊到剩余未量化列;
- 用二阶信息(Hessian 近似):以该层的重构误差为目标,其最优补偿方向由 Hessian
H ≈ 2XXᵀ(X 为该层输入激活)决定——即用校准数据的激活二阶统计量衡量”哪些权重更重要、误差该怎么分摊”。实现上借助 Cholesky 分解等手段保证数值稳定与效率。
3. 优势
- 一次校准即可,无需训练:只需少量校准数据跑前向、收集激活统计,属于 PTQ 家族(4.2)的高级方法,成本远低于 QAT(4.3);
- INT4 精度可用:这是它的最大价值——把 4bit 从”不可用”推到”可生产”,显存直降约 75%,使大模型能在单卡部署;
- 生态成熟(AutoGPTQ 等),与主流推理引擎(vLLM、TensorRT-LLM)集成良好。
局限:量化耗时随模型规模上升(需逐层做矩阵分解);对校准集分布仍有依赖;主要量化权重(weight-only),激活仍为高精度,因此收益主要来自访存与显存而非整数算力。
参考:论文《GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers》(Frantar et al., 2022)