GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers - 中文验证版
英文原始依据卡片:gptq_2022.md
状态:已翻译。
元数据
- Slug:
gptq_2022 - 年份: 2022
- 会议: ICLR
- 作者: Elias Frantar、Saleh Ashkboos、Torsten Hoefler、Dan Alistarh
- 阅读状态: read complete
- 计算范式: 高效和边缘推理 (
efficient_edge_inference) - 主要来源: PDF、抽取文本
- 阅读卡创建日期: 2026-06-15
计算设置
论文明确列出了校准和推理硬件。包括 OPT-175B 和 BLOOM-176B 在内的所有模型在单块 NVIDIA A100 80GB 上量化。推理延迟在 NVIDIA A100 80GB 和 NVIDIA A6000 48GB GPU 上报告。基线内存问题是鲜明的:175B 的 FP16 模型占用约 326GB,超过最大的单块 GPU,未压缩时需要多 GPU 推理。
校准数据集相对预训练来说很小:128 个随机的 2048 token C4 片段。为了将内存保持在低于全精度推理的水平,实现一次加载一个 6 层 Transformer 块,累积层 Hessians,量化该块,然后运行量化块以为下一块产生输入。关键的规模结果是,175B 模型在一块 A100 上约四 GPU 小时内完成量化。
瓶颈
GPTQ 的瓶颈是大 LM 的推理内存,特别是低 batch 的自回归生成。FP16 OPT-175B 在 KV 缓存前需要约 326GB 的权重,因此 serving 纯粹出于容量需要数块 GPU。一旦模型分布到多个 GPU,batch size 1 下的单 token 生成由矩阵向量乘积主导,而非大型矩阵矩阵乘积。论文说这些操作主要受内存带宽限制。
低位存储仅在核函数在矩阵向量乘积期间实际移动更少字节时才成为延迟收益。一个存储 8 位权重但将其扩展为带宽密集表示的方法可以减少 GPU 数量而不降低 token 延迟。因此 GPTQ 将量化质量和核函数布局视为一个系统问题:在 3-4 位保持困惑度,并使生成在压缩权重上而非 FP16 权重上带宽受限。
方法适配
算法上,GPTQ 是一种使用近似二阶信息的一次性训练后权重量化器。它将 Optimal Brain Quantization 的思想扩展到 Transformer 矩阵,通过以任意顺序量化列并更新剩余权重以补偿量化误差。
计算适配是重要的部分。首先,任意顺序使所有行可以按相同顺序量化,因此相同的逆 Hessian 信息可以在行间复用而非每行重新计算。其次,惰性 batch 更新解决了直接 OBQ 风格更新中低计算/内存访问比率的问题。论文每次量化 B=128 列的块,并将全局矩阵更新推迟到块完成。这不减少理论计算量,但通过避免内存吞吐量停滞,在非常大的模型上提供了数量级的加速。
第三,Cholesky 重新公式化在十亿参数规模下稳定了逆 Hessian 更新。论文报告在直接更新路径下,对于超过几十亿参数的模型,数值不定性几乎肯定发生在某些层中。通过 Cholesky 核函数预计算所需行,配合轻微阻尼,对于巨型模型足够鲁棒且更快。
最后,推理适配是一个定制的量化矩阵/全精度向量 GPU 核函数。激活值保持全精度。核函数根据需要动态反量化权重,但从内存中读取的字节数少得多,这正是 batch-1 生成推理的正确权衡。
证据
校准证据是直接的:OPT-175B 和 BLOOM-176B 可以在单块 A100 80GB 上使用仅 128 个随机的 2048 token C4 样本在约四 GPU 小时内完成量化。运行时间表报告 1-3B 模型在数分钟内完成,175B 模型在几小时内完成。论文将其与 ZeroQuant-LKD 在相同硬件上对 1.3B 模型花费约 3 小时进行对比。
内存证据是最清晰的实践结果。一个 3 位 OPT-175B 模型需要约 63GB,包括以 FP16 保留的嵌入和输出层。最大 2048 token 历史的 KV 缓存增加约 9GB。这可以放入单块 80GB A100,而 FP16 执行需要 5 块 A100 80GB GPU,LLM.int8() 需要 3 块。论文指出 4 位模型无法完全放入一块 A100,这就是 3 位结果作为容量突破的原因。
延迟证据来自表 6,batch size 1 和生成序列长度 128。在 A100 80GB 上,FP16 OPT-175B 在 5 块 GPU 上每 token 花费 230 ms,而 3 位 GPTQ 核函数在 1 块 GPU 上花费 71 ms,3.24x 加速且从 5 块减至 1 块 GPU。在 A6000 48GB 上,FP16 在 8 块 GPU 上花费 589 ms,而 3 位核函数在 2 块 GPU 上花费 130 ms,4.53x 加速且从 8 块减至 2 块 GPU。论文强调在这一类 HuggingFace-accelerate 设置中通信成本可忽略不计,几乎所有加速来自压缩的矩阵向量核函数。
准确率证据支持低位权重仍然有用的说法。在 OPT-175B WikiText2 上,4 位 GPTQ 相对于 FP16 仅损失 0.03 困惑度,而 round-to-nearest 损失 2.2 分。在 3 位,round-to-nearest 在 OPT-175B 上崩溃,而 GPTQ 保持可用的困惑度,特别是在组大小 128 时。
历史影响
GPTQ 使训练后低位量化成为非常大型开放语言模型的可信 serving 工具。其历史影响与其说是"量化存在",不如说是"3 位权重可以将一个 175B 密集模型从多 GPU 容量问题转变为单 A100 或双 A6000 推理问题"。内存带宽和核函数设计成为一等 serving 关注点。
它也澄清了目标工作负载的重要性。GPTQ 的定制核函数是为低 batch 自回归生成设计的,其中权重读取主导。论文明确警告,大 batch 或非生成式工作负载可能改为计算受限,在此情况下正确的部署策略可能不同。
局限
- 加速主要来自减少的内存移动,而非更快的算术。
- 激活值未被量化。
- 定制核函数结果针对 batch-size-1 生成;大 batch 工作负载可能计算受限且直接帮助较少。
- 最大的单 A100 适配是 3 位,而非 4 位,因为 4 位 OPT-175B 无法与缓存一起完全放入。
- 质量因模型和位宽而异;RTN 失败表明量化方法重要,而不仅仅是位数。
链接
- 计算范式:efficient and edge inference
- 方法索引:quantization
- 对照更新:compute bottlenecks