How much VRAM an LLM needs: formulas and tables
- Weights are one multiplication: parameters × bytes per format. 70B in FP8 = 70 GB; in INT4 = 35 GB
- A 128K context on Llama 3 70B adds another 40 GB, for a single user
- Llama 2 7B (old-style attention) eats 512 KB per token; Llama 3 70B with GQA only 320 KB
- The KV cache gets the leftovers: ~90% of card memory minus weights minus 1–5 GB for CUDA graphs
- Some FP8 profiles do not save memory at startup: weights load in BF16 first
What the memory budget is made of
NVIDIA’s NIM engine claims a gpu_memory_utilization share of the card (0.9 by default) and lays out, inside it: weights, overhead, peak activations and the KV cache. The cache is allocated greedily: “it expands to fill all remaining space”. So the number of concurrent users is not a setting. It is a remainder.
Weights: a single multiplication
Official formula: weight memory per card = parameters × bytes per parameter / TP (tensor-parallel card count). Bytes per parameter: 2 for BF16/FP16, 1 for FP8, 0.5 for INT4 and NVFP4 (real NVFP4 checkpoints land nearer 0.56 once the block scales and the unquantised embeddings are counted: NVIDIA’s Llama 3.3 70B FP4 file is 42.7 GB).
| PARAMETERS | FP16 / BF16 | FP8 | INT4 / NVFP4 |
|---|---|---|---|
| 7B | 14 GB | 7 GB | 3.5 GB |
| 8B | 16 GB | 8 GB | 4 GB |
| 13B | 26 GB | 13 GB | 6.5 GB |
| 70B | 140 GB | 70 GB | 35 GB |
| 120B | 240 GB | 120 GB | 60 GB |
| 405B | 810 GB | 405 GB | 202.5 GB |
KV cache, and why a 7B eats more than a 70B
The second half of the bill: the model stores keys and values for every token it has read. Formula: 2 × layers × KV heads × head dimension × bytes per value, per token (KV heads, not attention heads: Llama 3 70B has 64 attention heads but only 8 KV heads); volume grows linearly with sequence length and with parallel requests.
| MODEL, ATTENTION | PER TOKEN | 4K | 32K | 128K |
|---|---|---|---|---|
| Llama 2 7B, FP16, MHA | 512 KB | 2 GB | 16 GB | 64 GB |
| Llama 3 70B, GQA | 320 KB | 1.25 GB | 10 GB | 40 GB |
| Llama 3.1 8B, BF16, GQA | 128 KB | 0.5 GB | 4 GB | 16 GB |
The counter-intuitive part: the 7B with old multi-head attention spends 512 KB per token, the 70B with grouped-query attention: 320 KB. Ten times the model, 38% less cache. “How much context fits” does not follow from parameter count. Add the tables up: a 70B in FP16 with a 128K context is 140 GB of weights + 40 GB of cache, 180 GB for one person.
The overhead you only see in logs
CUDA graph capture takes “1 to 5 GB depending on GPU architecture and model size” by NVIDIA’s own estimate. And a trap that never makes a slide: for some profiles “FP8 quantization happens on the fly, implying that BF16 weights must be loaded into memory first”. Eight bits save memory during inference, but startup demands BF16-sized room. Check the specific profile before you buy.
Card × model × context × users
Method: card capacity × 0.9, minus weights, minus ~2 GB for graphs and activations; divide the remainder by one session’s cache. These are memory ceilings; latency cuts them further, and if the seats are virtual desktops rather than one API, MIG and vGPU count differently.
8B-class model, FP8 weights (8 GB), FP16 KV cache at 128 KB/token (an FP8 cache halves it and doubles every count). Concurrent sessions:
| CARD | FREE FOR CACHE | 8K | 32K | 128K |
|---|---|---|---|---|
| RTX PRO 4500, 32 GB | 18.8 GB | 18 | 4 | 1 |
| RTX PRO 5000, 48 GB | 33.2 GB | 33 | 8 | 2 |
| RTX PRO 5000, 72 GB | 54.8 GB | 54 | 13 | 3 |
| RTX PRO 6000, 96 GB | 76.4 GB | 76 | 19 | 4 |
| H200 NVL, 141 GB | 116.9 GB | 116 | 29 | 7 |
70B-class model with GQA, cache 320 KB/token:
| CARD | WEIGHTS | 8K | 32K | 128K |
|---|---|---|---|---|
| RTX PRO 4500, 32 GB | INT4 | – does not fit – | ||
| RTX PRO 5000, 48 GB | INT4 | 2 | ✗ | ✗ |
| RTX PRO 5000, 72 GB | INT4 | 11 | 2 | ✗ |
| RTX PRO 6000, 96 GB | INT4 | 19 | 4 | 1 |
| RTX PRO 6000, 96 GB | FP8 | 5 | 1 | ✗ |
| H200 NVL, 141 GB | INT4 | 35 | 8 | 2 |
| H200 NVL, 141 GB | FP8 | 21 | 5 | 1 |
Look at the 48 GB row: the card technically “holds” a 70B at four bits, but only 6.2 GB survive the weights: two sessions of 8K tokens, and a single 32K context does not fit at all.
What real measurements add
Arithmetic gives the memory ceiling; latency rules the experience. NVIDIA’s own NIM benchmarking numbers (NIM 1.8.0) for Llama 3.1 8B on one H100 80 GB:
| PRECISION, IN/OUT | USERS | FIRST TOKEN | THROUGHPUT |
|---|---|---|---|
| FP8, 200/200 | 200 | 0.47 s | 13,348 tok/s |
| FP8, 1,000/1,000 | 250 | 1.9 s | 11,528 tok/s |
| FP8, 20,000/2,000 | 250 | 279 s | 1,338 tok/s |
| BF16, 1,000/1,000 | 250 | 5.4 s | 7,435 tok/s |
At a 20,000-token input the first token takes well over four minutes: the service is technically alive, and nobody will use it. The most direct lever is prompt length. NIM’s own log hands you the number: cutting context to 4,096 freed 15.1 GB in the documented example.
Cache quantisation: claim vs measurement
NVIDIA’s NVFP4 KV cache in TensorRT-LLM cuts cache memory by up to half against FP8 and, in NVIDIA’s long-context and cache-reuse scenarios, improves time to first token by up to 3×, at a small accuracy cost (MMLU-Pro on Qwen3-480B: 78.2% BF16 → 77.4% NVFP4); it arrived first on the B200 class, so confirm support for your card. Format alone guarantees nothing: the same idea in llama.cpp (a q4_0 KV cache) on unified memory collapsed prompt speed from 282.7 to 21.3 tok/s in one owner’s test because that path had no fused kernels. Hardware-accelerated NVFP4 in TensorRT-LLM wins; software unpacking loses. The engine and the silicon deliver the benefit, not the format.
What we supply
Eurokommerz supplies the full ladder across the EU: RTX PRO 4500 (32 GB) for models up to 13B, RTX PRO 5000 (48 / 72 GB) for 8–13B with long context, RTX PRO 6000 (96 GB) for a 70B in FP8 on one card, and H200 NVL (141 GB HBM3e) for long-context 70B serving at scale.
FAQ
What do two cards buy over one?
We need memory for more agents, not bigger models. What then?
The model fits on paper but the engine reports OOM. Why?
Is a 70B 140 GB or 131 GB?
Can I calculate the cache for any model?
Sizing a deployment? Tell us the model, the context length and the number of users. We will calculate the footprint and say where a single card ends and a server begins. We reply within one business day.
Request a quoteWe reply within one business day