Open2

AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration (Jun 2023)

bilzardbilzard

paper: AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

https://arxiv.org/abs/2306.00978

概要

  • Edgeデバイスで高速に動作するLLMの量子化手法として提案された。
  • 重要な少数のアクティベーションチャネルの精度に着目した量子化手法。calibration setと呼ばれる少量のデータセットを用いてパラメータを調整する。

量子化手法の分類

本提案手法はモデルの重みのみ量子化する。

  1. 重みの精度: INT4
  2. アクティベーションの精度: FP16

上記の場合、W4A16と表記する。

関連手法

  • Quantization-Awared Training(QAT): 量子化された重みで少数ステップfine-tuningを行う。過学習による性能劣化が課題。
  • GPTQ: 執筆時点でのSOTA。量子化誤差の補正に二次の項を用いる。
  • Activation-Aware Quantization (AWQ): 提案手法。追加で調整するパラメータ数が少数なので過学習しにくいと考えられる。

ベースとなる知見

  • 均質に量子化するのでなく、0.1%~1%の重要なチャネル(salient channels)の精度をFP16で計算することで性能を落とさずに量子化できる
  • 重要なチャネルの決め方: 重み or アクティベーション。重みで決めるやり方だと対して効果がなかったのでアクティベーションをベースに決めるアプローチをとった
  • 課題: FP16とINT4が混在するので実装が複雑になる→全てINT4でやるには?

提案手法: AWQ(Activation-Aware Quantization)

  • 提案手法のアイデア: 1%の重要なチャネルのダイナミックレンジをスケールする。
  • スケールするパラメータは勾配法を用いずに、grid searchを使って調整する。

評価

  • 性能評価: GPTQと比べてPPL、下流タスクで一貫して優位性が確認できた
  • 速度評価: FP16精度と比べてx3の推論を高速化


bilzardbilzard

考察: 愚直にgrid searchを行った場合の探索空間のサイズ

提案手法ではスケールサイズをアクティベーションの平均値で代替し、冪乗のパラメータ\alpha 1つのみを調整するアプローチをとっている。

\mathbf{s} = \mathbb{E}\left[ \mathbf{X} \right]^\alpha

このような推定値を用いずに、愚直にgrid searchをやる場合の探索空間のサイズを計算してみる。

Qwen2.5-7bの例

  • レイヤ数: 28
  • hidden_size: 3,584
  • 1%のチャネルをスケールする

このとき、1層分のパラメータ数は

  • QKV(3d) + LN(1d) + FF(5d) + LN(1d) = 10d

\lfloor 3584 * 10 \times 0.01 \rfloor=358

全層でのパラメータの総数は、

358 \times 28=10,024

であり、grid数を10とした時の探索空間は10,024^{10}=1.024e+40となり計算可能でない。

論文のように\alphaのみ調整する方法だと探索空間のサイズはグリッド数に一致する。