ML-paper-AWQ

ML-paper-AWQ

Charles Lv7

AWQ Activation-aware Weight Quantization for LLM

**核心问题:**如何在设备上部署大型语言模型(LLMs)以减少云计算成本并保护用户隐私。

核心方法(贡献):

  1. 提出了一种名为“Activation-aware Weight Quantization (AWQ)”的方法,用于 LLM 的低比特权重量化。
  2. AWQ 通过识别和保护重要的权重通道来减少量化误差。
  3. 为了实现 AWQ,我们设计了一个高效的推理框架 TinyChat,将 4 位 LLM 的理论内存节省转换为测量的加速比

实验效果:

  1. AWQ 在各种语言建模和特定领域的基准测试中表现优于现有工作。
  2. 实验表明,AWQ 在指令调优的语言模型(如 Vicuna)和多模态语言模型(如 OpenFlamingo)上也表现出色。

改进方向:

  1. 提出了 TinyChat,一个高效灵活的推理框架,专为 4 位设备上的 LLM/VLM 设计。
  2. TinyChat 通过内核融合和平台感知的权重打包,提供了比 Huggingface FP16 实现更高的速度。

背景与相关工作

讨论了模型量化方法,包括量化感知训练(QAT)和后训练量化(PTQ)。

  • 在 PTQ 训练低比特条件下性能下降严重这个问题上最接近的工作是 GPTQ,它利用二阶信息进行误差补偿。然而,在重建过程中,它可能会过拟合校准集,从而扭曲在分布外域上学习到的特征,这是有问题的,因为 LLMs 是通用模型。
  • AWQ 基于这样的观察:权重对 LLMs 的性能并不同等重要。有一小部分(0.1% ~ 1%)的显著权重;跳过这些显著权重的量化将显著降低量化损失
  • 为了找到显著的权重通道,我们的见解是,尽管我们正在做权重量化,但我们应该参考激活分布而不是权重分布
  • 为了避免硬件低效的混合精度实现,我们分析了权重量化的误差,并推导出显著通道的放大可以降低它们的相对量化误差
  • QAT 方法不能很容易地扩展到像 LLMs 这样的大型模型。因此,人们通常采用 PTQ 方法对 LLMs 进行量化。

方法理论

image-20240727214436724

AWQ 基于观察到的权重在 LLM 性能中的重要性不同,通过激活分布而不是权重分布来识别重要的权重通道。

Improving LLM Quantization by Preserving 1% Salient Weights

  • 观察到 LLMs 中的权重并不是同等重要的。存在一小部分(0.1%-1%)的显著权重对模型性能至关重要。跳过这些显著权重的量化可以显著减少量化损失,从而在不进行训练或回归的情况下提高量化模型的性能。
  • 通过激活分布而不是权重分布来识别显著的权重通道。这是因为权重通道对应于较大的激活幅度,处理更重要的特征。
  • 尽管在 FP16 中保留 0.1 %的权重可以在不明显增加模型大小的情况下提高量化性能,但这种混合精度的数据类型将使系统实现变得困难。我们需要提出一种方法来保护重要的权重,而不必实际保持它们为 FP16。

Protecting Salient Weights by Activation-aware Scaling

  • 保护显著权重的方法
    • 提出了一种替代方法,通过每个通道的缩放来减少显著权重的量化误差,这种方法不会产生硬件效率问题。
    • 通过分析权重量化的误差,提出了一种数学方法来证明通过缩放显著通道可以减少它们的相对量化误差。
  • 最优缩放因子的搜索
    • 为了同时考虑显著和非显著权重,设计了一种自动搜索最优(每个输入通道)缩放因子的方法,以最小化量化后输出差异。
    • 通过定义一个搜索空间来优化缩放因子,使用简单的网格搜索在[0, 1]区间内找到最佳 α 值。

实验工作

通过实验验证了 AWQ 在不同模型家族(如 LLaMA 和 OPT)和模型大小上的有效性。

  • 显著权重的重要性:实验结果表明,通过识别并保护 1%的显著权重,可以在不进行训练或回归的情况下显著减少量化损失,从而提高量化模型的性能。
  • 激活感知缩放的有效性:通过激活感知的缩放方法,可以有效地减少量化误差。实验验证了这种方法在不同模型和量化位宽下的有效性。
  • AWQ 的泛化能力:AWQ 方法不仅在语言建模任务上表现优异,还成功应用于指令调优的语言模型(如 Vicuna)和多模态语言模型(如 OpenFlamingo),显示出良好的泛化能力。
  • TinyChat 的推理加速:实验结果表明,TinyChat 推理框架能够将 AWQ 的理论内存节省转化为实际的速度提升。在桌面和移动 GPU 上,与 Huggingface 的 FP16 实现相比,平均速度提升达到 3.2-3.3 倍。
  • 数据效率和泛化性:AWQ 方法对校准集的数据需求较小,且对校准集分布的敏感性较低。这使得 AWQ 在不同数据集分布上具有更好的泛化性能。
  • 多模态模型的应用:AWQ 方法成功应用于多模态语言模型(如 VILA),在多种视觉语言基准测试中实现了无损量化性能。
  • 极端低比特量化:即使在极端低比特量化(如 INT2)的情况下,AWQ 方法也能与 GPTQ 方法结合,进一步提高量化性能,使其成为一种更实用的设置。
  • 编程和数学任务的性能:在编程(MBPP)和数学(GSM8K)任务上,AWQ 方法也表现出色,证明了其在复杂生成任务中的有效性。
  • 系统支持的广泛性:TinyChat 系统不仅支持 LLMs,还支持广泛的应用程序,包括 StarCoder、StableCode、Mistral 和 Falcon 等,同时在资源受限的设备上(如 Raspberry Pi 4B)也能实现 LLMs 的部署。
  • Title: ML-paper-AWQ
  • Author: Charles
  • Created at : 2024-07-27 22:06:06
  • Updated at : 2024-07-29 14:38:06
  • Link: https://charles2530.github.io/2024/07/27/ml-paper-awq/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments