科学と神々株式会社アドベントカレンダー 2025
LLM量子化 Day 9: GGUF量子化レベルの選び方
謎めいた名前を解読する
GGUFの量子化レベルを見ると、Q4_K_MやQ8_0といった暗号のような名前が並んでいます。今日は、この命名規則を解読し、自分のユースケースに合った選び方を学びましょう。
命名規則の基本
Q4_K_M
│ │ │
│ │ └── バリアント(S/M/L)
│ └──── タイプ(K = k-quant, 数字 = 標準)
└────── ビット数
ビット数(最初の数字)
- 数が小さいほど圧縮率が高く、サイズが小さい
- 数が大きいほど品質が高い
タイプ
-
0や1: 標準量子化(シンプルな方式) -
K: k-quant(賢い混合精度方式)
バリアント(K-quantのみ)
-
S: Small(サイズ重視) -
M: Medium(バランス) -
L: Large(品質重視)
標準量子化とK-quant:何が違うのか
標準量子化(Q4_0, Q4_1, Q8_0)
すべての重みに同じビット数を均等に割り当てます。
モデル全体 → 全員4ビット
└── 重要な層も、そうでない層も、同じ4ビット
シンプルで高速ですが、重要な部分も軽視されてしまいます。
K-quant(Q4_K_M, Q5_K_Mなど)
重みの重要度に応じて、異なるビット数を割り当てます。
モデル構造:
├── 入力埋め込み層 → 高精度(8ビット)← 入力を正確に理解するために重要
├── 中間層
│ ├── Attention → 中精度(4-5ビット)
│ └── FFN → 低精度(3-4ビット)← 冗長性が高い
└── 出力層 → 高精度(8ビット)← 出力品質に直結
これは、家の断熱材のようなものです。すべての壁に同じ厚さの断熱材を入れる代わりに、外気に接する壁は厚く、内壁は薄くする。合計使用量は同じでも、効果は大きく異なります。
各レベルの特性
8ビット系
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q8_0 | 8ビット標準 | 99%+ | 最高品質が必要な場合 |
事実上、品質低下を感じることはほぼありません。サイズは約半分になります。
6ビット系
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q6_K | 6ビットk-quant | 98-99% | 品質重視 |
Q8_0とQ4_K_Mの中間を狙いたいときに選びます。
5ビット系
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q5_K_M | 5ビットk-quant Medium | 97-98% | 品質とサイズのバランス |
| Q5_K_S | 5ビットk-quant Small | 96-97% | やや品質重視 |
| Q5_0/Q5_1 | 5ビット標準 | 95-96% | k-quantが使えない場合 |
品質を妥協したくないが、Q8_0ほどのサイズは許容できない場合に選びます。
4ビット系(最も人気)
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q4_K_M | 4ビットk-quant Medium | 95-96% | 汎用的に推奨 |
| Q4_K_S | 4ビットk-quant Small | 94-95% | サイズ重視 |
| Q4_0/Q4_1 | 4ビット標準 | 92-94% | 最小の4ビット |
Q4_K_Mが最も推奨される理由:
- サイズ: FP16の約28%(7Bモデルで約4GB)
- 品質: 体感では違いがわかりにくいレベル
- 互換性: すべてのllama.cppバージョンでサポート
- 速度: CPU推論でも実用的な速度
3ビット系
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q3_K_L | 3ビットk-quant Large | 90-92% | 品質重視の3ビット |
| Q3_K_M | 3ビットk-quant Medium | 88-90% | 3ビットのバランス |
| Q3_K_S | 3ビットk-quant Small | 85-88% | 極小サイズ |
品質低下が目立ち始めます。メモリが非常に限られている場合のみ検討してください。
2ビット系
| レベル | 説明 | 品質維持率 | 推奨用途 |
|---|---|---|---|
| Q2_K | 2ビットk-quant | 70-80% | 実験用 |
品質低下が顕著です。「動けばいい」「実験的に試したい」場合のみ。
選び方の実践ガイド
ステップ1: 利用可能なメモリを確認
8GB RAM: Q4_K_M(7Bモデル)、Q3_K_M(13Bモデル)まで
16GB RAM: Q5_K_M(7Bモデル)、Q4_K_M(13Bモデル)まで
32GB RAM: Q8_0(7Bモデル)、Q5_K_M(13Bモデル)まで
目安として、モデルサイズの1.2〜1.5倍のRAMが必要です(KVキャッシュなどのため)。
ステップ2: 用途を考える
| 用途 | 推奨レベル | 理由 |
|---|---|---|
| コーディング支援 | Q4_K_M以上 | 構文の正確さが重要 |
| 日常会話 | Q4_K_M | 十分な品質 |
| 創作・ストーリー | Q3_K_M可 | 多少の不正確さは許容 |
| 翻訳・要約 | Q5_K_M以上 | 正確さが重要 |
| 実験・テスト | Q2_K可 | 動けばOK |
ステップ3: 実際に試す
最終的には、自分のタスクで実際に試すのが一番です。
# まずQ4_K_Mで試す
llm-quantize quantize model gguf -q Q4_K_M
# 品質が不満なら上げる
llm-quantize quantize model gguf -q Q5_K_M
# サイズが大きすぎるなら下げる
llm-quantize quantize model gguf -q Q4_K_S
Q4_0とQ4_K_Mの実測比較
同じ「4ビット」でも、品質に大きな差があります:
Llama 2 7B での比較:
Q4_0 Q4_K_M
サイズ 3.6GB 4.0GB
Perplexity 5.82 5.68
品質維持率 94.0% 96.2%
変換速度 速い やや遅い
0.4GBの差で2%以上の品質向上。ほとんどの場合、Q4_K_Mを選ぶべきです。
Tips: 量子化レベル選択のコツ
迷ったらQ4_K_M
これが一番のアドバイスです。8割以上のユースケースでQ4_K_Mが最適解です。
品質が足りないと感じたら
Q4_K_M → Q5_K_M → Q6_K → Q8_0 と段階的に上げていきます。
メモリが足りないと感じたら
Q4_K_M → Q4_K_S → Q3_K_M と段階的に下げます。ただし、Q3以下に下げるよりも、より小さいモデルを選ぶ方が良い場合もあります(7B Q3_K_Mより、3B Q4_K_Mの方が良いこともある)。
_0と_1の違い
_1バリアント(Q4_1, Q5_1)は、ゼロポイントを追加で保存します。わずかにサイズが大きくなりますが、非対称な分布に対して精度が向上することがあります。現在はk-quantが主流なので、あまり気にする必要はありません。
次回予告
Day 10では「GGUFQuantizerの仕組み」として、llm-quantizeがどのようにGGUF量子化を実行しているか、内部の処理フローを解説します。
量子化レベルの選択は、「サイズ」と「品質」のトレードオフです。しかし、k-quantの登場により、そのトレードオフは大幅に改善されました。Q4_K_Mという選択肢があることを、ありがたく思いましょう。