quantization / pillar
GGUFの量子化とは?Q2〜Q8・K-quant・I-quantの違い
量子化(くあんたいか)とは、モデルの重みを少ない精度で保存し、ファイルサイズと実行時メモリを小さくする手法です。
GGUFでは Q4_K_M のような名前で表記されます。軽さと品質のバランスを理解するのが選び方の鍵です。
量子化の目的
モデルは本来、高精度(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 のようになります。
| 表記例 | おおまかなbpw | 傾向 |
|---|---|---|
| Q2_K | 約2.x | かなり軽い。品質低下に注意。 |
| Q3_K | 約3.x | 軽さ優先。 |
| Q4_K_M | 約4.85 | サイズと品質のバランス(定番)。 |
| Q5_K_M | 約5.5 | Q4より品質寄り、やや重い。 |
| Q6_K | 約6.6 | 品質寄り。 |
| Q8_0 | 約8.5 | ほぼFP16に近い。重い。 |
| F16 / F32 | 16 / 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 より小さく・品質を保とうとする設計で、最近のモデルでよく見かけます。
一方で、ランタイムやツールによる対応状況に注意が必要な場合があります。
imatrix(重要性行列)
imatrix は、量子化時に「どの重みが重要か」を評価するための情報です。これを使って量子化すると、
同じビット数でも品質を維持しやすくなる傾向があります。ファイル名に imatrix 等の表記が入ることがあります。
imatrix は「高品質量子化の目安」の一つですが、何をもって重要としたかは計算時のデータセットに依存します。 配布元がどう作ったかを過信せず、自分のタスクで試すのが確実です。
requantization(再量子化)の危険
すでに量子化された GGUF を、さらに別の精度に量子化し直す(requantization)と、 品質が追加で劣化することがあります。原則として、高い精度(FP16 等)から直接目的の精度に量子化するのが望ましいです。
--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 | 精度寄り。 |
| 特定タスクで精度が欲しい | 複数を比較 | タスクで試すのが確実。 |
適用外と限界
- 本ページの数値・表は一般的な目安。実測値ではありません。
- 品質差はモデル・タスク・量子化元・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、どちらが良い?
一概には言えません。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 付きは、重要度に基づく高精度化の傾向があります。ただし「何をもって重要としたか」は計算時のデータに依存し、 自分のタスクで試すのが確実です。
用語の使い分け
| 用語 | 意味 | 注意 |
|---|---|---|
| bit | 1重みの表現ビット数の目安 | 実際はbpw(平均)で考える |
| bpw | bits-per-weight(平均ビット数) | K-quant は混合精度のため平均値 |
| quant type | Q4_K_M 等の方式名 | 方式ごとに配置・精度が異なる |
| imatrix | 重要度行列(量子化補助情報) | 品質向上の傾向、万能ではない |
| requantize | 量子化済みの再量子化 | 品質追加劣化の恐れ、推奨されない |
更新履歴:2026-07-18 追記(ワークシート・FAQ・失敗例・用語の使い分けを追加し、Pillar の文字数目標に接近)。