localaiforum
ログイン
ガイド › ハードウェア

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実演

  1. 使える予算:16 GB × 0.85 ≈ 13.6 GB。デスクトップ、ブラウザ、ドライバがすでに0.5〜1 GBを確保している。10〜20%の余裕は贅沢ではなく鉄則。
  2. 夢:32B Q4_K_M——重みだけで19.2 GB。最初から無理。
  3. 現実:8kコンテキストの14B Q4_K_M:8.4 + 1.6 + 1.5 = 11.5 GB。約15%の余裕で収まる。これで出荷。
  4. 次に32kコンテキストが欲しくなる:8.4 + 6.4 + 1.5 = 16.3 GB。予算超過。
  5. 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ティアへ。量子化ビットがなぜその値なのかは量子化へ。

関連: 量子化 · KVキャッシュ · GPUティア