0
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?

LLM量子化 Day 15: GPTQ - 最適化に基づく量子化

Posted at

科学と神々株式会社アドベントカレンダー 2025

LLM量子化 Day 15: GPTQ - 最適化に基づく量子化

第二のGPU向け形式

昨日学んだAWQは、「アクティベーションを見て重要な重みを保護する」アプローチでした。今日紹介するGPTQは、まったく異なる発想で高品質な量子化を実現しています。

GPTQの核心:誤差の補償

GPTQは「Optimal Brain Quantization(OBQ)」という古典的な技術を、大規模言語モデルに適用したものです。

基本的なアイデア

量子化すると、必ず誤差が生じます。GPTQは、この誤差を「他の重みで補償する」ことで、全体としての誤差を最小化します。

通常の量子化:
  重みA: 0.47 → 0.5 (誤差: +0.03)
  重みB: 0.52 → 0.5 (誤差: -0.02)
  → 誤差はそのまま残る

GPTQの量子化:
  重みA: 0.47 → 0.5 (誤差: +0.03)
  → 誤差を他の重みに分散
  → 重みBを少し調整: 0.52 → 0.49
  → 全体としての誤差を最小化

ヘシアン行列の役割

GPTQは「ヘシアン行列」という数学的概念を使って、どの重みが誤差に敏感かを判断します。

ヘシアンとは

ヘシアン行列は、関数の「曲がり具合」を表します。損失関数のヘシアンが大きい重みは、少しの変化で損失が大きく変わる=敏感な重みです。

感度の低い重み → 先に量子化(誤差が出ても影響が小さい)
感度の高い重み → 後に量子化(他の重みで補償済み)

この順序付けにより、量子化誤差の影響を最小限に抑えられます。

AWQとGPTQの違い

観点 AWQ GPTQ
アプローチ アクティベーションを分析 誤差を補償
重要性の判断 実行時の活性化パターン ヘシアン(感度)
量子化順序 考慮しない 感度順に量子化
計算コスト 比較的軽い ヘシアン計算で重い
ビット幅 4ビット固定 2/3/4/8ビット

GPTQの利点

1. 複数のビット幅をサポート

GPTQは2ビットから8ビットまで対応しています:

ビット サイズ削減 品質維持率 用途
2ビット 87.5% 70〜80% 実験用
3ビット 81.25% 85〜90% サイズ重視
4ビット 75% 95〜97% 推奨
8ビット 50% 99%+ 品質重視

2. 高い量子化品質

GPTQは、誤差補償により高い品質を維持します:

Llama 2 7B での比較(4ビット):

手法          Perplexity  品質維持率
RTN(単純)    6.15        89.0%
GPTQ          5.63        97.1%
AWQ           5.55        98.5%

AWQほどではありませんが、単純な量子化より大幅に優れています。

3. 広い互換性

GPTQは多くの推論エンジンでサポートされています:

  • vLLM
  • HuggingFace Transformers(GPTQサポート)
  • text-generation-inference
  • ExLlama v2

グループ量子化

GPTQの重要な機能として「グループ量子化」があります。Day 3で学んだグループ量子化をGPTQにも適用できます。

グループサイズの影響:

グループサイズ  精度    サイズ  推論速度
32             最高    大きい  遅い
64             高い    中程度  中程度
128            良好    バランス バランス
256            やや低い 小さい  速い

グループサイズが小さいほど、外れ値の影響を局所化できますが、スケール情報が増えるためファイルサイズが大きくなります。

GPTQの欠点

1. 量子化時間が長い

ヘシアンの計算と誤差補償は計算コストが高く、AWQより時間がかかります。

2. GPUが必須

量子化自体にGPUが必要です。CPUでも技術的には可能ですが、実用的な時間では終わりません。

3. メモリ消費が大きい

ヘシアン行列を保持するため、量子化中に大きなメモリが必要です。

いつGPTQを選ぶか

GPTQを選ぶ場合

  • 4ビット以外のビット幅が必要
  • ExLlama v2を使いたい
  • 既にGPTQモデルが公開されていて、それを使いたい

AWQを選ぶ場合

  • vLLMを使う
  • 最高品質の4ビット量子化が欲しい
  • 量子化時間を短くしたい

Tips: GPTQの使いこなし

1. グループサイズを調整する

品質重視なら64、速度重視なら256を試してください。デフォルトの128は多くの場合に良い選択です。

llm-quantize quantize model gptq -q 4bit --group-size 64

2. 適切なキャリブレーションデータを使う

AWQと同様、キャリブレーションデータの品質が結果に影響します。

3. 8ビットから始める

品質を重視するなら、まず8ビットで試してみてください。問題なければ4ビットに下げます。

# まず8ビット
llm-quantize quantize model gptq -q 8bit

# 問題なければ4ビット
llm-quantize quantize model gptq -q 4bit

次回予告

Day 16では「GPTQQuantizerの内部」として、llm-quantizeがGPTQ量子化をどのように実装しているか、GPTQModelライブラリとの連携について解説します。


GPTQは2022年に発表された手法ですが、今でも広く使われています。「古い」技術でも、数学的に堅実なアプローチは長く生き残ります。流行を追うだけでなく、基礎を理解することの重要性がここにあります。

0
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
0
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?