RTX 4090 (48GB) LLM benchmark
The fastest LLM measured on the RTX 4090 (48GB) is gemma3 at 195.0 decode tok/s via ollama (signed run). Across 56 reproducible runs on 8 models, this page lists decode tok/s, prefill, and TTFT for each, every number linking to the run it came from.
glm-4.7-flash
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_o636l3cc-rr |
| chat-long | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_o636l3cc-rr |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_o636l3cc-rr |
| agent-trace | ollama@0.31.1 | Q4_K_M | 129.9tok/s | 2,491.1tok/s | 1,262ms | r_o636l3cc-rr |
qwen3.6
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_h_659oy695r |
| chat-long | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_h_659oy695r |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_h_659oy695r |
| agent-trace | ollama@0.31.1 | Q4_K_M | 44.18tok/s | 1,910.5tok/s | 1,808ms | r_h_659oy695r |
gemma3
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | 46.95tok/s | 144.5tok/s | 817ms | r_x23y_sg24pm |
| chat-long | ollama@0.31.1 | Q4_K_M | 45.25tok/s | 1,594.1tok/s | 1,998ms | r_x23y_sg24pm |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 46.17tok/s | no data | no data | r_x23y_sg24pm |
| agent-trace | ollama@0.31.1 | Q4_K_M | 45.33tok/s | 2,556.8tok/s | 956ms | r_x23y_sg24pm |
| chat-short | ollama@0.31.1 | Q4_K_M | 92.65tok/s | 171.4tok/s | 689ms | r_3kmrc135e0e |
| chat-long | ollama@0.31.1 | Q4_K_M | 87.60tok/s | 2,206.4tok/s | 1,444ms | r_3kmrc135e0e |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 90.43tok/s | no data | no data | r_3kmrc135e0e |
| agent-trace | ollama@0.31.1 | Q4_K_M | 88.53tok/s | 3,123.9tok/s | 815ms | r_3kmrc135e0e |
| chat-short | ollama@0.31.1 | Q4_K_M | 195.0tok/s | 167.2tok/s | 706ms | r_dlanfbgym0h |
| chat-long | ollama@0.31.1 | Q4_K_M | 187.6tok/s | 3,254.1tok/s | 979ms | r_dlanfbgym0h |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 193.1tok/s | no data | no data | r_dlanfbgym0h |
| agent-trace | ollama@0.31.1 | Q4_K_M | 190.0tok/s | 3,543.4tok/s | 715ms | r_dlanfbgym0h |
r1
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_zrjj-pj93q8 |
| chat-long | ollama@0.31.1 | Q4_K_M | 81.09tok/s | 240.4tok/s | 13,070ms | r_zrjj-pj93q8 |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_zrjj-pj93q8 |
| agent-trace | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_zrjj-pj93q8 |
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_fg77v2hhohb |
| chat-long | ollama@0.31.1 | Q4_K_M | 131.9tok/s | 686.3tok/s | 4,578ms | r_fg77v2hhohb |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_fg77v2hhohb |
| agent-trace | ollama@0.31.1 | Q4_K_M | 133.8tok/s | 8,852.4tok/s | 366ms | r_fg77v2hhohb |
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_l2ck67ls40i |
| chat-long | ollama@0.31.1 | Q4_K_M | 3.76tok/s | 14.28tok/s | 219,986ms | r_l2ck67ls40i |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_l2ck67ls40i |
| agent-trace | ollama@0.31.1 | Q4_K_M | 3.79tok/s | 3,515.1tok/s | 971ms | r_l2ck67ls40i |
| chat-short | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_2r1p3w9ps7c |
| chat-long | ollama@0.31.1 | Q4_K_M | 131.0tok/s | 599.9tok/s | 5,238ms | r_2r1p3w9ps7c |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_2r1p3w9ps7c |
| agent-trace | ollama@0.31.1 | Q4_K_M | 132.4tok/s | 9,612.8tok/s | 337ms | r_2r1p3w9ps7c |
qwen3-coder
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | 145.2tok/s | 195.6tok/s | 562ms | r_wjq32z47vlp |
| chat-long | ollama@0.31.1 | Q4_K_M | 165.5tok/s | 3,527.2tok/s | 892ms | r_wjq32z47vlp |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 179.9tok/s | no data | no data | r_wjq32z47vlp |
| agent-trace | ollama@0.31.1 | Q4_K_M | no data | no data | no data | r_wjq32z47vlp |
gpt-oss
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | MXFP4 | no data | no data | no data | r_iu2sfa9ykvw |
| chat-long | ollama@0.31.1 | MXFP4 | 141.7tok/s | 631.5tok/s | 5,048ms | r_iu2sfa9ykvw |
| concurrent-decode | ollama@0.31.1 | MXFP4 | no data | no data | no data | r_iu2sfa9ykvw |
| agent-trace | ollama@0.31.1 | MXFP4 | no data | no data | no data | r_iu2sfa9ykvw |
qwen2.5-coder
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | 89.45tok/s | 466.6tok/s | 281ms | r_73tnfdueq2h |
| chat-long | ollama@0.31.1 | Q4_K_M | 83.84tok/s | 3,572.3tok/s | 887ms | r_73tnfdueq2h |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 88.63tok/s | no data | no data | r_73tnfdueq2h |
| agent-trace | ollama@0.31.1 | Q4_K_M | 86.21tok/s | 5,298.4tok/s | 395ms | r_73tnfdueq2h |
| chat-short | ollama@0.31.1 | Q4_K_M | 159.4tok/s | 452.0tok/s | 290ms | r_mv8n8k9wu1e |
| chat-long | ollama@0.31.1 | Q4_K_M | 154.7tok/s | 5,998.7tok/s | 528ms | r_mv8n8k9wu1e |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 161.1tok/s | no data | no data | r_mv8n8k9wu1e |
| agent-trace | ollama@0.31.1 | Q4_K_M | 158.1tok/s | 6,421.1tok/s | 320ms | r_mv8n8k9wu1e |
llama3.1
| Workload | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|
| chat-short | ollama@0.31.1 | Q4_K_M | 154.4tok/s | 328.0tok/s | 335ms | r_h1ub_1uxzdh |
| chat-long | ollama@0.31.1 | Q4_K_M | 146.3tok/s | 5,032.5tok/s | 623ms | r_h1ub_1uxzdh |
| concurrent-decode | ollama@0.31.1 | Q4_K_M | 154.2tok/s | no data | no data | r_h1ub_1uxzdh |
| agent-trace | ollama@0.31.1 | Q4_K_M | 149.4tok/s | 5,377.5tok/s | 387ms | r_h1ub_1uxzdh |
Community folklore on RTX 4090 (48GB)
108 unverified claims extracted from Reddit/HN comments. Lower trust than signed runs above; every row links to the source.
- communityconfidence 75%
60.00tok/s — Llama 3.1 70b on RTX 4090 via ollama IQ2_XS
our signed data: RTX 4090 · Llama 3.1 70b
“Llama 3.1 70b at 60 tok/s on RTX 4090 (IQ2_XS) Setup GPU: 1 x RTX 4090 (24 GB VRAM) CPU: Xeon® E5-2695 v3 (16 cores) RAM: 64 GB RAM Running PyTorch 2.2.0 + CUDA 1”
- communityconfidence 75%
60.00tok/s — Llama 3.1 70b on RTX 4090 via ollama IQ2_XS
our signed data: RTX 4090 · Llama 3.1 70b
“Llama 3.1 70b at 60 tok/s on RTX 4090 (IQ2_XS) Setup GPU: 1 x RTX 4090 (24 GB VRAM) CPU: Xeon® E5-2695 v3 (16 cores) RAM: 64 GB RAM Running PyTorch 2.2.0 + CUDA 1”
- communityconfidence 75%
60.00tok/s — Llama 3.1 70b on RTX 4090 via ollama IQ2_XS
our signed data: RTX 4090 · Llama 3.1 70b
“Llama 3.1 70b at 60 tok/s on RTX 4090 (IQ2_XS) Setup GPU: 1 x RTX 4090 (24 GB VRAM) CPU: Xeon® E5-2695 v3 (16 cores) RAM: 64 GB RAM Running PyTorch 2.2.0 + CUDA 1”
- communityconfidence 75%
92.40tok/s — Qwen3-8B on RTX 4090 via llama.cpp Q8_0
our signed data: RTX 4090 · Qwen3-8B
“tok/s` generation at `128` output tokens - `Q8_0`: about `9975 tok/s` prompt processing at `512` tokens, `9955 tok/s` at `1024`, and about `92.4 tok/s` generation at `128` output tokens Hardware / runtime for those numbers: - `RTX 4090` - `Ryzen 9 7900X` - `llama.cpp` build com…”
- communityconfidence 75%
92.40tok/s — Qwen3-8B on RTX 4090 via llama.cpp Q8_0
our signed data: RTX 4090 · Qwen3-8B
“tok/s` generation at `128` output tokens - `Q8_0`: about `9975 tok/s` prompt processing at `512` tokens, `9955 tok/s` at `1024`, and about `92.4 tok/s` generation at `128` output tokens Hardware / runtime for those numbers: - `RTX 4090` - `Ryzen 9 7900X` - `llama.cpp` build com…”
- communityconfidence 75%
548.9tok/s — Llama-3.1-70B on RTX 4090 via vllm FP8
our signed data: RTX 4090 · Llama-3.1-70B
“neuralmagic\_Meta-Llama-3.1-70B-Instruct-FP8-dynamic Avg generation throughput: \~29-30 tokens/s Avg prompt throughput: 548.9 tokens/s (4 GPUs, 4090, power limited to 325) (8x, 8x, 4x , 4x) 5950x taichi x570 vllm backend i didn't do the specific prompt to get the va”
- communityconfidence 75%
30.00tok/s — Llama-3.1-70B on RTX 4090 via vllm FP8
our signed data: RTX 4090 · Llama-3.1-70B
“neuralmagic\_Meta-Llama-3.1-70B-Instruct-FP8-dynamic Avg generation throughput: \~29-30 tokens/s Avg prompt throughput: 548.9 tokens/s (4 GPUs, 4090, power limited to 325) (8x, 8x, 4x , 4x) 5950x taichi x570 vllm backend i di”
- communityconfidence 75%
548.9tok/s — Llama-3.1-70B on RTX 4090 via vllm FP8
our signed data: RTX 4090 · Llama-3.1-70B
“neuralmagic\_Meta-Llama-3.1-70B-Instruct-FP8-dynamic Avg generation throughput: \~29-30 tokens/s Avg prompt throughput: 548.9 tokens/s (4 GPUs, 4090, power limited to 325) (8x, 8x, 4x , 4x) 5950x taichi x570 vllm backend i didn't do the specific prompt to get the va”
- communityconfidence 75%
30.00tok/s — Llama-3.1-70B on RTX 4090 via vllm FP8
our signed data: RTX 4090 · Llama-3.1-70B
“neuralmagic\_Meta-Llama-3.1-70B-Instruct-FP8-dynamic Avg generation throughput: \~29-30 tokens/s Avg prompt throughput: 548.9 tokens/s (4 GPUs, 4090, power limited to 325) (8x, 8x, 4x , 4x) 5950x taichi x570 vllm backend i di”
- communityconfidence 70%
140.0tok/s — Qwen3-Coder on RTX 4090 via llama.cpp
our signed data: RTX 4090 · Qwen3-Coder
“bled, KV cache at Q8) on my 4090. This is fully on the GPU, no offloading to CPU. Depending on context length I'm getting anywhere from 100-140 tokens/sec. If you wanted more context you'd have to offload some layers to CPU and it takes a massive hit (my recent post has some benc…”
Models measured on RTX 4090 (48GB)
Common questions about RTX 4090 (48GB)
Direct Q&A drawn from the runs above: fastest LLM, supported model classes, backend rankings, quantization guidance.