Skip to content

Benchmarks

Local LLM speed results across models, backends, hardware, and power profiles. Decode tok/s is the headline metric; latency, raw engine runs, and workload context stay visible in their own views.

1181 source rows612 matching source rowslatest run May 21, 2026schemas v1-v4source content/benchmarks/runs/
Filters
Advanced filters

Hardware tested

Rig metadata and microbenchmarks are shown here so memory bandwidth and tensor math do not get mixed into model-serving rankings.

Custom 4× RTX 3090 build· Open-frame mining-style chassis
cpuAMD EPYC 7302P 16-Core Processor
gpuNVIDIA GeForce RTX 3090
archNVIDIA
vram24 GiB (system 64.0 GiB)
power200 W / 450 W max(44% cap)
osUbuntu 24.04 LTS
kernel6.17.13-7-pve
driver590.48.01
backendsllama.cpp 59778f0 (cuda), llama.cpp cuda-4f13cb7 (cuda), llama.cpp 4f13cb7-mtp (cuda), vLLM 0.21.0 (cuda), hardware-probe v2 (torch-cuda), hardware-probe torch-2.11.0-cu128 (torch-cuda)
hardware probes
copy 42% of theoryFP16 peak 65.4 TFcopy/math flat across caps
384-bit9751 MHz82 SM/CU
Microbenchmarks for memory copy and tensor math; raw-engine decode and API workload rows measure model-serving speed.
captheorycopyfp16bf16
200 W936 GB/s391 GB/s65.4 TF65.4 TF
300 W936 GB/s391 GB/s65.4 TF65.3 TF
450 W936 GB/s391 GB/s65.4 TF65.4 TF
compute: 8.6

A self-built quad-3090 benchmark rig used for local ML and inference testing. Rows in the table that read "2× RTX 3090" use llama.cpp's --split-mode layer across two cards so larger Q8_0-class 27B models fit in memory. Every other RTX 3090 row uses exactly one card.

  • GPUs: 4× EVGA RTX 3090 FTW3 Ultra (24G-P5-3987-KR), running at the full 450 W cap. Earlier benchmarks at a 200 W rack-noise cap are noted in the per-run YAML and discussed in the power-limits post.
  • CPU: AMD EPYC 7302P (16C/32T, Zen 2, SP3)
  • Memory: 96 GiB DDR4-2933 (6× 16 GiB ECC RDIMM)
  • Power policy: 450 W max per card for the current full-power runs, with older capped rows preserved for comparison.
Gaming desktop· Custom build
cpuAMD Ryzen 9 7900 12-Core Processor
gpuNVIDIA GeForce RTX 5070
archNVIDIA
vram11.94 GiB (system 30.5 GiB)
power250 W / 300 W max(83% cap)
osCachyOS
kernel7.0.8-1-cachyos
driver595.71.05
backendsllama.cpp cuda-1a68ec9 (cuda), llama.cpp vulkan-1a68ec9 (vulkan), llama.cpp b9174 (vulkan), hardware-probe v2 (torch-cuda), hardware-probe torch-2.11.0-cu128 (torch-cuda)
hardware probes
copy 40% of theoryFP16 peak 69.6 TFcopy/math spread 2.5%
192-bit14001 MHz48 SM/CU
Microbenchmarks for memory copy and tensor math; raw-engine decode and API workload rows measure model-serving speed.
captheorycopyfp16bf16
200 W672 GB/s271 GB/s67.9 TF68.4 TF
250 W672 GB/s271 GB/s69.5 TF68.2 TF
300 W672 GB/s270 GB/s69.6 TF68.4 TF
compute: 12

A daily-driver gaming PC on CachyOS with an RTX 5070, pressed into service as a benchmark host between gaming sessions. The card sits at a 250 W of 300 W stock power cap (83%) by default on this rig; that limit is captured in the YAML and surfaced on each run.

