quantization / pillar

GGUFの量子化とは?Q2〜Q8・K-quant・I-quantの違い

量子化(くあんたいか)とは、モデルの重みを少ない精度で保存し、ファイルサイズと実行時メモリを小さくする手法です。 GGUFでは Q4_K_M のような名前で表記されます。軽さと品質のバランスを理解するのが選び方の鍵です。

読了後に判断できること:bits と bpw の違い、K-quant/I-quant/legacy の使い分け、 imatrix の意味、ReQuantization の危険、自分の環境で「どの精度を選ぶか」の目安。

量子化の目的

モデルは本来、高精度(FP16/BF16 など)の重みを持っています。これを 4bit や 8bit 程度に減らすことで、 ファイルサイズと実行時メモリを大きく削減できます。メリットは「軽く・速く・載りやすく」、デメリットは「品質低下のリスク」です。 量子化はこのトレードオフを管理する技術です。

よくある誤解:「量子化すれば何でも軽くなる」は正しいが、「軽くなっても品質は変わらない」は誤り。 削った精度分だけ、タスク・モデルによっては品質が落ちます。落ち方は一様ではありません。

bits と bpw(bits-per-weight)

量子化の「bit数」は、1つの重みを表現するのに使うビット数の目安です。Q4 なら約4bit、Q8 なら約8bit です。 ただし実際には bpw(bits-per-weight) という平均値で考えます。blockごとのscale等や、 テンソルごとに異なる型を割り当てる方式では、名前の数字とモデル全体の実効bpwが一致しません。

bit数とbpwの関係(目安)
表記例おおまかなbpw傾向
Q2_K2-bit級小さいが、タスク別の劣化を要確認。
Q3_K3-bit級サイズ優先の候補。
Q4_K_M4-bit級のmixed allocation比較候補。普遍的な既定ではない。
IQ4_NL / IQ4_XS4-bit級のI-quant非線形/importance-aware。実装対応を確認。
Q5_K_M / Q6_K5〜6-bit級通常はファイルが大きくなる。
Q8_08-bit級大きい。FP16との同等性は保証しない。
F16 / F3216 / 32高精度だが大きい。用途とruntimeで判断。

bpw は方式定義だけでなく、モデル内のtensor構成でも変わります。正確な比較には配布ファイルの実サイズとmetadataを使います。 「Q4なら必ず4bit」は不正確——K-quant は混合精度です。

legacy quants(Q2_0 等)

最も単純な方式は、テンソル全体を一律のビット数で量子化する legacy quant(例: Q4_0, Q5_0)です。 実装が単純で広く扱えます。K-quant/I-quantは別の割り当てや符号化を使いますが、 「同じ名前なら必ず上位互換」とせず、配布元の対応と自分のタスクで比較します。

K-quant(混合精度)

K-quant(例: Q4_K_M, Q5_K_M)では、suffixに応じて一部tensorへ 異なる量子化型を割り当てます。モデル全体を単一の「4bit block」と見る方式ではありません。

  • _S / _M / _L は、llama.cppの表でtensorへの型割り当てが異なるvariantです。
  • 「M」を「medium block size」と説明するのは不正確です。具体的な割り当ては現行quantize READMEで確認します。

詳細な内部構造(テンソルごとの配置)は llama.cpp の Tensor Encoding Schemes を参照。 ここでの重要点は「K-quantは単一ビットではなく混合精度」という点です。

I-quant(IQ系)

I-quant(例: IQ4_NL, IQ4_XS, IQ3_XXS)は、 importance matrixや非線形量子化を使う方式を含みます。K-quantとは符号化・割り当てが異なります。 ランタイムやツールによる対応状況にも注意が必要です。

使い分け:K/Iという分類だけで優劣を決めず、配布者が同じrevisionから作った候補の実ファイルサイズ、 対応runtime、実タスクの出力を比較します。

imatrix(重要性行列)

imatrix は、量子化時に「どの重みが重要か」を評価するための情報です。これを使って量子化すると、 同じビット数でも品質を維持しやすくなる傾向があります。ファイル名に imatrix 等の表記が入ることがあります。

imatrix は「高品質量子化の目安」の一つですが、何をもって重要としたかは計算時のデータセットに依存します。 配布元がどう作ったかを過信せず、自分のタスクで試すのが確実です。

requantization(再量子化)の危険

すでに量子化された GGUF を、さらに別の精度に量子化し直す(requantization)と、 品質が追加で劣化することがあります。原則として、高い精度(FP16 等)から直接目的の精度に量子化するのが望ましいです。

初心者への推奨:自分で再量子化するより、配布元が提供する目的の精度のファイルをダウンロードすることを推奨します。 llama.cpp でも再量子化には明示的なフラグ(--allow-requantize)が必要で、通常は推奨されません。

MoE と量子化

MoE(Mixture-of-Experts) モデルでは、活性化するパラメータ(active params)と全パラメータ(total params)が異なります。 量子化の「ファイルサイズ」は total params に依存しますが、推論時の計算量は active params に近づきます。 したがって「パラメータ数だけで量子化の軽さを決めつけない」よう注意が必要です。

