【Q4_K_M】量子化の読み方【Q5_K_L】

公開 更新

LLM(大規模言語モデル)でよく見るQ4_K_MやQ5_K_Lなどの量子化表記は 重みを何ビットで、どんな単位・方式で量子化しているか を表している。

Q4   _K   _M
│    │    └─ 混ぜ方のバリアント(S / M / L)
│    └──── K-quant(ブロック単位の改良量子化)
└──────── 1重みあたりのビット数

結論から書くと、迷ったらQ4_K_Mを選べば間違いない

  • Q4_K_M → 「4bitだが軽くて賢い」
  • Q5_K_M → 「実用上ほぼ無劣化」

Q4, Q5, Q6の意味

それぞれの数字はビット数を表している。

表記意味特徴
Q44bit量子化、24 = 16段階軽い・速い・VRAM節約
Q55bit量子化、25 = 32段階Q4より精度が上がりサイズも増す
Q66bit量子化、26 = 64段階ほぼFP16に近い
Q88bit量子化、28 = 256段階高精度・サイズ大

1bitごとに品質は緩やかに上がるが、サイズは確実に増える。

ちなみにLLMの学習で基準品質となっているFP16 は「16-bit Floating Point(16ビット浮動小数点)」の略。

Q8とFP16の品質差はほぼ測れないので、8bitが実用上の上限になっている。

_Kの意味

K = K-quantization(改良型ブロック量子化)

従来(Q4_0、Q4_1など):

  • 32個の重みをひとつのブロックにして、ブロックごとにFP16のスケールをひとつ持つ
  • ブロックの中はどの重みも同じ精度で、精度劣化がでやすい

K-quant:

  • 256個の重みのスーパーブロックの中に、16〜32個のサブブロックを置く二重構造
  • サブブロックごとのスケールと最小値を6bitに詰めて持つので、精度を上げつつメタデータを節約できる

現在では_Kが標準で、Q4_0〜Q5_1は旧式。ただしQ8_0だけは別で、8bitの標準形式として今も使われている(Q8_Kというファイル形式は無い)。

最近はさらに、同じビット数でも品質を上げたI-quant(IQ4_XSなど)や、どの重みが効くかを事前に測って量子化するimatrix(重要度行列)付きの配布も増えている。同じQ4_K_Mでもimatrix版のほうが品質は良い。

_Mの意味

_S, _M, _LはSmall, Medium, Largeの略。ビット数ではなく、テンソルごとの混ぜ方を表している。

バリアント中身傾向
_S全テンソルを同じ型で量子化速度・軽さ優先
_MattentionのVやFFNのdown投影など効きの大きい一部のテンソルだけ上位ビット(Q4_K_MならQ6_K)にする品質と速度のバランス
_L_Mよりさらに多くのテンソルを上位ビットにする品質寄り

ただしllama.cppの公式表記で_Lが付くのはQ3_K_Lだけである。Hugging Faceで見かけるQ4_K_L / Q5_K_L / Q6_K_Lは、bartowski氏が配布している独自の命名で、埋め込み層と出力層だけQ8_0に上げた変種。方向としては「品質寄り」で合っているが、公式のS / M / Lとは別系統の記法である。

量子化とサイズ

FP16は8bitの2倍のデータ量。といっても量子化でスケールなどのメタデータも追加されるのできっちり理論通りにはならない。Q4_K_Mは額面4bitだが実効は約4.85bit/重みになる。

形式実効ビットサイズ(FP16比)
FP16161.00
Q8_08.5約 0.53
Q6_K6.6約 0.41
Q5_K_M5.7約 0.36
Q4_K_M4.85約 0.30

具体例(7Bモデル)

形式サイズ
FP16約 14GB
Q8_0約 7GB
Q6_K約 5.5GB
Q5_K_M約 5GB
Q4_K_M約 4GB

※Q4_K_Mなら、B数の6〜7割がGB、と覚えると楽です。Gemma 3 12Bが8.15GB、Qwen3-VL 30Bが19.64GB、Qwen3-Next 80Bが48.4GB。小さいモデルほど埋め込み層の比率が大きいので、上振れする。

VRAM別のおすすめライン

VRAM量子化モデル
12GB7B Q8
16GB13B Q5 / Q6
24GB13B Q8 / 30B Q4
48GB70B Q4

← 記事一覧へ