AB
AiBoss
Wiki

什么是 ZeroQuant?一种面向大规模 Transformer 的高效训练后量化方法

ZeroQuant 是论文提出的一套端到端量化与推理流水线,用于压缩大规模 Transformer 模型。它包含细粒度且硬件友好的权重量化与激活量化方案、无需原始训练数据的逐层知识蒸馏算法,以及高度优化的量化系统后端。后续的 ZeroQuant(4+2) 工作进一步提出以 FP6 为中心、4+2 设计的量化策略。

ZeroQuant 是一套面向大规模 Transformer 模型的端到端量化与推理流水线(quantization and inference pipeline),由论文《ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale Transformers》提出。它要解决的问题是:训练好的自然语言模型越来越大,其内存与计算需求即使对性能强大的云服务器也构成极大挑战,因此需要一种高效、成本可负担的压缩手段,把模型精度降下来而不显著损害准确率。

为什么重要

论文指出,在实践中高效地服务不断增大的已训练自然语言模型已经变得异常困难,原因在于这些模型对内存和计算的要求过高,即便是性能强大的云服务器也难以轻松承受。模型参数规模的增长直接推高了显存占用与推理延迟,使得部署成本成为限制模型实际可用的关键因素。

量化是缓解这一矛盾的常见思路:用更低位宽(如 INT8、INT4)表示权重与激活,从而减少内存占用并提升计算效率。但论文所针对的场景有其特殊性——它采用的是训练后量化(post-training quantization,PTQ)路线,即不重新训练模型,只利用已训练好的模型本身完成压缩。这条路线的好处是成本低、不需要原始训练流程,难点则在于:位宽压得越低,精度损失越难控制;同时,量化与反量化操作本身会带来额外开销,如果系统后端不做优化,理论上的收益可能被这些开销抵消。ZeroQuant 的动机正是同时应对精度与系统效率这两方面的问题。

工作机制

按论文的描述,ZeroQuant 由三个主要部分组成,它们共同构成一条完整的量化与推理链路。

1. 细粒度且硬件友好的量化方案

第一个组件是一套同时作用于权重(weight)与激活(activation)的细粒度量化方案。论文强调它「硬件友好」,即量化粒度的选择考虑了实际硬件执行时的效率,而不是单纯追求数值上的最优。这一设计使得权重和激活都可以被压到 INT8,并且论文称这种压缩是「无成本」(cost-free)的,即不引入额外的精度代价。

2. 逐层知识蒸馏

第二个组件是一种新的、成本可负担的逐层知识蒸馏算法(layer-by-layer knowledge distillation,LKD)。它的关键特点是不需要访问原始训练数据。在训练后量化中,原始训练数据往往不可得或不便使用,LKD 通过逐层对齐的方式恢复量化带来的精度损失,从而让更激进的位宽压缩成为可能。论文用它把全连接模块的权重压到 INT4,同时注意力模块的权重保持 INT8、激活保持 INT8。

3. 优化的量化系统后端

第三个组件是高度优化的量化系统后端支持,其作用是消除量化与反量化的开销。仅有数值层面的量化方案并不足以带来实际加速,若每次矩阵运算前后都要插入转换操作,收益会被吞掉。该后端正是为把量化真正转化为推理效率而设计的。

典型例子

论文给出了若干具体的实验对象与结果,均出自该论文自身的报告:

  • 对 BERT 与 GPT3 风格的模型,ZeroQuant 能以无成本的方式把权重和激活的精度降到 INT8,且准确率影响极小;论文称相比 FP16 推理,在这些模型上分别取得最高 5.19 倍与 4.16 倍的加速。
  • 结合 LKD 后,ZeroQuant 可以把全连接模块的权重量化到 INT4,注意力模块权重与激活保持 INT8,相比 FP16 模型实现 3 倍的内存占用缩减。
  • 论文称 ZeroQuant 可直接应用于两个当时最大的开源语言模型 GPT-J6B 与 GPT-NeoX20,其 INT8 模型达到与 FP16 模型相近的准确率,同时效率最高提升 5.2 倍。

后续工作《ZeroQuant(4+2): Redefining LLMs Quantization with a New FP6-Centric Strategy for Diverse Generative Tasks》把关注点转向大语言模型(LLM)的 4 位量化方法。该论文考察了 GPTQ 等 4 位量化方法,指出 GPTQ 存在过拟合、在零样本任务上提升有限的问题;并称以往工作多只关注零样本评测,而把任务范围扩展到代码生成、抽象式摘要等更具生成性的类别后,发现 INT4 量化可能显著劣于基线。该论文进一步指出,转向 FP6 等更高精度格式在实践中颇具挑战,原因是当前 AI 硬件上缺乏成熟的集成与系统加速策略。其结果显示,即便采用粗粒度量化方案,FP6 在多种算法与任务上仍表现稳健;在 FP6 量化下,CodeStar-15B 模型在代码生成上与其 FP16 对应版本表现相当,406M 这类较小模型在摘要任务上也接近其基线,而这些是 INT4 无法达到的。为兼顾不同 AI 硬件与系统性能,该论文提出了面向 FP6 的「4+2」设计,以取得与当时最先进的 INT4 细粒度量化相近的延迟。

边界与常见误解

首先需要明确,上述性能数字与准确率结论均来自论文作者的实验报告,属于特定模型、特定硬件与特定评测设置下的结果,不应被理解为对所有模型与所有部署环境普遍成立的行业共识。

其次,ZeroQuant 的定位是训练后量化,它不改变模型的训练过程,也不涉及从头训练或继续预训练。它的效果依赖于已有训练好的模型,以及(在 LKD 环节)逐层蒸馏这一恢复手段。论文特别强调 LKD 不需要原始训练数据,但这不等于量化过程完全不需要任何数据或校准信号。

第三,容易产生的误解是把量化方案本身等同于推理加速。ZeroQuant 明确把系统后端列为三大组件之一,正是因为缺少后端优化时,量化与反量化的开销会侵蚀收益。换言之,只照搬量化粒度设计而不配套系统实现,未必能得到论文所述的加速比。

第四,位宽并非越低越好。ZeroQuant(4+2) 论文的结论恰恰提示:在代码生成、抽象式摘要等生成性任务上,INT4 可能明显落后,而 FP6 在准确率与通用性上更稳健;同时该论文也承认,FP6 在当时的 AI 硬件上缺乏成熟的集成与加速支持,这正是其提出 4+2 设计的原因。因此选择何种精度格式,需要在任务类型、精度要求与硬件支持之间权衡。

参考资料