品質の測り方

量子化の良し悪しは、主に次の2軸で評価されます。

品質評価の軸
意味注意
perplexity言語モデルの予測精度の指標。低いほど良い傾向。タスク性能と完全には一致しない。
downstream benchmark実タスク(QA・コード・推論等)のスコア。モデル・言語・タスクで変動。
speed / size生成速度とファイルサイズ。ハードウェア依存。

単一モデル・単一タスクの結果を「すべてのモデルに当てはまる」と一般化してはいけません。 実務では、自分のタスクで試すのが最も確実です(チェッカーでまず選び、 実際に動かして判断)。

decision matrix(どれを選ぶか)

環境別の目安(あくまで一般的な目安)
状況第一候補理由
RAM/VRAM が厳しい配布一覧の小さい候補actual file sizeとestimateを先に確認。
同じモデルで迷うQ4/Q5/IQ系を比較同一revision・同じpromptで比べる。
品質優先・余裕ありQ6_K / Q8_0も候補大きさに見合う差があるか実測。
特定タスクで精度が必要複数を比較平均benchmarkだけでなく実タスクで確認。
限界の明示:上記は「一般的な目安」です。モデルアーキテクチャ・タスク・ハードウェア・配布元の量子化品質で変わります。 「Q4_K_M が常に最適」といった断定は行いません(研究証拠も参照)。

適用外と限界

  • 本ページの数値・表は一般的な目安。実測値ではありません。
  • 品質差はモデル・タスク・量子化元・imatrix 有無で変動。単一論文の結果を一般化しない。
  • MoE は active/total params が異なり、サイズと計算量が単純に比例しない。
  • ランタイム(LM Studio / llama.cpp 等)のバージョンで挙動が変わることがある。

更新履歴:2026-08-31 K-quant suffixの誤説明を修正し、IQ4_NL/IQ4_XS、実効bpwと実ファイル比較、研究の非一般化を更新。

選び方ワークシート(ご自身で埋める)

迷ったときは、次の項目を埋めてから決めます。架空の数値は入れません。ご自身の環境の実測値を使ってください。

量子化選択ワークシート
項目あなたの値
モデル規模(B)__ B
空きRAM / VRAM__ GB
使うタスクチャット / コード / 長文要約 等
最初の候補配布元の4-bit以上から、空きメモリに収まる実ファイル
比較候補同一revisionの別量子化(Q5/IQ/Q6等)
確認方法実際に動かして出力品質をチェック
鉄則:量子化名の序列だけで決めず、実際のファイルとタスクで判断する。 大きいファイルに変えても必要な品質差が出ない場合は、軽い候補へ戻せます。

よくある質問

Q4_K_M と Q5_K_M、どちらが良い?

一概には言えません。Q5_K_M は Q4_K_M より大きく・やや高精度な傾向がありますが、品質差はモデル・タスクで変動します。 詳細は Q4_K_MとQ5_K_Mの違い で比較しています。実ファイルが収まる候補同士を同一条件で比べます。

I-quant は K-quant より良い?

I-quantはimportance-aware/non-linearな方式を含みますが、同じ名前や公称bitだけでは比較できません。 ランタイム対応、実効サイズ、モデル・タスクによる差があり、「常にI-quantが優秀」ではありません。

Q8_0 なら元モデルと同じ?

Q8_0 は8-bit量子化で、FP16と同一ではありません。ファイルが大きくなる一方、タスクによっては小さい方式との差が限定的な場合もあります。 メモリに収まるかと、必要な品質差が出るかを別々に確認します。

imatrix 付きと付いていないの違いは?

imatrix 付きは、重要度に基づく高精度化の傾向があります。ただし「何をもって重要としたか」は計算時のデータに依存し、 自分のタスクで試すのが確実です。

よくある失敗例

  • 「Q4ならモデル全体が厳密に4bit」と思った:block overheadやtensor別の型割り当てがあり、実効bpwは方式・モデルで変わる。
  • 単一論文の結果を全モデルに当てはめた:8B単一モデルの知見を一般化しない(研究証拠)。
  • 再量子化して品質低下:すでに量子化済みをさらに量子化すると追加で劣化。高品質から直接、または配布元のファイルを使う。
  • MoE を Dense と同じように考えた:active/total params が異なり、サイズと計算量が比例しない。
  • 精度だけで選んでメモリ不足:Q8_0 等は重い。メモリと品質のバランスで(メモリ目安)。

用語の使い分け

よく混ざる用語
用語意味注意
bit1重みの表現ビット数の目安実際はbpw(平均)で考える
bpwbits-per-weight(平均ビット数)K-quant は混合精度のため平均値
quant typeQ4_K_M 等の方式名方式ごとに配置・精度が異なる
imatrix重要度行列(量子化補助情報)品質向上の傾向、万能ではない
requantize量子化済みの再量子化品質追加劣化の恐れ、推奨されない

更新履歴:2026-07-18 追記(ワークシート・FAQ・失敗例・用語の使い分けを追加し、Pillar の文字数目標に接近)。