Inference uses the prebuilt llama.cpp Vulkan binary (no CUDA toolkit or sudo on this host), so all RTX 5070 numbers here are Vulkan-backed rather than CUDA. That makes them directly comparable to the Strix Halo Vulkan numbers (same backend, different silicon) but understates what the card can do with CUDA. A CUDA pass will land later.

  • GPU: NVIDIA GeForce RTX 5070, 12 GiB GDDR7, 250 W cap (300 W max)
  • CPU: AMD Ryzen 9 7900 (12-core); the integrated Radeon iGPU is also visible to Vulkan as a second device but explicitly excluded from every bench via --device Vulkan0 --split-mode none --main-gpu 0
  • Driver: 595.58.03
  • OS: CachyOS rolling, Linux 7.0
  • VRAM-fit verification: every run snapshots GPU memory before and after the benchmark process starts and aborts if the delta is smaller than the model file size, which guards against silent CPU spill
Framework Desktop· Mini-ITX
cpuAMD RYZEN AI MAX+ 395 w/ Radeon 8060S
gpuAMD Radeon 8060S
archStrix Halo (gfx1151)
vram96 GiB (system 31.1 GiB, unified)
osUbuntu 24.04.4 LTS
kernel7.0.2-2-pve
backendsllama.cpp b1203 (rocm), llama.cpp b8940 (cpu), llama.cpp b8940 (vulkan), llama.cpp b8940 (rocm), llama.cpp b1203 (rocm), llama.cpp rocm-4f13cb7 (rocm), llama.cpp 4f13cb7-mtp (rocm), hardware-probe v3 (hip-rocblas)
hardware probes
copy 41% of theoryFP16 peak 30.3 TF
256-bit8000 MHz20 SM/CU
Microbenchmarks for memory copy and tensor math; raw-engine decode and API workload rows measure model-serving speed.
captheorycopyfp16bf16
fixed256 GB/s106 GB/s30.3 TF-
compute: 11.5

Framework Desktop with the AMD Ryzen AI Max+ 395 (Strix Halo) APU. 128 GiB of unified LPDDR5X system memory; the GPU side sees 96 GiB through the unified-memory pool. Integrated Radeon 8060S handles the inference workload via ROCm. No discrete GPU, no separate VRAM pool — the 27B-class models in this benchmark set all run on a single APU.

Best workload row per rig

RigBest workload rowDecode tok/sBackend / mode
GeForce RTX 3090 · 24 GiBLFM2.5 350M · chat940.7llama.cpp baseline-pl-350w
GeForce RTX 5070 · 12 GiBLFM2.5-350M · rag905.0llama.cpp baseline
Strix Halo · Radeon 8060S · 128 GiB unified (96 GiB VRAM)LFM2 1.2B · chat211.5llama.cpp baseline
Decode tok/s
Headline speed metric
TTFT / TPOT
Latency context
Raw vs workload
Separate comparison contracts
Notes badge key
hardware comparable

Use these rows for GPU-to-GPU comparisons when the model, quant, backend, driver family, power policy, and benchmark shape match closely.

stack comparable

Use these rows to compare a similar software stack. They are useful, but backend, server path, driver, cache, or power settings may still influence the number.

stack realistic

Treat these as real workload measurements, not pure hardware rankings. They include prompt mix, API/server overhead, cache behavior, and local software details.

legacyOlder workload harness row.
350 W capRecorded GPU power limit.
drv 590GPU driver branch.
reasoningReasoning-token model.
Metric guide
Decode tok/s - Generation rate. Raw rows come from the engine benchmark; API rows use token intervals when available.
TTFT - Time to first token. This includes prompt processing and server/API overhead.
TPOT / ITL - Time per output token after the first token. Lower is better.
Raw Engine - llama-bench style cases intended for hardware-normalized comparison across rigs.
Workload / API - Stack-realistic measurements that include backend, server, cache, driver, and prompt behavior.
Power badges - A cap badge shows the recorded power limit. The row metadata records the cap relative to the recorded max.