2309.05516_AutoRound: Optimize Weight Rounding via Signed Gradient Descent for the Quantization of LLMs

Abstract

  • 大语言模型虽然能力强,但部署时对内存和存储要求很高。

  • SignRound 是一种新方法,用 SignSGD 优化量化过程,只需 200步 就能完成。

  • 它结合了训练前量化(PTQ)和感知量化训练(QAT)的优点,支持 2~4位量化,效果好且成本低。

  • 比如在2位时,平均准确率最多能提升 33.22%,在4位时几乎无损。

1. Introduction

  • 为什么量化很重要?

    • 大模型(LLMs)越来越常用,但它们太大了,运行在资源有限的设备(如手机)上有困难。

    • 为了降低内存、存储和计算需求,人们研究量化(把模型用更低精度表示),特别是权重量化

  • 两种主要量化方式:

    1. QAT(Quantization-Aware Training)

      • 模型在训练时就考虑量化的影响,精度较高,但训练复杂、耗资源。

    2. PTQ(Post-Training Quantization)

      • 模型训练完再做量化,简单高效,但可能精度下降。

  • 重点方向:权重量化

    • 激活量化比较难,容易影响性能,所以本文只做权重量化

    • 权重量化的关键步骤是四舍五入(rounding)

      • 常见的是RTN(round to nearest),但它忽略了权重之间的关系,效果不够好。

    • Adaptive Rounding尝试改进它,用更复杂的优化方法来决定怎么四舍五入。

  • 本文提出的方法:SignRound

    • 使用一种简单但有效的优化算法 SignSGD 来优化四舍五入过程,同时做权重截断(clipping)

    • 好处:

      • 推理时不增加额外计算量。

      • 在2到4比特量化下表现优异,甚至达到几乎无损。

      • 在多个模型上泛化性好。

  • 总结:

    • 这篇文章提出了一种低成本、效果好、易用的权重量化优化方法(SignRound)

    • 在不牺牲推理效率的前提下显著提升了模型量化后的性能。

3. Methodology

  • 基本量化方法

    • 想把模型的浮点权重 W 转换成整数(量化),

    • 然后还能近似还原(反量化)。

  • 量化、反量化权重 的公式如下:

W~=sclip(Ws+zp,n,m)
  • s:缩放因子,用于将浮点变成整数

  • zp:零点偏移

  • :四舍五入

    • 通常使用 RTN 方法执行

    • 缺点:RTN 是一种逐元素四舍五入的方法,但它忽略了权重之间的相关性,效果有限。

  • 改进点:引入可训练参数

    • 为了更好地量化,我们引入三个可训练参数

      1. V(扰动项):在四舍五入前加入,用来微调每个权重的量化效果。

      W~=sclip(Ws+zp+V,n,m)
      1. α(alpha)和 β(beta):用来调整权重最大/最小值的裁剪范围,使得计算出来的缩放因子 s 更合理。

      s=max(W)αmin(W)β2bit1
  • 训练方法(SignRound 算法)

    • 为了优化这三个参数,作者使用一个迭代训练算法(如下步骤):

      1. 用原始模型推理出输出 y_f

      2. 对当前权重进行量化,得出量化版本 w~

      3. 用量化模型输出 y_q

      4. 计算 y_qy_f 之间的均方误差(loss)。

      5. 如果当前 loss 更小,则保存当前的 V,α,β

      6. 使用 SignSGD 优化器继续调整 V,α,β

  • 最终优化的目标是:量化和反量化权重

minα,β,VWXW~XF2

备注

提出了一种引入可训练参数的智能量化方法,使大模型在压缩时尽可能保留原始性能。

4. Experiments

  • 任务类型: 包括 11 个 zero-shot 语言任务(如 HellaSwag、PIQA、LAMBADA 等)和 3 个困惑度(PPL)数据集(如 WikiText2、PTB、C4)。

  • 评估工具: 使用 lm-eval-harness 工具

  • 量化方式: 仅对 Transformer 的线性层进行 weight-only 量化,不包括嵌入层或输出层

  • 设置: 使用 W4G-1、W4G128、W3G128、W2G128 等配置(表示 4/3/2bit 精度 + 分组粒度)。

  • 校准样本: 从 pile-10k 中随机选取 512 条样本,避免过拟合。

  • 所测模型:使用主流开源模型如 LLaMA-V1/V2、Mistral-7B,模型参数覆盖从 7B 到 70B。

  • 与主流方法对比(GPTQ, AWQ, HQQ, OmniQuant 等)效果都有提升

  • 消融实验(Ablation Study):对比 SignSGD 和 Adam 优化器,发现 SignSGD 表现更稳、更优,尤其是在低比特量化任务中。

5. Conclusion

  • 提出了一种高效简洁的量化方法 SignRound,用于优化大语言模型中的权重取整。它通过带符号的梯度下降和权重裁剪,在200步内完成优化,比如量化 LLAMA-V2-70B 只需约 2.5 小时。实验表明,SignRound 在大多数情况下优于其他方法,并且在新模型中生成效果也很好。通过为不同模型调整参数,性能还能进一步提升。