VRAM計算
「このカードで動くか」という問いはすべて算数であって、伝承ではない。合計VRAMは重み+KVキャッシュ+活性化とエンジンのオーバーヘッドの固定分。パラメータにビット数を掛けられるなら、1円も払わずにマシンのサイジングができる。このページは式、計算表、任意のカードにコピーできる16 GBの実演を示す。
式
合計VRAM = 重み + KVキャッシュ + オーバーヘッド
重み (GB) = パラメータ数 (B) × 重みあたりビット数 ÷ 8
KVキャッシュ = トークンあたりバイト数 × コンテキスト長 ([KVキャッシュ](/guide/kv-cache)を参照)
オーバーヘッド ≈ 1–2 GB (活性化、ドライバコンテキスト、バッファ、断片化)
一般的なGGUF量子化の重みあたり実効ビット数:Q4_K_M ≈ 4.8、Q5_K_M ≈ 5.7、Q6_K ≈ 6.6、Q8_0 ≈ 8.5。パラメータ数にこれを掛けて8で割れば、ディスク上のファイルサイズの数%以内に出る。
暗記する価値がある経験則。10億パラメータあたりのGB。
- Q4_K_M ≈ 0.6 GB——日常の実働馬
- Q5_K_M ≈ 0.7 GB
- Q6_K ≈ 0.8 GB——多くの目にほぼ劣化なし
- Q8_0 ≈ 1.1 GB——透過的。Q4のほぼ2倍のコスト
- fp16/bf16 = 2.0 GB——学習と本格的なファインチューニングの領域
計算例
KVキャッシュのサイズはアーキテクチャ次第。現代のGQAモデルは8B〜32Bクラスでfp16 KVならトークンあたり概ね128〜256 KB、70B級で約320 KB。正確な式はKVキャッシュにある。ここでは足すだけ。オーバーヘッドは行あたり1.5 GBで計上。
Q4_K_M(重みあたり約4.8ビット):
| モデル | 重み | KV @ 8k | KV @ 32k | 合計 @ 8k | 合計 @ 32k |
|---|---|---|---|---|---|
| 8B | 4.8 GB | 1.0 GB | 4.2 GB | 7.3 GB | 10.5 GB |
| 14B | 8.4 GB | 1.6 GB | 6.4 GB | 11.5 GB | 16.3 GB |
| 32B | 19.2 GB | 2.1 GB | 8.4 GB | 22.8 GB | 29.1 GB |
| 70B | 42.0 GB | 2.6 GB | 10.5 GB | 46.1 GB | 54.0 GB |
Q6_K(重みあたり約6.6ビット):
| モデル | 重み | KV @ 8k | KV @ 32k | 合計 @ 8k | 合計 @ 32k |
|---|---|---|---|---|---|
| 8B | 6.6 GB | 1.0 GB | 4.2 GB | 9.1 GB | 12.3 GB |
| 14B | 11.6 GB | 1.6 GB | 6.4 GB | 14.7 GB | 19.5 GB |
| 32B | 26.4 GB | 2.1 GB | 8.4 GB | 30.0 GB | 36.3 GB |
| 70B | 57.8 GB | 2.6 GB | 10.5 GB | 61.9 GB | 69.8 GB |
飲み込むべき2つのパターン。Q6_KはQ4_K_Mより約35〜40%高くつく——しばしばGPUティア1つ分の差になる。そして32kコンテキストのKVは誤差ではない。小さいモデルでは重み自体に匹敵する。旧来のMHA設計(Llama-2世代)は4〜8倍大きいKVキャッシュを抱えていた。32kコンテキストが特殊ハードウェアを要求し、GQAモデルはしない理由である。
ロード時OOM対生成中OOM
- ロード時:重みだけで空きVRAMを超える。エンジンは起動を拒むか、レイヤーをCPUに退避して這う。正直で即時で、診断が容易。
- 生成中:重みは収まるが、KVキャッシュがトークンごとに育つ。新規セッションは正常に動き、40ターン後、RAGの投入やファイル貼り付けの後でキャッシュが余裕を食い潰し、回答の途中でプロセスが死ぬ。これが油断できない方——最初のプロンプトではなく、実際に到達するコンテキストでサイジングすること。
実際に起きる様子を見るには。
watch -n1 nvidia-smi --query-gpu=memory.used,memory.total --format=csv
サイジングワークシート:16 GB実演
- 使える予算:16 GB × 0.85 ≈ 13.6 GB。デスクトップ、ブラウザ、ドライバがすでに0.5〜1 GBを確保している。10〜20%の余裕は贅沢ではなく鉄則。
- 夢:32B Q4_K_M——重みだけで19.2 GB。最初から無理。
- 現実:8kコンテキストの14B Q4_K_M:8.4 + 1.6 + 1.5 = 11.5 GB。約15%の余裕で収まる。これで出荷。
- 次に32kコンテキストが欲しくなる:8.4 + 6.4 + 1.5 = 16.3 GB。予算超過。
- 3つの修正——1つ選ぶか組み合わせる。
- KVキャッシュをq8_0に量子化:6.4 → 3.2 GB、合計13.1 GB。収まった。
- 重みをQ4_K_SかIQ4_XSに下げ、さらに約0.5〜1 GB節約。
- 8B Q6_Kに下げる:6.6 + 4.2 + 1.5 = 12.3 GB。余裕たっぷり。
同じ5ステップは8 GBカードにも24 GBカードにも48 GBデュアルGPUにも効く。予算を立て、夢を見、引き、調整する。
常に余裕を残す
エンジンはバッチスロットごとにスクラッチバッファを確保し、長時間稼働するサーバでは断片化が蓄積し、同時実行はアクティブリクエストごとのKVを倍加させる。1回限りのベンチで「ちょうど収まる」構成は本番でOOMする。10〜20%の空きは稼働し続けるための税。各カードティアで実際に何が収まるかはGPUティアへ。量子化ビットがなぜその値なのかは量子化へ。