ローカルAIを動かすと必ず出てくるのが量子化(Q4_K_M、Q8_0、fp16…)。これは「重みを何ビットで持つか」の選択で、メモリ・精度・速度のトレードオフを決めます。結論から言えば、迷ったら Q4_K_M が標準。ただし用途によってはQ8_0が向きます。本記事は当サイトのA6000実測と、メモリの理論値で整理します。
量子化とは(ビットを削ってメモリを減らす)
モデルの重みは元々fp16(16bit)。これを8bit(Q8_0)や4bit(Q4_K_M)に圧縮すると、メモリ使用量がほぼビット比で減ります。代わりに数値の精度がわずかに落ちる——この「どこまで削ってよいか」が量子化選びです。
精度への影響は「思ったより小さい」
「4bitに削ると賢さが半減するのでは」と思われがちですが、実測は違います。Qwen2.5 7B(A6000)で、function callingの正答率と構造化出力の崩れを量子化別に測りました。
| 量子化 | 単発 正答 | JSON崩れ bad_json | ツール誤 wrong_tool | 引数誤 bad_args | 未呼出 no_call | 連鎖 成功 |
|---|---|---|---|---|---|---|
| fp16(無圧縮) | 100% | 0 | 0 | 0 | 0 | 67% |
| Q8_0 | 94% | 0 | 0 | 2 | 0 | 56% |
| Q4_K_M(標準) | 90% | 0 | 0 | 0 | 4 | 67% |
要点: 壊れたJSON・誤ったツール選択は全量子化で0件(単発144試行中0)。量子化で落ちるのは僅かな判断(呼ぶ/呼ばない・引数の正しさ)だけで、構造化出力の“形”はQ4でも保たれる。連鎖は67/56/67%で単調劣化は出ず(9試行=小サンプル)。単発48試行/モデル・temp0.7・要検証(追試で確度を上げる)。
fp16→Q4_K_Mで単発正答は100%→90%とわずかに下がるものの、壊れたJSON・ツール誤選択は全量子化で0件。出力の「形」は崩れません。これはモデル族を問わず成立します。
| 量子化 | Qwen2.5 7B | Llama3.1 8B |
|---|---|---|
| Q4(標準) | 90% | 38% |
| Q8 | 94% | 46% |
| fp16(無圧縮) | 100% | 50% |
だが地力は別物。Llama3.1 8Bは日本語の文字列引数を破損させ(実例: 検索query=「バータカストは帮を食し」、メール件名=「参數」(本来「会議」)、雑談で誤って都市=「本国市」を生成)、ASCIIの数値・メールアドレスは正しいのに日本語タスクのvalidが50%止まり。連鎖でも同じ単調勾配(Q4 0%→Q8 11%→fp16 33%)だがQwen2.5 7Bの78%には遠く及ばない。日本語エージェントではモデル族選びがQ4/fp16の選択より遥かに効く。経験則・要検証。
量子化を強めても正答は単調に少し下がるだけで、急落はしません(A6000実測)。一方でモデルの“地力”の差(Qwen vs Llama)は量子化差より遥かに大きい。まず良いモデルを選び、その上で量子化を選ぶ——この順序が正解です。
メモリ削減量(どの量子化で何が載るか)
量子化の最大の効果はメモリです。目安は「1Bあたり」で次の通り(Q4_K_M基準は当サイトの動くか診断と同じ・経験則/要検証)。
| 量子化 | 1Bあたり | 7Bモデルの目安 | 位置づけ |
|---|---|---|---|
| fp16(無圧縮) | 約2.0GB | 約14GB | 最高精度・最重 |
| Q8_0 | 約1.0GB | 約7GB | ほぼ無劣化 |
| Q4_K_M(標準) | 約0.5GB | 約3.5GB | バランス・推奨 |
同じVRAMでも、Q4にすればfp16の約4倍の大きさのモデルが載ります。手元の機材で特定モデルが動くかは動くか診断で確認できます(量子化前提のメモリ目安つき)。
速度トレードオフ(A6000実測)
decode(生成)はメモリ帯域律速——重みをメモリから読み出す速さが効きます。だから重みが小さい量子化ほど速い。これをA6000で、同一モデルを3つの量子化で実測して確かめました。
| モデル | 量子化 | 速度 tok/s | 電力効率 tok/s/W | Q4比 |
|---|---|---|---|---|
| Qwen2.5 7B | Q4_K_M | 117.4 | 0.47 | 1.00x |
| Qwen2.5 7B | Q8_0 | 77.2 | 0.30 | 0.66x |
| Qwen2.5 7B | F16 | 45.1 | 0.17 | 0.38x |
| Llama3.1 8B | Q4_K_M | 111.2 | 0.46 | 1.00x |
| Llama3.1 8B | Q8_0 | 73.6 | 0.28 | 0.66x |
| Llama3.1 8B | F16 | 43.1 | 0.15 | 0.39x |
Q4_K_M は Q8_0 の約1.5倍、fp16 の約2.6倍速い。この比は両族でほぼ同じで、量子化が速度を左右する主因がメモリ帯域であることを示します。電力効率(tok/s/W)も Q4 が最良なので、24時間の常時稼働ほど Q4 が効きます。
精度は前述の通り Q4 でもほとんど落ちず、構造化出力の「形」も崩れません。つまり Q4_K_M は速度・メモリ・電力で得て、精度の損は小さい——これが「迷ったら Q4」の実測的な裏付けです。
検証DBでの量子化方針も同じで、小さいモデル(〜2B)は Q8_0(軽く精度優先)、中〜大(3B〜)は Q4_K_M(まずメモリに載せる)を基本にしています。機材×モデル×量子化の全数値は検証DB(量子化・モデル族でフィルタ可)で確認できます。
計測条件: A6000・ollama 0.30.8・本計測2回平均・num_predict=256・temperature=0。電力は nvidia-smi の GPU power.draw 平均(測定境界はGPUのみ・要検証)。
結論:どれを選ぶか
- 迷ったら Q4_K_M。精度低下は小さく、メモリ効率が良い。
- 精度を最優先、または小さいモデルなら Q8_0。
- メモリがギリギリなら Q4_K_M で載せる。それ以下の強圧縮に進む前に、まずモデルを一段小さくする方が安全なことが多い(経験則/要検証)。
- 「そもそも載るか」はメモリで決まります。まず動くか診断で確認を。
量子化は「賢さを削る」より「載せて・速くするための実用技術」です。精度より先に、良いモデル選びと用途に十分なサイズが効きます。各数値の測り方は測定プロトコルに、機材選びは機材の選び方にまとめています。