Local LLM VRAM requirements come down to three things: the weight file, the KV cache for your context, and some runtime overhead. For Qwen2.5-7B-Instruct at 4-bit (Q4_K_M) with an 8K context, that adds up to 4.92 to 5.42 GiB, so it fits an 8 GB card. The same model unquantized (BF16) needs 14.75 to 15.44 GiB. A 27B at 4-bit needs about 18 GiB, and a 70B in BF16 about 137 GiB.

Quick sizes

Model and file Weights (GiB) KV cache at 8K (GiB) Total at 8K context (GiB)
Qwen2.5-7B-Instruct Q4_K_M 4.36 0.44 4.92 to 5.42
Llama 3.1 8B Instruct BF16 14.96 1.00 16.08 to 16.83
Gemma 3 27B IT Q4_0 (QAT) 16.05 1.03 17.20 to 17.97
Llama 3.3 70B Instruct BF16 131.42 2.50 134.04 to 137.22

One sequence, FP16 KV cache, llama.cpp. Then compare the high end with what your card has free:

Card size Usable for the model Examples that fit at 8K
8 GB 7 GiB 7B at Q4_K_M
12 GB 11 GiB Gemma 3 12B Q4_0, Qwen3-8B Q6_K
16 GB 14 GiB (15 on RTX 4060 Ti and 4070 Ti SUPER) Qwen3-14B Q4_K_M or Q5_K_M
24 GB 22 GiB Gemma 3 27B Q4_0, Llama 3.1 8B in BF16

The usable figure is the card minus a reserve for the desktop and driver: 1 GiB on most 8 and 12 GB cards, 2 GiB on most 16, 24 and 32 GB cards. Full per-tier tables are in what fits on 12, 16 and 24 GB.

Part 1: weights, from the file size

For BF16, bytes are close to parameters × 2. Llama 3.1 8B Instruct has 8,030,261,248 parameters, so 2 bytes each is 16,060,522,496; the four shards add up to 16,060,556,376 bytes, 33,880 bytes more because of shard headers. For quantized files, the parameter count tells you much less. Read the actual file size.

File Bytes GiB
Llama 3.2 3B Instruct, official BF16 6,425,529,048 5.98
Llama 3.1 8B Instruct, official BF16 16,060,556,376 14.96
Qwen2.5-7B-Instruct BF16 15,231,233,024 14.19
Gemma 3 12B IT GGUF Q4_0 8,074,473,920 7.52
Gemma 3 27B IT GGUF Q4_0 17,229,630,496 16.05
Gemma 3 27B IT, official BF16 54,864,980,440 51.10
Llama 3.3 70B Instruct, official BF16 141,107,497,872 131.42

Qwen2.5-7B comes from its model.safetensors.index.json (revision a09a35458c702b33eeacc393d103063234e8bc28). The Llama and Gemma BF16 rows are sums of the safetensors sizes in the Hugging Face listings, because those repos are gated. The Gemma Q4_0 files are Google’s quantization-aware-trained GGUFs. Meta doesn’t publish GGUFs for Llama 3.x, so there’s no Llama GGUF row. Why 4-bit files are bigger than you’d expect: 4-bit vs 8-bit vs FP16.

Part 2: the KV cache grows with every token

For standard grouped-query-attention models, the FP16 cache is:

2 × layers × KV heads × head dim × tokens × sequences × 2 bytes

So each model has a fixed cost per token:

Model Layers × KV heads × head dim Bytes per token KiB per token
Llama 3.2 1B Instruct 16 × 8 × 64 32,768 32
Llama 3.2 3B Instruct 28 × 8 × 128 114,688 112
Llama 3.1 8B Instruct 32 × 8 × 128 131,072 128
Qwen2.5-7B-Instruct 28 × 4 × 128 57,344 56
Qwen3-32B 64 × 8 × 128 262,144 256
Llama 3.3 70B Instruct 80 × 8 × 128 327,680 320

Llama values come from Meta’s llama-models repository (sku_list.py, commit 0e0b8c5), with head dim = dim ÷ n_heads. Qwen values come from each config.json.

At 8K tokens, Llama 3.1 8B needs 1.00 GiB of KV and Llama 3.3 70B 2.50 GiB. At 32K that’s 4.00 and 10.00 GiB. Gemma 3 grows more slowly because five of every six layers keep only a 1,024-token window; see KV cache size by model. A Q4_K_M weight file doesn’t shrink this term; the cache stays FP16 unless you set it otherwise (-ctk / -ctv in llama.cpp). See FP16 vs Q8_0 vs Q4_0 KV cache.

Part 3: runtime overhead

