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?

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

LLM量子化 Day 18: Lossy変換の警告

「劣化」という現実

Day 17でフォーマット変換の仕組みを学びました。今日は、変換に伴う品質劣化について、より深く掘り下げます。

重要な事実を最初に述べます:すべての量子化形式間変換は品質劣化を伴います。例外はありません。

なぜ品質が劣化するのか

量子化とは、情報を「捨てる」プロセスです。FP16の32,768段階から、INT4の16段階に減らすとき、情報の大部分が失われます。

変換時の誤差蓄積

元モデル(FP16)
    │ 値: 0.4728
    ▼
GGUF Q4_K_M
    │ 値: 0.50(誤差 ε1 = +0.0272)
    ▼ 逆量子化
近似FP16
    │ 値: 0.50(ε1は回復不可能)
    ▼
AWQ 4bit
    │ 値: 0.48(誤差 ε2 = -0.02)
    ▼
最終値: 0.48

累積誤差: |0.48 - 0.4728| = 0.0072
直接量子化なら: |0.47 - 0.4728| = 0.0028

変換を経由すると、誤差が蓄積します。直接量子化より悪い結果になるのは、この累積が原因です。

誤差の性質を理解する

量子化誤差には、いくつかの種類があります:

1. 丸め誤差

最も基本的な誤差。値を離散的なグリッドに丸めることで生じます。

連続値: 0.123, 0.127, 0.131
    ↓ 4ビット量子化
離散値: 0.125, 0.125, 0.125(すべて同じ値に!)

2. クリッピング誤差

値が量子化範囲を超えた場合に生じます。

範囲: [-1.0, 1.0]
値: 1.5
    ↓ クリッピング
量子化値: 1.0(0.5の誤差)

3. グループ間の不整合

グループ量子化では、グループごとに異なるスケールを使用します。変換時に、このグループ境界が一致しないと、追加の誤差が生じます。

GGUF: グループサイズ32
AWQ:  グループサイズ128

変換時に境界が不一致
→ スケールの再計算が必要
→ 追加の量子化誤差

品質劣化の定量的な影響

典型的なケースでの品質劣化を見てみましょう:

Perplexity(困惑度)での比較

Llama 2 7Bの例:

直接量子化:
├── FP16 → GGUF Q4_K_M: Perplexity 5.68(+0.10)
├── FP16 → AWQ 4bit:    Perplexity 5.63(+0.05)
└── FP16 → GPTQ 4bit:   Perplexity 5.71(+0.13)

変換経由:
├── GGUF → AWQ:  Perplexity 5.82(+0.24)
├── AWQ → GGUF:  Perplexity 5.89(+0.31)
└── GPTQ → AWQ:  Perplexity 5.75(+0.17)

変換を経由すると、Perplexityが0.1〜0.3ポイント悪化します。これは、モデルの出力品質に影響を与える程度の劣化です。

品質維持率での表現

直接量子化(FP16基準):
├── GGUF Q4_K_M: 約97%の品質維持
├── AWQ 4bit:    約98%の品質維持
└── GPTQ 4bit:   約96%の品質維持

変換経由:
├── GGUF → AWQ:  約94%の品質維持
├── AWQ → GGUF:  約93%の品質維持
└── 複数回変換:  約90%以下の品質維持

警告システムの設計

llm-quantizeは、すべての変換に対して警告を出力します:

$ llm-quantize convert ./model-Q4_K_M.gguf awq -o ./output

⚠️  Warning: Converting from gguf to awq may result in quality degradation.
    Consider re-quantizing from the original model for best results.

Converting: model-Q4_K_M.gguf → AWQ
[████████████████████████████████] 100%

Output: ./output/model-Q4_K_M-awq
Size: 4.2 GB
Status: ⚠️ Lossy conversion completed

この警告は、ユーザーが意識的な判断を下せるようにするためのものです。

変換パスごとの影響度

すべての変換が同じ程度の劣化を引き起こすわけではありません:

変換パス 影響度 理由
GGUF → AWQ k-quant最適化の損失、再キャリブレーション
GGUF → GPTQ ヘシアン情報なし、再キャリブレーション
AWQ → GGUF k-quant最適化の恩恵なし
AWQ → GPTQ 類似アルゴリズム、GPU向け同士
GPTQ → AWQ 類似アルゴリズム、GPU向け同士
GPTQ → GGUF k-quant最適化の恩恵なし

GPU形式同士(AWQ↔GPTQ) の変換は、影響が比較的小さいです。両者は似たアプローチを取っているためです。

GGUF と GPU形式間 の変換は、影響が大きいです。k-quantの混合精度最適化が、他形式では活かせないためです。

品質劣化を最小化する戦略

戦略1: 元モデルから直接量子化

# 最も品質が高い方法
llm-quantize quantize meta-llama/Llama-2-7b-hf awq -q 4bit

元のFP16/BF16モデルが利用可能なら、必ずこの方法を選んでください。

戦略2: 複数形式を並行生成

# 複数の形式が必要な場合
llm-quantize quantize model gguf -q Q4_K_M -o ./gguf
llm-quantize quantize model awq -q 4bit -o ./awq
llm-quantize quantize model gptq -q 4bit -o ./gptq

変換を経由せず、それぞれ直接生成することで、各形式で最高品質を維持できます。

戦略3: 変換が必要な場合の最適パス

AWQが欲しいが、GPTQしかない場合:
├── 元モデルが入手可能 → 直接AWQ量子化
└── 元モデルが入手不可 → GPTQ → AWQ変換(影響小)

GGUFが欲しいが、AWQしかない場合:
├── 元モデルが入手可能 → 直接GGUF量子化
└── 元モデルが入手不可 → AWQ → GGUF変換(影響中)

戦略4: 用途に応じた許容度の判断

用途別の許容度:
├── 本番サービス: 品質劣化は許容しない → 直接量子化のみ
├── 開発・テスト: 多少の劣化は許容 → 変換も選択肢
├── 実験・比較:   劣化を前提に評価 → 変換を積極活用
└── デモ・プロトタイプ: 速度優先 → 変換で十分

変換後の検証

変換後は、必ず品質を確認してください:

簡易検証

# 推論が動作することを確認
llama-cli -m ./model.gguf -p "Hello, world!" -n 50

品質検証

# Perplexityの計算(概念的なコード)
def evaluate_perplexity(model_path, test_data):
    # モデルを読み込み
    # テストデータで推論
    # 困惑度を計算
    return perplexity

original_ppl = evaluate_perplexity("./original-awq", test_data)
converted_ppl = evaluate_perplexity("./converted-gguf", test_data)

degradation = (converted_ppl - original_ppl) / original_ppl * 100
print(f"品質劣化: {degradation:.1f}%")

ベストプラクティスのまとめ

判断フローチャート:

1. 元モデルは入手可能か?
   ├── Yes → 直接量子化(最高品質)
   └── No → 2へ

2. 品質劣化は許容できるか?
   ├── Yes → 変換を実行
   │         ├── GPU形式同士 → 影響小
   │         └── GGUF↔GPU形式 → 影響大
   └── No → 元モデルの入手を検討

3. 変換後の検証を実施
   ├── 推論が動作するか
   ├── 品質は許容範囲か
   └── 問題があれば別の方法を検討

次回予告

Day 19からは「実践編」として、チェックポイント機能、CLI設計、進捗表示、エラーハンドリング、テスト戦略など、実際の開発で重要なトピックを解説していきます。


「できるからやる」ではなく、「やるべきかどうか」を考える——これがエンジニアリングの本質です。変換機能は便利ですが、その限界を理解した上で使うことが大切です。

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?