モデルが実際に必要とするVRAMの量
これを決めるのは2つの数字です。固定された重みと、提供するコンテキストの量に応じて増えるKVキャッシュです。誤った答えのほとんどは、後者を前者から推定しようとすることから生じます。
簡潔な答え
- Weights
- パラメータ数(十億単位) × パラメータあたりのバイト数。70Bを4-bitにすると35 GBになります。
- KVキャッシュ
- 2 × レイヤー数 × KVヘッド数 × ヘッド次元 × バイト数(トークンあたり)。パラメータ数とは無関係です。
- Overhead
- アクティベーション、CUDAコンテキスト、アロケーターの断片化のために約15%を加算します。
- 落とし穴
- 重みを4-bitに量子化しても、キャッシュは量子化されません。一般的などのスタックでもFP16のままです。
計算式
ここには、2つ目のモデルに直面しても通用する経験則はありません。計算全体はわずか3行なので、係数を鵜呑みにするよりも、実際に計算する価値があります。
# 1. Weights
weights_gb = parameters_in_billions × bytes_per_parameter
# 2. KV cache, per token — then multiplied by the context you serve
bytes_per_tok = 2 × layers × kv_heads × head_dim × cache_bytes
cache_gb = bytes_per_tok × context_tokens × batch / 1024³
# 3. Everything else
total_gb = (weights_gb + cache_gb) × 1.15
2となっているのは、トークンごとにKとVという2つのテンソルがあるためです。bytes_per_parameterはBF16で2、FP8で1、4-bitで0.5です。cache_bytesは別枠の数値であり、この区別を怠ることが誤った答えの最も多い原因です。詳しくは下記をご覧ください。
重み
簡単な半分です。パラメータ数に対して正確に線形であり、決めるべきことは精度だけです。
| モデル | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) |
|---|---|---|---|
| Llama 3.1 8B | 16.0 GB | 8.0 GB | 4.0 GB |
| Qwen 3 32B | 64.0 GB | 32.0 GB | 16.0 GB |
| Llama 3.3 70B | 140.0 GB | 70.0 GB | 35.0 GB |
| Llama 3.1 405B | 810.0 GB | 405.0 GB | 202.5 GB |
4-bit量子化は品質を犠牲にしますが、その度合いは手法よりもモデルに大きく左右されます。カード1枚と4枚の違いを生むのであれば理にかなったトレードオフですが、すでに余裕がある状況では割に合いません。
KVキャッシュ
難しい半分であり、あるマシンが4kでは十分でも128kでは全く足りないかを決めるのはこちらです。これはレイヤー数とKVヘッド数に左右され、モデルの大きさには左右されません。
| モデル | トークンあたり | 4kコンテキスト | 8kコンテキスト | 32kコンテキスト | 128kコンテキスト |
|---|---|---|---|---|---|
| Llama 3.1 8B | 128 KB | 0.5 GB | 1.0 GB | 4.0 GB | 16.0 GB |
| Gemma 3 27B | 496 KB | 1.9 GB | 3.9 GB | 15.5 GB | 62.0 GB |
| Llama 3.3 70B | 320 KB | 1.3 GB | 2.5 GB | 10.0 GB | 40.0 GB |
| DeepSeek V3 671B-A37B (MoE) | 70 KB | 0.3 GB | 0.5 GB | 2.2 GB | 8.8 GB |
| Llama 3.1 405B | 504 KB | 2.0 GB | 3.9 GB | 15.8 GB | 63.0 GB |
最初の列より先に、最後の列を読んでください。4kコンテキストでは、ここに挙げたどのモデルでもキャッシュは誤差の範囲です。128kになると、4-bitの70Bモデルの重みよりも大きくなります。DeepSeek V3が例外なのは、その潜在アテンションが設計上キャッシュを圧縮するためです。だからこそ、このリストで最大のモデルでありながら長いコンテキストでも使用できるのです。
見積もりが誤る箇所
キャッシュをパラメータ数から推定すること。最もよくある誤りで、上で示した例そのものです。27Bモデルが70Bモデルより多くのキャッシュを必要とすることもあります。
4-bitの重みはキャッシュも4-bitになると思い込むこと。実際はそうなりません。AWQとGPTQが量子化するのは重みだけで、FP8 KVを明示的に有効にしない限りキャッシュはFP16のままです。70Bモデルの場合、4-bit・128kコンテキストで重みが35 GB、キャッシュが40 GBになります。
1リクエスト分だけでサイジングすること。キャッシュは同時実行シーケンスごとに必要です。8人のユーザーに同時に提供するには、キャッシュも8倍必要になります。詳しくは下記をご覧ください。
オーバーヘッドを見落とすこと。アクティベーション、CUDAコンテキスト、アロケーターの断片化は実在するものです。15%は意図的に余裕を持たせた見積もりであり、これを完全に無視すると、「収まるはずの」モデルが読み込めないという事態を招きます。
複数カードのVRAM合計だけで数えること。24 GBカード4枚は96 GBカード1枚ではありません。テンソル並列化でモデルを分割することはできますが、その場合レイヤーごとにリンク越しの同期が発生します。詳しくはNVLinkガイドをご覧ください。
MoEをアクティブパラメータでサイジングすること。DeepSeek V3はトークンあたり37Bを活性化させますが、メモリには671B全体を保持する必要があります。アクティブパラメータが予測するのは速度であり、読み込めるかどうかを決めるのは総パラメータ数です。
具体例
8kコンテキスト・1リクエストにおける、重み・キャッシュ・オーバーヘッドを合わせた必要メモリの総量です。これは、コンフィギュレーターがカタログ内のすべての構成に対して実行しているのと同じ計算です。
| モデル | BF16 / FP16 | FP8 | 4-bit (AWQ, GPTQ) | 収まる最小のノード |
|---|---|---|---|---|
| Llama 3.1 8B | 20 GB | 10 GB | 6 GB | NVIDIA L4 |
| Mistral Small 24B | 57 GB | 28 GB | 15 GB | NVIDIA L4 |
| Gemma 3 27B | 67 GB | 33 GB | 20 GB | NVIDIA L4 |
| Qwen 3 32B | 76 GB | 38 GB | 21 GB | NVIDIA L4 |
| Llama 3.3 70B | 164 GB | 82 GB | 43 GB | 2 × NVIDIA L4 |
| Mixtral 8×22B (MoE) | 326 GB | 163 GB | 83 GB | 4 × NVIDIA L4 |
| Qwen 3 235B-A22B (MoE) | 542 GB | 271 GB | 137 GB | 8 × NVIDIA L4 |
| DeepSeek V3 671B-A37B (MoE) | 1,544 GB | 772 GB | 386 GB | 8 × NVIDIA A100 PCIe |
| Llama 3.1 405B | 936 GB | 468 GB | 237 GB | 10 × NVIDIA L4 |
最後の列は、モデルを4-bit・8kコンテキストで収められる、当社カタログの中で最も安価なノードと、メモリ帯域幅が許す単一ストリームの生成速度です。スループットの数値は意図的に控えめに設定され、公開されている測定値と照らし合わせて調整されています。保証ではなく、下限の目安として扱ってください。
複数のリクエストに同時対応する
デモ向けにサイジングしたマシンが、製品を提供できないマシンになるのはここです。重みは一度だけ必要ですが、キャッシュは同時実行シーケンスごとに必要になります。
| 同時リクエスト数 | 4kコンテキスト | 8kコンテキスト | 32kコンテキスト |
|---|---|---|---|
| 1件のリクエスト | 42 GB | 43 GB | 52 GB |
| 4件のリクエスト | 46 GB | 52 GB | 86 GB |
| 16件のリクエスト | 63 GB | 86 GB | 224 GB |
| 64件のリクエスト | 132 GB | 224 GB | 776 GB |
Llama 3.3 70Bは4-bitにすると、どうやっても重みが35 GBになります。この表で35 GBを超える分はすべてキャッシュです。だからこそ、「ノートパソコンでは問題なく動いた」のと「本番環境では落ちた」が、同じモデル・同じカードでの出来事になり得るのです。
--max-model-lenは実際に提供するコンテキストに上限を合わせてください。vLLMは宣言された最大値に対してキャッシュを確保するため、実際には8kしか提供しないのに128kと宣言すると、必要な量の16倍のメモリを無駄にします。
それが意味するマシン
これまでの内容から導かれる、実践的な3つのルールです。重要な順に並んでいます。
- 可能な限り、複数枚より1枚が優れています。シャーディングも、レイヤー間の同期も、インターコネクトへの配慮も不要です。使用するコンテキストでモデルが1枚のカードに収まるなら、そのカードを選んでください。
- モデルの公称最大値ではなく、実際に使うコンテキストと実際の同時実行数でサイジングする。公称最大値は能力であって、要件ではありません。
- シャーディングが避けられない場合は、NVLinkを選ぶ。PCIeカード4枚への分割も機能しますが、NVLinkカード4枚への分割も機能し、かつ明確に高速です。その差にどれだけの価値があるかは、まさに次のガイドで扱います。
コンフィギュレーターは、この計算を全41構成に対してリアルタイムで実行します。モデル、精度、コンテキスト長を選ぶと、どのノードに収まるか、どのノードが1枚のカードに収められるか、そして月額費用がいくらかを表示します。使われている計算式はこのページと同じものなので、当社の計算に異論があれば、どこが違うのか正確に指摘できます。
お使いのモデルを、当社が貸し出すすべてのマシンと照合します。
コンフィギュレーターは、お支払いいただく前に、この計算を全41構成に対して実行します。
その他のガイド
- サイジング · 7分
NVLinkかPCIeか:ジョブに必要なのはどちらか
カード間の接続がスループットを左右する場合、まったく影響しない場合、そして間違ったノードに支払う前にどちらの状況かを見分ける方法。
ガイドを読む - サイジング · 9分
画像・動画モデル向けのカード選び
FLUX、SDXL、SD 3.5、Wan 2.1がそれぞれ必要とするVRAM、カタログ内でそれを収められるカード、そして収まる中で最も安いカードが借りるべき最適解とは限らない理由。
ガイドを読む - サイジング · 10分
量子化フォーマットの選び方
AWQ、GPTQ、GGUF、FP8それぞれがメモリ、速度、品質の面で払う代償。そして、重みが最も小さい形式が、最も小さいモデルになるとは限らない理由。
ガイドを読む