1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

論文紹介:GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers

Last updated at Posted at 2024-11-06

紹介する論文1

タイトル: GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers
学会: ICLR2023

GPTQは大規模言語モデル向けの量子化方法です。
Llama2-13bのような、パラメータ数が数十Billionクラスのモデルの4bit量子化や3bit量子化に使われているPost-trainingの量子化方法です。
数百Billion級のモデルを3、4bit量子化する方法は初と主張しています。

image.png

LLMにOptimal Brain Quantiationを適用する

GPTQの基本的なアイデアは、LLMにOptimal Brain Quantization (OBQ)による量子化を適用するというものです。
しかし、パラメータ数が数Billionクラスになると、単にOBQを適用するだけでは精度が落ちると指摘しています。OBQの終盤で大きな誤差を補正する必要があるため、補正が困難になります。反復計算で得られるヘッセ行列の逆行列が正定値でなくなり、数値的に不安定になるそうです。
本論文では、LLMにOBQを適用する際の数値不安定性を解決しつつ、高速化する方法を提案しています。

パラメータの更新順序

OBSやOBQでは、量子化誤差が最小になるパラメータから貪欲に更新パラメータを選択していました。しかしこの順序であることは必ずしも必須ではないです。GPTQではパラメータを添え字の小さい方から順に量子化しています。

バッチ化

Lazy Batch-Update (遅延バッチ化) ではメモリボトルネックを解消することで高速化します。ヘッセ行列の逆行列や重み行列の補正を1列ずつ行うのではなく、$B=128$個まとめて行うことによってメモリ効率を上げます。

Cholesky Reformulation

一般に、正定値行列$A$は、下三角行列$L$を用いて$A=LL^T$と分解することができます。これをコレスキー(Cholesky)分解と呼びます。

GPTQの話に戻ります、GPTQでは、精度劣化の問題に対して、Cholesky Reformulationで数値不安定性を解決することを提案しています。
OBSのヘッセ行列の逆行列の更新式は、よく見るとコレスキー分解の更新式と似ています。これを用いると、コレスキー分解のソルバーを使ってヘッセ行列の逆行列を更新できます。LAPACKのコレスキー分解ルーチンなどを使って計算すれば、数値安定に計算できるという訳です。

評価

image.png

Table 1 はResNetによる画像認識タスクで評価しています。GPTQがAdaRoundやAdaQuantといった量子化方法と同程度であることが確認できます。

image.png

Table 3ではLLMによる言語処理タスクで比較しています。GPTQは3bitや4bitでも数十〜数百Billionパラメータのモデルを量子化しても精度劣化が小さいことが確認できます。

  1. 画像や数式は論文から引用しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?