Engines need working memory on top of weights and cache. We use a range rather than a fixed multiplier. For Gemma 3 27B Q4_0 on an RTX 4090 at 8K with llama.cpp, the activation workspace is 67,108,864 to 690,538,804 bytes and the engine reserve 67,108,864 to 268,435,456 bytes. vLLM reserves more; see llama.cpp vs vLLM vs Ollama.

How well does this match reality? We have three real measurements: llama.cpp running Qwen2.5-3B-Instruct Q4_K_M on an RTX 4090 (calibrations rt-qwen2.5-3b-instruct-q4km-4090-ctx512, -ctx2048, -ctx8192). Process GPU memory was 2.31, 2.37 and 2.59 GiB at 512, 2,048 and 8,192 tokens. The estimated ranges were 2.10 to 2.52, 2.16 to 2.57 and 2.37 to 2.80 GiB, so each measurement landed inside. That’s one model on one card, so treat it as a sanity check, not proof. We haven’t measured any Llama or Gemma model.

Big models

Llama 3.3 70B in BF16 doesn’t fit one 80 GB H100 (78 GiB usable) or one DGX Spark (112 GiB usable); the weights alone are 131.42 GiB. Separate GPUs don’t pool memory by default, so two 24 GB cards aren’t one 48 GB card. See two GPUs and unified memory.

The largest open mixture-of-experts models are far beyond one consumer card. Ling-3.1-flash has an official mixed-FP8 index of 573,753,281,152 bytes, and its model card lists 8 × H200 or 4 × GB300. Muse Spark Open has BF16 shards totaling 1,644,333,393,864 bytes and NVFP4 shards totaling 533,011,023,472 bytes; Meta’s card states at least 2 TB of VRAM for BF16 and 700 GB for NVFP4. Every expert has to be in memory even though only a few run per token: MoE models load every expert.

Size any model in four steps

  1. Pick the exact file you’ll download and note its size.
  2. Work out the KV cache at the context you’ll really use, times the number of parallel requests.
  3. Add the overhead range for your engine.
  4. Compare the high end with your card’s size minus the reserve, then check it in the calculator with that model and card.

Model pages for the examples above: Qwen2.5-7B-Instruct, Llama 3.1 8B Instruct, Gemma 3 27B IT, Llama 3.3 70B Instruct. If a model fits on paper and still runs out of memory, read why file size isn’t the VRAM you need.

Numbers are estimates from model configs and published file sizes, not measurements, except where measured runs are named. How we calculate.

Hybrid layouts are not the GQA table

Qwen3.8-27B and Qwen3.8-Flash-Next mix a few attention layers with Gated DeltaNet layers. Only the attention layers keep a KV cache that grows with context; the Gated DeltaNet layers keep a fixed-size state. Applying the KV formula above to every layer would overstate their cache. Being mixture-of-experts doesn’t shrink the Flash-Next file either. The table below shows the calculator’s split for both, at 8K and 32K, one sequence, FP16 KV cache. We haven’t measured either model. More in hybrid attention VRAM, on the Qwen3.8-27B and Qwen3.8-Flash-Next pages, or in the KV cache calculator.

Calculator split for Qwen3.8-27B and Qwen3.8-Flash-Next

Each row is the no-device auto-selected file, 1 sequence, FP16 KV. Attention-layer KV grows with tokens. The Gated DeltaNet state does not. Totals add runtime extras on top of the file. These are formula estimates.

ModelAuto-selected fileKV at 8,192KV at 32,768Recurrent stateTotal at 8,192
Qwen3.8-27BGGUF Q4_K_M (mradermacher)
16,810,714,848 bytes (15.66 GiB)
536,870,912 bytes2,147,483,648 bytes150,994,944 bytes
Same at 32,768 tokens
16.43 GiB–19.74 GiB
Qwen3.8-Flash-NextGGUF Q4_K_M (bartowski)
119,599,030,080 bytes (111.39 GiB)
201,326,592 bytes805,306,368 bytes56,623,104 bytes
Same at 32,768 tokens
111.75 GiB–131.53 GiB

FAQ

How much VRAM do I need for a 7B model?

About 5 to 5.5 GiB at 4-bit (Q4_K_M) with an 8K context, so an 8 GB card works. The same model in BF16 needs 14.75 to 15.44 GiB.

How much VRAM do I need for a 70B model?

In BF16, Llama 3.3 70B needs 134.04 to 137.22 GiB at 8K context. That's more than any single GPU we list, including an 80 GB H100 or a DGX Spark.

Is the download size a good estimate of VRAM?

It's the starting point, not the answer. Add the KV cache for your context length and some runtime overhead, then compare with what your card has free after the desktop takes its share.

Can two GPUs add up their VRAM?

Not automatically. Two 24 GB cards don't act as one 48 GB card; the model has to be split across them by the engine, and each card still needs room for its share plus overhead.

Numbers from calculator 0.3.0, model data 2026-10-02.1. Sources last checked 2026-10-28.