Skip to content
VRAMwise

Data table

Measured tokens/sec: GPUs and Apple Silicon running local LLMs

In measured llama.cpp benchmarks as of July 2026, an 8B model at Q4 generates about 128 tokens/sec on an RTX 4090, 112 t/s on an RTX 3090, 76 t/s on an M2 Ultra, and 24 t/s on a base M4 — and a 70B model needs 48 GB of VRAM to run at all, at 16–25 t/s.

Discrete GPUs: Llama 3 8B and 70B at Q4_K_M

All figures below are measured text-generation throughput (average over 1,024 generated tokens) from a single community benchmark suite run on identical model files, so rows are directly comparable. OOM = the model does not fit in that card's VRAM. Machine-readable copy: benchmarks.json.

Hardware VRAM (GB) Llama 3 8B Q4_K_M (tokens/s) Llama 3 70B Q4_K_M (tokens/s)
GeForce RTX 3070870.9OOM
GeForce RTX 4070 Ti1282.2OOM
GeForce RTX 3080 10GB10106.4OOM
GeForce RTX 408016106.2OOM
GeForce RTX 309024111.7OOM
GeForce RTX 409024127.7OOM
2 × RTX 309048108.116.3
2 × RTX 409048122.619.1
RTX 6000 Ada48131.018.4
A100 PCIe80138.322.1
H100 PCIe80144.525.0
Apple M1 Max (32-core GPU)64 unified34.54.1
Apple M3 Max (40-core GPU)64 unified50.77.5
Apple M2 Ultra (76-core GPU)192 unified76.312.1

Source & date: XiongjieDai, GPU-Benchmarks-on-LLM-Inference — llama.cpp, Llama 3 8B/70B Q4_K_M, average of 1,024 generated tokens. Retrieved 2026-07-13.

RTX 5090: newer models at Q4, 4k context

The RTX 5090 postdates the suite above; the figures below come from a separate llama.cpp test on Qwen3-family models at Q4_K_XL with a 4k context, so compare them against each other rather than row-for-row with the first table.

Model on RTX 5090 (32 GB) Params (B) Generation (tokens/s)
Qwen3 8B (Q4_K_XL)8.2185.9
Qwen3 14B (Q4_K_XL)14.8123.8
Qwen3 30B-A3B MoE (Q4_K_XL)30.5 (≈3.3 active)234.3
Qwen3 32B (Q4_K_XL)32.861.4

Source & date: Hardware Corner, RTX 5090 LLM benchmarks — llama.cpp, Q4_K_XL quantization, 4k context. Retrieved 2026-07-13.

Apple Silicon: 7B Q4_0 generation across the whole lineup

The canonical Apple-to-Apple comparison is the llama.cpp maintainers' benchmark thread: identical LLaMA 7B v2 Q4_0 model, 128 generated tokens, all layers on GPU. Ranges reflect multiple submissions per chip.

Chip Peak bandwidth (GB/s) 7B Q4_0 generation (tokens/s)
M168.2514.2
M210021.9
M412024.1
M3 Pro15030.7
M1 Pro20035.5–36.4
M2 Pro20037.9–38.9
M4 Pro27349.6–50.7
M1 Max40054.6–61.2
M3 Max300–40056.6–66.3
M2 Max40061.0–66.0
M4 Max410–54670.0–83.1
M1 Ultra80074.9–83.7
M3 Ultra81988.4–92.1
M2 Ultra80088.6–94.3

Source & date: llama.cpp discussion #4167, "Performance of llama.cpp on Apple Silicon M-series" — LLaMA 7B v2 Q4_0, 128-token generation, ngl=99. Retrieved 2026-07-13. M5-family chips had no comparable entries in the thread at retrieval time; bandwidth figures for them are in the Apple Silicon memory table.

What the measurements show

Generation speed tracks memory bandwidth, not marketing TOPS. Sort the Apple table by the bandwidth column and it is already sorted by tokens/sec, across four chip generations; the same holds for discrete cards once architecture differences are accounted for. That is the empirical basis for the estimator model documented on our methodology page: tokens/sec ≈ bandwidth × efficiency ÷ bytes per token, with measured efficiency clustering near 50–70% on CUDA GPUs and 35–55% on Apple Metal. It also explains apparent anomalies — the 12 GB RTX 4070 Ti (504 GB/s) losing to the 10 GB RTX 3080 (760 GB/s) is exactly what the bandwidth column predicts.

The 70B column is a capacity story first and a speed story second. Every single consumer card shows OOM: 24 GB simply cannot hold ≈46 GB of weights-plus-cache, as the model VRAM table breaks down. The setups that do run it — dual 24 GB cards, 48 GB workstation boards, high-memory Macs — land in the 4–25 t/s range, with dual-GPU rigs paying a visible tax: two RTX 4090s generate an 8B model slower (122.6 t/s) than one (127.7 t/s), because layer-split inference round-trips activations over PCIe every token.

Finally, architecture increasingly beats raw size. The MoE rows are the clearest case: Qwen3 30B-A3B holds a 32B-class file but generates at 234 t/s on an RTX 5090 — faster than the dense 8B — because only ≈3.3B parameters are read per token. If your hardware sits in the 16–24 GB band, a Q4 MoE model can deliver dense-70B-class quality signals at 8B-class speed; the minimum GPU per model tier table folds these tradeoffs into a quick lookup. Treat every figure here as llama.cpp-specific: vLLM, MLX, and TensorRT-LLM each shift throughput, usually upward on batch workloads.

Frequently asked questions

How many tokens per second does an RTX 4090 get on an 8B model?

About 128 tokens/sec generating with Llama 3 8B at Q4_K_M in llama.cpp. The RTX 3090 measures about 112 t/s on the same test, and the RTX 5090 reaches roughly 186 t/s on a comparable 8B Q4 model.

How fast does a 70B model run on two RTX 3090s?

About 16 tokens/sec at Q4_K_M in llama.cpp, and about 19 t/s on two RTX 4090s. Splitting across cards adds PCIe transfer overhead, so two cards give the capacity of 48 GB but not double the speed of one.

How many tokens per second is usable for chat?

Around 10 t/s reads like a fast typist and feels responsive; 20-30 t/s exceeds comfortable reading speed. Below about 5 t/s interaction feels laggy, and long reasoning outputs become impractical.

Why is a MoE 30B model faster than a dense 32B on the same GPU?

A mixture-of-experts model stores all expert weights but reads only its active parameters per token — about 3.3B for Qwen3 30B-A3B. On an RTX 5090 it measures 234 t/s where the dense 32B measures 61 t/s, nearly a 4x gap at similar file sizes.

Why do Macs generate fewer tokens per second than NVIDIA cards?

Memory bandwidth. Generation speed scales with bytes streamed per second, and Apple chips top out at 819 GB/s (M3 Ultra) versus 1,792 GB/s for the RTX 5090. Macs compensate with capacity: a 128 GB Mac runs 70B models that no single consumer GPU can load.

Measured LLM Tokens/sec by GPU (2026) — llama.cpp Benchmarks — by VRAMwise ↗