科学と神々株式会社アドベントカレンダー 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年に発表された手法ですが、今でも広く使われています。「古い」技術でも、数学的に堅実なアプローチは長く生き残ります。流行を追うだけでなく、基礎を理解することの重要性がここにあります。