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 版本的模型:
- 极度追求显存节省: GPTQ 在 3-bit 甚至 2-bit 下的表现通常比简单的量化方法更稳健。
- 使用特定的推理框架: 比如
AutoGPTQ、ExLlamaV2(针对 GPTQ 深度优化的框架,推理速度极快)。 - 静态部署: 在不需要频繁更改模型权重的情况下,GPTQ 提供了一个非常高效的静态压缩方案。
总结
GPTQ 是通过数学上的“拆东墙补西墙”实现的。 它利用二阶导数信息,在量化过程中不断修正误差,使得大模型在被阉割掉 75% 的体积后,依然能保持敏捷的思维能力。
比喻一下
GPTQ做了一件更“理性”的事:
算一套最优方案,让公司整体产出下降最少
可能结果是:
- 有的人降很多
- 有的人降一点
- 甚至有人略涨(误差补偿)
但目标只有一个:
整体业务能力损失最小(全局最优)