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) という平均値で考えます。なぜなら、 K-quant のように「層やテンソルごとに精度を変える」方式では、全体の平均が 4.0 や 4.85 のようになります。

bit数とbpwの関係(目安)
表記例おおまかなbpw傾向
Q2_K約2.xかなり軽い。品質低下に注意。
Q3_K約3.x軽さ優先。
Q4_K_M約4.85サイズと品質のバランス(定番)。
Q5_K_M約5.5Q4より品質寄り、やや重い。
Q6_K約6.6品質寄り。
Q8_0約8.5ほぼFP16に近い。重い。
F16 / F3216 / 32ほぼ無圧縮。通常は不要。

bpw はあくまで目安です。正確な値はファイルのメタデータや llama.cpp の仕様を参照。 「Q4なら必ず4bit」は不正確——K-quant は混合精度です。

legacy quants(Q2_0 等)

最も単純な方式は、テンソル全体を一律のビット数で量子化する legacy quant(例: Q4_0, Q5_0)です。 実装が単純で広く扱えますが、同じbpwなら K-quant に比べて品質が劣る傾向があります。そのため現在は K-quant / I-quant が標準的に使われることが多いです。

K-quant(混合精度)

K-quant(例: Q4_K_M, Q5_K_M)は、層やテンソルの種類ごとに量子化精度を切り替える 混合精度(mixed precision)方式です。重要度の高いテンソル(attention の一部など)は細かく、 そうでないものは粗く、といった工夫で、同じbpwでも品質を維持しやすくなります。

  • _S / _M / _L はブロックサイズの違い(M が中間、多くの場合バランス良し)。
  • 「M」は「medium blocksize」の意味で、品質とサイズの妥協点として広く使われます。

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

I-quant(IQ系)

I-quant(例: IQ4_XS, IQ3_XXS)は、さらに圧縮効率を高めた方式です。 K-quant より小さく・品質を保とうとする設計で、最近のモデルでよく見かけます。 一方で、ランタイムやツールによる対応状況に注意が必要な場合があります。

使い分けの目安:まず K-quant(Q4_K_M 等)で試し、さらに軽くしたい・配布侧が推奨している場合に I-quant を検討。 ただし品質差はモデル次第です。

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 が厳しいQ4_K_M / IQ4_XS軽く動かしやすい。
少し余裕があるQ5_K_M品質を少し取りにいく。
品質優先・余裕ありQ6_K / Q8_0精度寄り。
特定タスクで精度が欲しい複数を比較タスクで試すのが確実。
限界の明示:上記は「一般的な目安」です。モデルアーキテクチャ・タスク・ハードウェア・配布元の量子化品質で変わります。 「Q4_K_M が常に最適」といった断定は行いません(研究証拠も参照)。

適用外と限界

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

更新履歴:2026-07-18 Pillar 拡張(bits/bpw、legacy/K/I、imatrix、requant、MoE、decision matrix、限界を追加)。

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

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

量子化選択ワークシート
項目あなたの値
モデル規模(B)__ B
空きRAM / VRAM__ GB
使うタスクチャット / コード / 長文要約 等
まず試す量子化Q4_K_M(または配布元推奨)
比較候補Q5_K_M / Q6_K(必要なら)
確認方法実際に動かして出力品質をチェック
鉄則:理論だけで決めず、実際に動かして判断する。Q4_K_M で品質が足りなければ Q5_K_M 等へ。 逆に Q4_K_M で十分なら、それ以上の精度はメモリの無駄になる場合があります。

よくある質問

Q4_K_M と Q5_K_M、どちらが良い?

一概には言えません。Q5_K_M は Q4_K_M より大きく・やや高精度な傾向がありますが、品質差はモデル・タスクで変動します。 詳細は Q4_K_MとQ5_K_Mの違い で比較しています。まず Q4_K_M を試し、必要なら比較するのが現実的です。

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

同じbpwなら I-quant の方が圧縮効率が高く、品質を保ちやすい設計ですが、ランタイムの対応やモデルによる差があります。 「常に I-quant が優秀」ではありません。

Q8_0 なら元モデルと同じ?

Q8_0 は FP16 に近い品質になりやすいですが、完全に同一というわけではなく、ファイルサイズは大きくなります。 メモリに余裕があって「できるだけ品質を保ちたい」場合の選択肢です。

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

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

よくある失敗例

  • 「Q4なら必ず4bit」と思った:K-quant は混合精度。bpw は平均値(例: Q4_K_M ≒ 4.85)。
  • 単一論文の結果を全モデルに当てはめた: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 の文字数目標に接近)。