跳转至

GPTQ

GPTQ(Post-Training Quantization for GPT)是一种针对大语言模型(LLM)的训练后量化技术。它的目标是在减少模型显存占用的同时,尽可能保持模型的逻辑推理能力。

如果说 AWQ 是通过“寻找重要权重”来保精度,那么 GPTQ 的逻辑更像是“通过数学补偿来消除误差”


1. 核心原理:误差补偿

量化本质上是将精确的数字(FP16)强行舍入成模糊的数字(INT4),这必然会产生误差。GPTQ 的核心思想是:量化某一个权重产生的误差,可以通过调整该层中尚未量化的其他权重来“抵消”掉。

2. 技术关键:二阶信息 (Hessian Matrix)

GPTQ 基于一种名为 OBC (Optimal Brain Compressor) 的算法。它在处理每一层权重时,会参考一个复杂的数学工具——海森矩阵 (Hessian Matrix)

  • 捕捉关联性: 海森矩阵记录了模型权重之间的相互影响。
  • 按需调整: 算法会逐个量化权重。每量化一个数字,它就会根据海森矩阵的信息,微调剩下的权重。
  • 结果: 当整层量化结束时,这一层总体的输出结果与量化前非常接近。

3. GPTQ 的主要特点

特性 GPTQ 量化
压缩率 极高(通常将 16-bit 压至 4-bit 或 3-bit)
精度保持 非常出色,尤其在 4-bit 级别,困惑度(Perplexity)增加极小
处理速度 量化过程比 AWQ 稍慢(因为涉及矩阵逆运算),但依然属于单卡几小时内完成
硬件优化 拥有成熟的 GPU 核函数(Kernel)支持,推理速度极快

4. GPTQ 与 AWQ 的区别

虽然两者都能把模型压到 4-bit,但思路完全不同:

  • AWQ (自适应缩放): 像是一个“保护主义者”。它发现重要权重后,把它们放大,让量化损失变小。
  • GPTQ (数学补偿): 像是一个“平衡大师”。它承认量化会有错,但它通过精密的计算,让剩下的权重把这个错给“补”回来。

5. 实际应用场景

如果你遇到以下情况,通常会选择 GPTQ 版本的模型:

  1. 极度追求显存节省: GPTQ 在 3-bit 甚至 2-bit 下的表现通常比简单的量化方法更稳健。
  2. 使用特定的推理框架: 比如 AutoGPTQExLlamaV2(针对 GPTQ 深度优化的框架,推理速度极快)。
  3. 静态部署: 在不需要频繁更改模型权重的情况下,GPTQ 提供了一个非常高效的静态压缩方案。

总结

GPTQ 是通过数学上的“拆东墙补西墙”实现的。 它利用二阶导数信息,在量化过程中不断修正误差,使得大模型在被阉割掉 75% 的体积后,依然能保持敏捷的思维能力。

比喻一下

GPTQ做了一件更“理性”的事:

算一套最优方案,让公司整体产出下降最少

可能结果是:

  • 有的人降很多
  • 有的人降一点
  • 甚至有人略涨(误差补偿)

但目标只有一个:

整体业务能力损失最小(全局最优)