<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: RigBase</title>
    <description>The latest articles on DEV Community by RigBase (@rigbase).</description>
    <link>https://dev.to/rigbase</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4197507%2F1a1e4b7c-9d6b-46b1-b3e1-767b68975b88.png</url>
      <title>DEV Community: RigBase</title>
      <link>https://dev.to/rigbase</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rigbase"/>
    <language>en</language>
    <item>
      <title>Every DGX Spark recipe that runs current models, measured</title>
      <dc:creator>RigBase</dc:creator>
      <pubDate>Wed, 28 Oct 2026 04:40:10 +0000</pubDate>
      <link>https://dev.to/rigbase/every-dgx-spark-recipe-that-runs-current-models-measured-2j95</link>
      <guid>https://dev.to/rigbase/every-dgx-spark-recipe-that-runs-current-models-measured-2j95</guid>
      <description>&lt;p&gt;The DGX Spark gets a lot of "is it actually fast?" questions. The honest answer depends on the recipe: which quant, which engine, whether speculative decoding is on, and how many Sparks you link together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mia-ai.net/models" rel="noopener noreferrer"&gt;Mia's AI Lab&lt;/a&gt; publishes open-source DGX Spark recipes (install scripts, engine work and benchmarks on &lt;a href="https://github.com/MiaAI-Lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;) for the newest open models. All of the numbers below are theirs. I collected them, checked each decode figure against its recipe page or README, and put them in one table. Full table with links: &lt;strong&gt;&lt;a href="https://getrigbase.com/dgx-spark/" rel="noopener noreferrer"&gt;getrigbase.com/dgx-spark/&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GLM-5.3 Flash&lt;/strong&gt; (320B total, 18B active) does not fit one Spark at 4-bit, which is about 160 GB of weights. Mia's TensorFold recipe does &lt;strong&gt;60.4 tok/s on 2 Sparks&lt;/strong&gt;, 77.6 on 3 and &lt;strong&gt;95.2 on 4&lt;/strong&gt;, single stream, with prefill of 1,979–2,583 tok/s on a 32k prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.8 Flash-Next&lt;/strong&gt; runs on a single Spark at &lt;strong&gt;48.7 tok/s&lt;/strong&gt; (NVFP4, vLLM); Mia's TensorFold recipe gives a 46–55 tok/s range.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V4.1 Flash&lt;/strong&gt; reaches &lt;strong&gt;74.9 tok/s on 2 Sparks&lt;/strong&gt; (1017 checkpoint, EXL3 2.9-bit + DSpark). That works because about 196.6B of its parameters are Engram lookup tables that do not have to sit in accelerator memory (&lt;a href="https://recipes.vllm.ai/deepseek-ai/DeepSeek-V4.1-Flash" rel="noopener noreferrer"&gt;vLLM recipe&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full GLM-5.3&lt;/strong&gt; (753B) needs 3 Sparks at 2.75 bits (≈259 GB of weights): &lt;strong&gt;31.3 tok/s&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  All 19 setups
&lt;/h2&gt;

&lt;p&gt;Decode is single-stream tokens/sec. Prefill is prompt processing on a 32k prompt, where it was listed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Sparks&lt;/th&gt;
&lt;th&gt;Quant&lt;/th&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;Decode tok/s&lt;/th&gt;
&lt;th&gt;Prefill tok/s&lt;/th&gt;
&lt;th&gt;Context&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ling 3.0 Flash&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;INT4 + DSpark&lt;/td&gt;
&lt;td&gt;SGLang&lt;/td&gt;
&lt;td&gt;83&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;256k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Ling-3.0-Flash-SGLang-DSpark-DGX-Spark" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Muse Glimmer 30B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NVFP4 + DFlash&lt;/td&gt;
&lt;td&gt;vLLM&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;256k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Muse-Glimmer-30B-DGX-Spark-RTX-5090-6000-PRO" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nemotron 3.5 Bolt 74B-A9B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;IQ2_XXS + NVFP4 + LiLiCorr&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;td&gt;1,375&lt;/td&gt;
&lt;td&gt;262k · up to 16 at once&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/Nemotron-3.5-Bolt-TensorFold-DGX-Spark" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ornith 1.5 122B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;EXL3 4-bit + DFlash2&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;52.6&lt;/td&gt;
&lt;td&gt;1,955&lt;/td&gt;
&lt;td&gt;262k · 4 at once&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Ornith-1.5-122B-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.6 35B-A3B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NVFP4 + MTP&lt;/td&gt;
&lt;td&gt;vLLM&lt;/td&gt;
&lt;td&gt;95.1&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;262k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Unsloth-Qwen3.6-35b-NVFP4-DGX-Spark" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;MLX 4-bit + DFlash2&lt;/td&gt;
&lt;td&gt;TensorFold&lt;/td&gt;
&lt;td&gt;58.3&lt;/td&gt;
&lt;td&gt;1,633&lt;/td&gt;
&lt;td&gt;262k · 1M with YaRN&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/Qwen3.8-27B-DGX-Spark-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NVFP4 + DSpark&lt;/td&gt;
&lt;td&gt;SGLang&lt;/td&gt;
&lt;td&gt;18.3&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;262k · 1M with YaRN&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Qwen3.8-27B-SGLang-DGX-Spark" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 Flash-Next&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NVFP4&lt;/td&gt;
&lt;td&gt;vLLM&lt;/td&gt;
&lt;td&gt;48.7&lt;/td&gt;
&lt;td&gt;1,769&lt;/td&gt;
&lt;td&gt;262k · 512k with YaRN&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Qwen3.8-Flash-Next-Single-DGX-Spark" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 Flash-Next&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;FP4 QAD or INT4-AR + MTP&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;46-55&lt;/td&gt;
&lt;td&gt;2,430&lt;/td&gt;
&lt;td&gt;262k · up to 5 at once&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4.1 Flash&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1017 checkpoint, EXL3 2.9-bit + DSpark&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;74.9&lt;/td&gt;
&lt;td&gt;2,175&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/DeepSeek-v4.1-Flash-1017-2x-DGX-Sparks" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4.1 Flash&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;EXL3 2.9-bit&lt;/td&gt;
&lt;td&gt;vLLM&lt;/td&gt;
&lt;td&gt;31.6&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;600k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/DeepSeek-v4.1-Flash-EXL3-2x-DGX-Sparks" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3 Flash&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;EXL3 4-bit + DFlash2&lt;/td&gt;
&lt;td&gt;TensorFold&lt;/td&gt;
&lt;td&gt;60.4&lt;/td&gt;
&lt;td&gt;1,978.9&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MiMo V2.6 Flash&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;MXFP4&lt;/td&gt;
&lt;td&gt;SGLang&lt;/td&gt;
&lt;td&gt;35&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/MiMo-V2.6-Flash-2x-DGX-Sparks" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 Flash-Next&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;NVFP4 or INT4-AR + MTP&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;67.4&lt;/td&gt;
&lt;td&gt;2,575&lt;/td&gt;
&lt;td&gt;1M · ×3 at full context&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/Qwen3.8-Flash-Dual-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 Flash-Next&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;NVFP4&lt;/td&gt;
&lt;td&gt;vLLM&lt;/td&gt;
&lt;td&gt;54.4&lt;/td&gt;
&lt;td&gt;2,962&lt;/td&gt;
&lt;td&gt;262k · 1M with YaRN&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/MiaAI-Lab/Qwen3.8-Flash-Next-Dual-DGX-Sparks" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;EXL3 2.75-bit + DSpark&lt;/td&gt;
&lt;td&gt;TensorFold&lt;/td&gt;
&lt;td&gt;31.3&lt;/td&gt;
&lt;td&gt;591.2&lt;/td&gt;
&lt;td&gt;~500k&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/GLM-5.3-EXL3-3x-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3 Flash&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;EXL3 4-bit + DFlash2&lt;/td&gt;
&lt;td&gt;TensorFold&lt;/td&gt;
&lt;td&gt;77.6&lt;/td&gt;
&lt;td&gt;2,064.2&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4.1 Flash&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1017 checkpoint, FP8 + MXFP4 + DSpark&lt;/td&gt;
&lt;td&gt;TensorFold Zig&lt;/td&gt;
&lt;td&gt;65.8&lt;/td&gt;
&lt;td&gt;4,127.2&lt;/td&gt;
&lt;td&gt;1M · up to 16 at once&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/DeepSeek-V4.1-Flash-1017-4x-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3 Flash&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;EXL3 4-bit + DFlash2&lt;/td&gt;
&lt;td&gt;TensorFold&lt;/td&gt;
&lt;td&gt;95.2&lt;/td&gt;
&lt;td&gt;2,583.3&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;&lt;a href="https://mia-ai.net/models/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold" rel="noopener noreferrer"&gt;recipe&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most rows use speculative decoding (MTP, DFlash, DSpark, LiLiCorr). It helps predictable text such as code far more than free prose, so do not compare these 1:1 with plain-decode numbers from other GPUs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory math in one line
&lt;/h2&gt;

&lt;p&gt;Each Spark has 128 GB of unified memory (&lt;a href="https://www.nvidia.com/en-us/products/workstations/dgx-spark/" rel="noopener noreferrer"&gt;NVIDIA&lt;/a&gt;). Weights take about &lt;strong&gt;parameters × bits ÷ 8&lt;/strong&gt;. NVFP4 is about 4.5 bits per weight because every 16 values share an FP8 scale (&lt;a href="https://developer.nvidia.com/blog/introducing-nvfp4-for-efficient-and-accurate-low-precision-inference/" rel="noopener noreferrer"&gt;NVIDIA&lt;/a&gt;). Leave room for the KV cache on top. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;320B at 4 bits is about 160 GB: 2 Sparks.&lt;/li&gt;
&lt;li&gt;753B at 2.75 bits is about 259 GB: 3 Sparks.&lt;/li&gt;
&lt;li&gt;A 27–35B model at 4 bits is 14–20 GB: one Spark with lots of room for context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I left out
&lt;/h2&gt;

&lt;p&gt;Figures I could not find again in the recipe text are not in the table. That covers some card numbers that differ from the README, a chart-only number, and third-party numbers for other GPUs. Setups that are "not benchmarked yet" are also out. The full list is in the import script's skip log.&lt;/p&gt;

&lt;p&gt;The table updates as Mia publishes new recipes: &lt;a href="https://getrigbase.com/dgx-spark/" rel="noopener noreferrer"&gt;getrigbase.com/dgx-spark/&lt;/a&gt;. Comparing against a Mac Studio or Strix Halo? See &lt;a href="https://getrigbase.com/compare/dgx-spark-vs-mac-studio-vs-strix-halo/" rel="noopener noreferrer"&gt;DGX Spark vs Mac Studio vs Strix Halo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Numbers: Mia's AI Lab (mia-ai.net), read 2026-10-27. RigBase did not re-run them.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>nvidia</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What 117 real local-LLM rigs tell us about tok/s per euro in 2026</title>
      <dc:creator>RigBase</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:10:54 +0000</pubDate>
      <link>https://dev.to/rigbase/what-117-real-local-llm-rigs-tell-us-about-toks-per-euro-in-2026-176c</link>
      <guid>https://dev.to/rigbase/what-117-real-local-llm-rigs-tell-us-about-toks-per-euro-in-2026-176c</guid>
      <description>&lt;p&gt;"Which GPU should I buy for local LLMs?" usually gets answered with spec sheets. I wanted an answer from &lt;strong&gt;measured&lt;/strong&gt; numbers, so I took the open &lt;a href="https://getrigbase.com/data/" rel="noopener noreferrer"&gt;RigBase dataset&lt;/a&gt; (117 home AI builds, 298 measured results, every row linked to its public source) and divided tokens/sec by what the card costs today.&lt;/p&gt;

&lt;p&gt;Short version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A used RTX 3090 gives about 3× more generation speed per euro than an RTX 5090&lt;/strong&gt; on every current model measured on both. The 5090 is 1.76–1.86× faster, but costs ~5.7× as much.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For gpt-oss 20B, 16 GB cards win on value.&lt;/strong&gt; RTX 5070 Ti and 5060 Ti both deliver ~150 tok/s per €1,000.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speculative decoding (MTP and friends) gave a median 1.76× speedup&lt;/strong&gt; in ten same-hardware before/after pairs. That's a free upgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The dataset in one paragraph
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;117 builds, 298 results, 48 models. 26 of those models are what people currently run (Qwen3.8, Qwen3.6, Gemma 4, gpt-oss, Nemotron 3.5…), and they account for 211 of the results.&lt;/li&gt;
&lt;li&gt;Sources: 33 different sites. GitHub repos/issues are the biggest (47 builds), then Reddit (12), llm-speed.com (10) and llamabench.ai (7).&lt;/li&gt;
&lt;li&gt;Engines: llama.cpp or Ollama (198 results), vLLM (37), MLX (29), other engines (34).&lt;/li&gt;
&lt;li&gt;53 results use speculative decoding and are flagged as such, because they are not comparable 1:1 with plain decode.&lt;/li&gt;
&lt;li&gt;Hardware: 72 NVIDIA builds, 24 Apple, 16 AMD, 3 Intel, 2 CPU-only.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's free under CC BY 4.0: &lt;a href="https://getrigbase.com/data/builds.csv" rel="noopener noreferrer"&gt;builds.csv&lt;/a&gt; and &lt;a href="https://getrigbase.com/data/builds.json" rel="noopener noreferrer"&gt;builds.json&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method (so you can disagree with it)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; = decode (generation) tokens/sec as reported by the source. Plain decode only unless stated, single card, no CPU offload. Where a source gives a range, I use the low end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price&lt;/strong&gt; = lowest new listing on billiger.de (Germany, incl. VAT), checked 16–24 Oct 2026. The exception is the RTX 3090, which is out of production. For it I use the used eBay sold median of &lt;strong&gt;€1,248&lt;/strong&gt; (237 sales, &lt;a href="https://www.pcprice.watch/gpu-buying-guide/rtx-3090-price-used-and-specs" rel="noopener noreferrer"&gt;PCPrice.Watch&lt;/a&gt;, 24 Oct 2026).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value&lt;/strong&gt; = tok/s ÷ GPU price × 1000, i.e. &lt;strong&gt;tok/s per €1,000 of GPU&lt;/strong&gt;. GPU only: no CPU, RAM, PSU or case.&lt;/li&gt;
&lt;li&gt;Different sources use different quants and builds. I group comparisons by source wherever possible, and you should treat gaps under ~10% as noise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. gpt-oss 20B: one source, six cards
&lt;/h2&gt;

&lt;p&gt;All of these are llama-bench runs in native MXFP4 from the same llama.cpp thread (&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;discussion #15396&lt;/a&gt;), so this is the cleanest comparison in the set.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;tok/s&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;tok/s per €1k&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5070 Ti&lt;/td&gt;
&lt;td&gt;189.45&lt;/td&gt;
&lt;td&gt;€1,245 new (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;152.2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/single-rtx-5070-ti-gpt-oss/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5060 Ti 16GB&lt;/td&gt;
&lt;td&gt;111.51&lt;/td&gt;
&lt;td&gt;€739 new (2026-10-16)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;150.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/single-rtx-5060-ti-16gb-gpt-oss/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (used)&lt;/td&gt;
&lt;td&gt;161.77&lt;/td&gt;
&lt;td&gt;€1,248 used (eBay sold median)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;129.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/single-rtx-3090-gpt-oss/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5080&lt;/td&gt;
&lt;td&gt;204.85&lt;/td&gt;
&lt;td&gt;€1,770 new (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;115.7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/single-rtx-5080-gpt-oss/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5090&lt;/td&gt;
&lt;td&gt;282.51&lt;/td&gt;
&lt;td&gt;€7,140 new (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;39.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/single-rtx-5090-gpt-oss/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX Pro 6000 Blackwell&lt;/td&gt;
&lt;td&gt;286.91&lt;/td&gt;
&lt;td&gt;€16,885 new (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;17.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://getrigbase.com/builds/rtx-pro-6000-96gb/" rel="noopener noreferrer"&gt;build&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 5090 is only 1.49× faster than a 5070 Ti here (282.51 vs 189.45), yet it costs 5.7× as much. A 20B MoE in MXFP4 fits comfortably in 16 GB, so the extra VRAM buys you nothing on this model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Same test rig, with power
&lt;/h3&gt;

&lt;p&gt;Jeff Geerling's &lt;a href="https://github.com/geerlingguy/ai-benchmarks" rel="noopener noreferrer"&gt;ai-benchmarks&lt;/a&gt; swaps cards in one Core Ultra 265K system and records peak &lt;strong&gt;whole-system&lt;/strong&gt; power:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;gpt-oss 20B tok/s&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;tok/s per €1k&lt;/th&gt;
&lt;th&gt;Peak system power&lt;/th&gt;
&lt;th&gt;tok/s per W&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3060 12GB&lt;/td&gt;
&lt;td&gt;83.96&lt;/td&gt;
&lt;td&gt;€429 (2026-10-16)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;195.7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;229.3 W&lt;/td&gt;
&lt;td&gt;0.37&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX A4000&lt;/td&gt;
&lt;td&gt;93.55&lt;/td&gt;
&lt;td&gt;€1,050 (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;89.1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;199.4 W&lt;/td&gt;
&lt;td&gt;0.47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radeon AI Pro R9700&lt;/td&gt;
&lt;td&gt;163.26&lt;/td&gt;
&lt;td&gt;€1,848 (2026-10-24)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;88.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;332.9 W&lt;/td&gt;
&lt;td&gt;0.49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 4090&lt;/td&gt;
&lt;td&gt;279.65&lt;/td&gt;
&lt;td&gt;€3,955 (2026-10-16)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70.7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;509.1 W&lt;/td&gt;
&lt;td&gt;0.55&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/40" rel="noopener noreferrer"&gt;#40&lt;/a&gt;, &lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/36" rel="noopener noreferrer"&gt;#36&lt;/a&gt;, &lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/35" rel="noopener noreferrer"&gt;#35&lt;/a&gt;, &lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/43" rel="noopener noreferrer"&gt;#43&lt;/a&gt;. The quant isn't stated in his summary table.&lt;/p&gt;

&lt;p&gt;The cheap card wins on value and the fast card wins on efficiency. The €429 RTX 3060 has the best tok/s per euro in the dataset for this model. One caveat: gpt-oss 20B's weights are about 13 GB, more than the card's 12 GB, so part of the model may have run from system RAM. The 4090 draws more than twice the power, but gets the most tokens per watt.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Current 24–32 GB models: used 3090 vs 4090 vs 5090
&lt;/h2&gt;

&lt;p&gt;Here are single-card results on current models, without speculative decoding. Each cell shows &lt;strong&gt;measured tok/s → tok/s per €1k&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;RTX 3090 (used, €1,248)&lt;/th&gt;
&lt;th&gt;RTX 4090 (€3,955)&lt;/th&gt;
&lt;th&gt;RTX 5090 (€7,140)&lt;/th&gt;
&lt;th&gt;5090 ÷ 3090 speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.6 35B-A3B&lt;/td&gt;
&lt;td&gt;146 → &lt;strong&gt;117.0&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;160.6 → 40.6&lt;/td&gt;
&lt;td&gt;258 → 36.1&lt;/td&gt;
&lt;td&gt;1.77×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;38.8 → &lt;strong&gt;31.1&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;43.8 → 11.1&lt;/td&gt;
&lt;td&gt;71.3 → 10.0&lt;/td&gt;
&lt;td&gt;1.84×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nemotron 3.5 Bolt 74B-A9B (2-bit)&lt;/td&gt;
&lt;td&gt;87.75 → &lt;strong&gt;70.3&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;108 → 27.3&lt;/td&gt;
&lt;td&gt;154.7 → 21.7&lt;/td&gt;
&lt;td&gt;1.76×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;40.4 → &lt;strong&gt;32.4&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;75.2 → 10.5&lt;/td&gt;
&lt;td&gt;1.86×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sources per row:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.6:&lt;/strong&gt; 3090 &lt;a href="https://llamabench.ai/browse/rtx3090" rel="noopener noreferrer"&gt;llamabench&lt;/a&gt; (low end of 146–153), 4090 &lt;a href="https://llm-speed.com/r/r_m6j1zxwvp-f" rel="noopener noreferrer"&gt;llm-speed&lt;/a&gt;, 5090 &lt;a href="https://llamabench.ai/browse/rtx5090" rel="noopener noreferrer"&gt;llamabench&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 31B:&lt;/strong&gt; &lt;a href="https://localllmadvisor.com/can-run/gemma-4-31b-on-rtx-3090-24gb.html" rel="noopener noreferrer"&gt;3090&lt;/a&gt;, &lt;a href="https://llamabench.ai/browse/rtx4090" rel="noopener noreferrer"&gt;4090&lt;/a&gt;, &lt;a href="https://localllmadvisor.com/can-run/gemma-4-31b-on-rtx-5090-32gb.html" rel="noopener noreferrer"&gt;5090&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nemotron Bolt:&lt;/strong&gt; &lt;a href="https://llm-speed.com/blog/nemotron-3-5-bolt-74b-24gb-measured" rel="noopener noreferrer"&gt;llm-speed post&lt;/a&gt; for the 3090 and 5090, &lt;a href="https://llamabench.ai/browse/rtx4090" rel="noopener noreferrer"&gt;llamabench&lt;/a&gt; for the 4090.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.8 27B:&lt;/strong&gt; 3090 &lt;a href="https://github.com/L-Forster/open-jet/tree/master/megakernel" rel="noopener noreferrer"&gt;OpenJet README&lt;/a&gt; (llama.cpp, no speculation), 5090 &lt;a href="https://llm-speed.com/r/r_dwp5fgdapmw" rel="noopener noreferrer"&gt;llm-speed&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;On all four models the used 3090 gives 3.1–3.2× more tok/s per euro than the 5090.&lt;/strong&gt; The 5090 is consistently ~1.8× faster, which tracks its memory bandwidth (1,792 vs 936 GB/s). It also has 8 GB more VRAM, which matters for long context. If raw speed is the goal, buy the 5090. If value is the goal, the used 3090 remains the card to beat in late 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The cheapest upgrade: speculative decoding
&lt;/h2&gt;

&lt;p&gt;Here are ten before/after pairs where the &lt;strong&gt;same build&lt;/strong&gt; ran the &lt;strong&gt;same model&lt;/strong&gt; with the same engine and quant, and the only change was turning on a draft method (MTP, DSpark):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Plain tok/s&lt;/th&gt;
&lt;th&gt;With drafting&lt;/th&gt;
&lt;th&gt;Speedup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090, llama.cpp Q4_K_M, MTP 2 drafts (code prompt)&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;40.4&lt;/td&gt;
&lt;td&gt;72.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.79×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090, llama.cpp Q4_K_M, MTP 2 drafts (reasoning prompt)&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;40.4&lt;/td&gt;
&lt;td&gt;50.9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.26×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strix Halo, llama.cpp Vulkan Q6_K, MTP n=2&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;9.59&lt;/td&gt;
&lt;td&gt;18.01&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.88×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strix Halo, llama.cpp ROCm Q8_0, MTP n=3&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;7.76&lt;/td&gt;
&lt;td&gt;15.67&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.02×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strix Halo, llama.cpp Vulkan Q8_0, MTP n=3&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;7.77&lt;/td&gt;
&lt;td&gt;13.19&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.70×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark, vLLM, MTP k=2&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.73×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark, vLLM, MTP drafter k=3&lt;/td&gt;
&lt;td&gt;Gemma 4 26B-A4B&lt;/td&gt;
&lt;td&gt;30.8&lt;/td&gt;
&lt;td&gt;56.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.83×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark, vLLM NVFP4, MTP k=2&lt;/td&gt;
&lt;td&gt;Qwen3.6 35B-A3B&lt;/td&gt;
&lt;td&gt;78.1&lt;/td&gt;
&lt;td&gt;102.3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.31×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark, vLLM, DSpark k=3&lt;/td&gt;
&lt;td&gt;Nemotron 3.5 Lightning 30B-A3B&lt;/td&gt;
&lt;td&gt;70.3&lt;/td&gt;
&lt;td&gt;94.4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.34×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2× Tesla V100, bnk Q8_0, MTP&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;td&gt;42.4&lt;/td&gt;
&lt;td&gt;104&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.45×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sources: &lt;a href="https://github.com/L-Forster/open-jet/tree/master/megakernel" rel="noopener noreferrer"&gt;OpenJet&lt;/a&gt;, &lt;a href="https://sleepingrobots.com/dreams/qwen38-mtp-strix-halo/" rel="noopener noreferrer"&gt;Sleeping Robots&lt;/a&gt;, &lt;a href="https://howquant.dev/benchmarks/strix-halo-rocm-vs-vulkan/" rel="noopener noreferrer"&gt;howquant.dev&lt;/a&gt;, &lt;a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/" rel="noopener noreferrer"&gt;Cristian Tala&lt;/a&gt;, &lt;a href="https://github.com/christ-pher/bnk" rel="noopener noreferrer"&gt;bnk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The speedups range from &lt;strong&gt;1.26× to 2.45×, with a median of 1.76×&lt;/strong&gt;. That's roughly the gap between a 3090 and a 5090, and it costs nothing. Two patterns show up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small-active-parameter MoEs gain least.&lt;/strong&gt; The dense Qwen3.8 27B gained 1.70–2.45× in every pair except one reasoning-prompt run, and Gemma 4 26B-A4B gained 1.83×. The ~3B-active MoE models (Qwen3.6 35B-A3B, Nemotron Lightning) gained only 1.31–1.34×.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The prompt matters.&lt;/strong&gt; On the same 3090, MTP gave 1.79× on a code prompt but 1.26× on a reasoning prompt. Predictable text gets more drafts accepted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The catch is that drafting numbers are not comparable with plain decode across sources. That's why RigBase flags them ⚡ and lets you hide them.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Big models: where there's no good per-euro answer yet
&lt;/h2&gt;

&lt;p&gt;For ~100B+ models, the hardware is mostly unified-memory boxes (Mac Studio, Strix Halo, DGX Spark), and I don't have comparable price data for them yet. So here are the raw measured speeds for &lt;strong&gt;gpt-oss 120B&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;tok/s&lt;/th&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX Pro 6000 Blackwell (96 GB)&lt;/td&gt;
&lt;td&gt;196.31&lt;/td&gt;
&lt;td&gt;llama.cpp MXFP4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M2 Ultra 76-core (192 GB)&lt;/td&gt;
&lt;td&gt;79.68&lt;/td&gt;
&lt;td&gt;llama.cpp MXFP4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/4167" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ryzen AI Max+ PRO 495 (Radeon 8065S)&lt;/td&gt;
&lt;td&gt;55.8&lt;/td&gt;
&lt;td&gt;llama.cpp Vulkan MXFP4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.hommie.net/posts/ai-box.html" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ryzen AI Max+ PRO 395 (Radeon 8060S)&lt;/td&gt;
&lt;td&gt;44.7&lt;/td&gt;
&lt;td&gt;llama.cpp Vulkan MXFP4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://petronellatech.com/blog/dgx-spark-vs-strix-halo-vs-gorgon-halo-local-llm-benchmarks/" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark (GB10)&lt;/td&gt;
&lt;td&gt;44.4&lt;/td&gt;
&lt;td&gt;vLLM, 128K ctx&lt;/td&gt;
&lt;td&gt;&lt;a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/" rel="noopener noreferrer"&gt;source&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A €16,885 card is 2.5× faster than a 2023 Mac Studio, and the Strix Halo boxes match the DGX Spark. If you know reliable current prices for these systems, I'd like to add them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Up to ~20B MoE (gpt-oss 20B, Qwen3.5 9B, Gemma 4 12B):&lt;/strong&gt; buy a 16 GB card. The RTX 5060 Ti and 5070 Ti tie on value at ~150 tok/s per €1k.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;27–35B (Qwen3.8 27B, Qwen3.6 35B-A3B, Gemma 4 31B):&lt;/strong&gt; a used RTX 3090 gives ~3× the value of a 5090. The 5090 is ~1.8× faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Before buying anything, turn on speculative decoding.&lt;/strong&gt; In this data it was worth a median 1.76×.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't buy a halo card for value.&lt;/strong&gt; The RTX Pro 6000 is at 17 tok/s per €1k on gpt-oss 20B, versus 152 for a 5070 Ti.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Get the data, add yours
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Browse by &lt;a href="https://getrigbase.com/gpus/" rel="noopener noreferrer"&gt;GPU&lt;/a&gt;, by &lt;a href="https://getrigbase.com/best/" rel="noopener noreferrer"&gt;VRAM size&lt;/a&gt;, or &lt;a href="https://getrigbase.com/can-it-run/" rel="noopener noreferrer"&gt;check if a model fits your card&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download everything: &lt;a href="https://getrigbase.com/data/" rel="noopener noreferrer"&gt;getrigbase.com/data&lt;/a&gt; (CSV + JSON, CC BY 4.0, attribution "RigBase").&lt;/li&gt;
&lt;li&gt;Ran llama-bench on a current model? &lt;a href="https://getrigbase.com/submit/" rel="noopener noreferrer"&gt;Submit it&lt;/a&gt;. It needs a public proof link, and that's the only way a number gets in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Data snapshot: RigBase builds.json, 24 Oct 2026. Prices: billiger.de 16–24 Oct 2026; used RTX 3090 from PCPrice.Watch, 24 Oct 2026. All ratios are arithmetic on the sourced numbers. Corrections welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>hardware</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What GPU do you need for Qwen3.8, Qwen3.6, Gemma 4 and gpt-oss locally? (measured, Oct 2026)</title>
      <dc:creator>RigBase</dc:creator>
      <pubDate>Sat, 24 Oct 2026 19:12:56 +0000</pubDate>
      <link>https://dev.to/rigbase/what-gpu-do-you-need-for-qwen38-qwen36-gemma-4-and-gpt-oss-locally-measured-oct-2026-1eg6</link>
      <guid>https://dev.to/rigbase/what-gpu-do-you-need-for-qwen38-qwen36-gemma-4-and-gpt-oss-locally-measured-oct-2026-1eg6</guid>
      <description>&lt;p&gt;Every time a new open model comes out, people ask the same thing: &lt;em&gt;will it run on my card, and how fast?&lt;/em&gt; Spec-sheet calculators can tell you whether the weights &lt;em&gt;fit&lt;/em&gt;. They can't tell you what speed you'll actually get. So here are &lt;strong&gt;measured&lt;/strong&gt; generation speeds (decode tokens/sec) for the models people are running in October 2026, collected from public benchmarks. Every number is linked to the place it came from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to read the numbers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speeds are &lt;em&gt;generation&lt;/em&gt; (decode) tokens/sec at short context unless noted. Prompt processing is a different number and is usually much faster.&lt;/li&gt;
&lt;li&gt;Sources use different engines, quants and llama.cpp builds. Treat gaps under ~10% as noise.&lt;/li&gt;
&lt;li&gt;"llamabench community" rows are aggregated llama-bench &lt;code&gt;tg128&lt;/code&gt; runs from &lt;a href="https://llamabench.ai" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;. Open the source for the exact quant and build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you have…&lt;/th&gt;
&lt;th&gt;What runs well (measured)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12 GB (RTX 3060)&lt;/td&gt;
&lt;td&gt;Gemma 4 12B at &lt;strong&gt;38.5 tok/s&lt;/strong&gt;, gpt-oss 20B at &lt;strong&gt;84 tok/s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16 GB (RTX 5060 Ti / 5070 Ti / 5080)&lt;/td&gt;
&lt;td&gt;gpt-oss 20B at &lt;strong&gt;112 / 189 / 205 tok/s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 GB (RTX 3090 / 4090)&lt;/td&gt;
&lt;td&gt;Qwen3.6 35B-A3B at &lt;strong&gt;140–153 tok/s&lt;/strong&gt; on a 3090; Qwen3.8 27B at &lt;strong&gt;40.4 tok/s&lt;/strong&gt; (72.5 with MTP) on a 3090; Gemma 4 31B at &lt;strong&gt;43.8 tok/s&lt;/strong&gt; on a 4090&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;32 GB (RTX 5090)&lt;/td&gt;
&lt;td&gt;Qwen3.6 35B-A3B at &lt;strong&gt;258&lt;/strong&gt;, Qwen3.8 27B at &lt;strong&gt;75.2&lt;/strong&gt;, Gemma 4 31B at &lt;strong&gt;70 tok/s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;96 GB+ (RTX Pro 6000, Macs)&lt;/td&gt;
&lt;td&gt;gpt-oss 120B at &lt;strong&gt;196 tok/s&lt;/strong&gt; (Pro 6000) / &lt;strong&gt;79.7 tok/s&lt;/strong&gt; (M2 Ultra)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Details and sources below.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. gpt-oss 20B: the one model everyone has benchmarked
&lt;/h2&gt;

&lt;p&gt;gpt-oss 20B runs in its native MXFP4 format, so these numbers compare well across cards. These are llama-bench &lt;code&gt;tg128&lt;/code&gt; results from the official llama.cpp gpt-oss guide (&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;discussion #15396&lt;/a&gt;), plus Apple results:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;gpt-oss 20B tok/s&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX Pro 6000 (Blackwell)&lt;/td&gt;
&lt;td&gt;96 GB&lt;/td&gt;
&lt;td&gt;286.91&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5090&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;282.51&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5080&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;204.85&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5070 Ti&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;189.45&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090&lt;/td&gt;
&lt;td&gt;24 GB&lt;/td&gt;
&lt;td&gt;161.77&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M2 Ultra (76-core GPU)&lt;/td&gt;
&lt;td&gt;192 GB&lt;/td&gt;
&lt;td&gt;116.08&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/4167" rel="noopener noreferrer"&gt;llama.cpp #4167&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M3 Ultra&lt;/td&gt;
&lt;td&gt;512 GB&lt;/td&gt;
&lt;td&gt;115.52&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5060 Ti 16GB&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;111.51&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M4 Max (MacBook)&lt;/td&gt;
&lt;td&gt;36 GB&lt;/td&gt;
&lt;td&gt;92.36&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M1 Max&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;75.15&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Takeaway: a &lt;strong&gt;16 GB card is enough&lt;/strong&gt; for gpt-oss 20B. Even the 5060 Ti does over 100 tok/s, which is far faster than you can read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed &lt;em&gt;and&lt;/em&gt; power: whole-system measurements
&lt;/h3&gt;

&lt;p&gt;Jeff Geerling's &lt;a href="https://github.com/geerlingguy/ai-benchmarks" rel="noopener noreferrer"&gt;ai-benchmarks&lt;/a&gt; records peak &lt;strong&gt;whole-system&lt;/strong&gt; power during each run. That data is rare. (His summary table doesn't state the quant.)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;System&lt;/th&gt;
&lt;th&gt;gpt-oss 20B tok/s&lt;/th&gt;
&lt;th&gt;Peak system power&lt;/th&gt;
&lt;th&gt;tok/s per W &lt;em&gt;(arithmetic)&lt;/em&gt;
&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core Ultra 265K + RTX 4090&lt;/td&gt;
&lt;td&gt;279.65&lt;/td&gt;
&lt;td&gt;509.1 W&lt;/td&gt;
&lt;td&gt;0.55&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/43" rel="noopener noreferrer"&gt;#43&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core Ultra 265K + Radeon AI Pro R9700 (32 GB)&lt;/td&gt;
&lt;td&gt;163.26&lt;/td&gt;
&lt;td&gt;332.9 W&lt;/td&gt;
&lt;td&gt;0.49&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/35" rel="noopener noreferrer"&gt;#35&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core Ultra 265K + RTX 4070 Ti&lt;/td&gt;
&lt;td&gt;163.14&lt;/td&gt;
&lt;td&gt;298.7 W&lt;/td&gt;
&lt;td&gt;0.55&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/45" rel="noopener noreferrer"&gt;#45&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mac Studio M3 Ultra 512 GB&lt;/td&gt;
&lt;td&gt;115.29&lt;/td&gt;
&lt;td&gt;227 W&lt;/td&gt;
&lt;td&gt;0.51&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/42" rel="noopener noreferrer"&gt;#42&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core Ultra 265K + RTX A4000&lt;/td&gt;
&lt;td&gt;93.55&lt;/td&gt;
&lt;td&gt;199.4 W&lt;/td&gt;
&lt;td&gt;0.47&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/36" rel="noopener noreferrer"&gt;#36&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dell Pro Max GB10 (DGX Spark)&lt;/td&gt;
&lt;td&gt;87.97&lt;/td&gt;
&lt;td&gt;122.8 W&lt;/td&gt;
&lt;td&gt;0.72&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/34" rel="noopener noreferrer"&gt;#34&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core Ultra 265K + RTX 3060&lt;/td&gt;
&lt;td&gt;83.96&lt;/td&gt;
&lt;td&gt;229.3 W&lt;/td&gt;
&lt;td&gt;0.37&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/geerlingguy/ai-benchmarks/issues/40" rel="noopener noreferrer"&gt;#40&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The DGX Spark is the slowest box here on raw speed, but it gets the most tokens per watt. The 4090 is the fastest, at about 4× the Spark's peak draw.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. gpt-oss 120B: you need ~96 GB of fast memory
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;gpt-oss 120B tok/s&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX Pro 6000 (Blackwell, 96 GB)&lt;/td&gt;
&lt;td&gt;196.31&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/15396" rel="noopener noreferrer"&gt;llama.cpp #15396&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M2 Ultra 192 GB&lt;/td&gt;
&lt;td&gt;79.68&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ggml-org/llama.cpp/discussions/4167" rel="noopener noreferrer"&gt;llama.cpp #4167&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Qwen3.6 35B-A3B: the 24 GB sweet spot
&lt;/h2&gt;

&lt;p&gt;It's a mixture-of-experts model with only ~3B active parameters, so it runs very fast once it fits.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;tok/s&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5090 (32 GB)&lt;/td&gt;
&lt;td&gt;llama-bench tg128&lt;/td&gt;
&lt;td&gt;258&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/rtx5090" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4× RTX 3090 (using 2)&lt;/td&gt;
&lt;td&gt;vLLM, AWQ-INT4, TP=2 + MTP-3 speculative decoding&lt;/td&gt;
&lt;td&gt;225–231&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab" rel="noopener noreferrer"&gt;tfriedel/qwen3.6-rtx3090-lab&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4× RTX 3090 (using 2)&lt;/td&gt;
&lt;td&gt;vLLM, AWQ-INT4, TP=2&lt;/td&gt;
&lt;td&gt;149&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab" rel="noopener noreferrer"&gt;same&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (24 GB)&lt;/td&gt;
&lt;td&gt;llama-bench tg128&lt;/td&gt;
&lt;td&gt;146–153&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/rtx3090" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (24 GB)&lt;/td&gt;
&lt;td&gt;Q4 GGUF, all layers on GPU, ~90K context&lt;/td&gt;
&lt;td&gt;139.6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.gilesthomas.com/2026/07/benchmarking-qwen-3-6-35b-moe-rtx-3090" rel="noopener noreferrer"&gt;Giles Thomas&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (24 GB)&lt;/td&gt;
&lt;td&gt;llama.cpp, IQ4_XS, 1 GPU&lt;/td&gt;
&lt;td&gt;115–133&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab" rel="noopener noreferrer"&gt;tfriedel lab&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 4090 (24 GB)&lt;/td&gt;
&lt;td&gt;llama.cpp, Q4_K_M&lt;/td&gt;
&lt;td&gt;160.6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llm-speed.com/r/r_m6j1zxwvp-f" rel="noopener noreferrer"&gt;llm-speed&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M5 Max (36 GB)&lt;/td&gt;
&lt;td&gt;oMLX, 4-bit MLX&lt;/td&gt;
&lt;td&gt;145.8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://rapidmlx.com/compare" rel="noopener noreferrer"&gt;Rapid-MLX compare&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel Arc Pro B70 (32 GB)&lt;/td&gt;
&lt;td&gt;vLLM XPU, GPTQ Int4, no MTP&lt;/td&gt;
&lt;td&gt;120&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/riceharvest/b70-qwen38-cookbook" rel="noopener noreferrer"&gt;riceharvest cookbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark (GB10)&lt;/td&gt;
&lt;td&gt;vLLM, NVFP4, 128K ctx, no spec. decoding&lt;/td&gt;
&lt;td&gt;78.1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/" rel="noopener noreferrer"&gt;Cristian Tala&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strix Halo (Radeon 8060S, 96 GB)&lt;/td&gt;
&lt;td&gt;llama-bench tg128&lt;/td&gt;
&lt;td&gt;50.2–62.4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/radeon8060s" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things stand out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One used RTX 3090 is enough.&lt;/strong&gt; Giles Thomas got 139.6 tok/s while keeping ~90K tokens of context on the GPU. At the full 262K context, with 12 layers of FFNs moved to the CPU, he still got about 66 tok/s (&lt;a href="https://www.gilesthomas.com/2026/07/benchmarking-qwen-3-6-35b-moe-rtx-3090" rel="noopener noreferrer"&gt;source&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A second 3090 helps through vLLM, not llama.cpp.&lt;/strong&gt; Tensor parallel with AWQ went from 115–133 to 149 tok/s, and adding MTP speculative decoding pushed it to 225–231.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Qwen3.8 27B: the new default dense model
&lt;/h2&gt;

&lt;p&gt;Qwen3.8 27B replaced Qwen3.6 27B and is now the most-benchmarked model in RigBase (50 results). It's dense, so every token reads all ~27B weights, and speed follows memory bandwidth. These are plain decode numbers, without speculative decoding:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;th&gt;Setup&lt;/th&gt;
&lt;th&gt;tok/s&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5090 (32 GB)&lt;/td&gt;
&lt;td&gt;llama.cpp, Q4_K_M&lt;/td&gt;
&lt;td&gt;75.2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llm-speed.com/r/r_dwp5fgdapmw" rel="noopener noreferrer"&gt;llm-speed&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (24 GB)&lt;/td&gt;
&lt;td&gt;OpenJet megakernel, Q4_K_M&lt;/td&gt;
&lt;td&gt;42.9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/L-Forster/open-jet/tree/master/megakernel" rel="noopener noreferrer"&gt;OpenJet&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3090 (24 GB)&lt;/td&gt;
&lt;td&gt;llama.cpp, Q4_K_M&lt;/td&gt;
&lt;td&gt;40.4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/L-Forster/open-jet/tree/master/megakernel" rel="noopener noreferrer"&gt;OpenJet&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple M5 Max (128 GB)&lt;/td&gt;
&lt;td&gt;MLX 4-bit&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;&lt;a href="https://baobabtech.ai/posts/local-moe-m5-max-qwen-gemma-speed" rel="noopener noreferrer"&gt;Baobab Tech&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radeon AI Pro R9700 (32 GB)&lt;/td&gt;
&lt;td&gt;Ollama, Q4_K_M (includes hidden reasoning tokens)&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.vaditaslim.com/blog/ai/qwen3.8-27b-two-rigs" rel="noopener noreferrer"&gt;vaditaslim&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5060 Ti 16GB&lt;/td&gt;
&lt;td&gt;llama.cpp, UD-IQ4_XS, 8K ctx&lt;/td&gt;
&lt;td&gt;28.0&lt;/td&gt;
&lt;td&gt;&lt;a href="https://jesvs.com/posts/llama-cpp-dual-gpu-optimization/" rel="noopener noreferrer"&gt;JESVS&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel Arc Pro B70 (32 GB)&lt;/td&gt;
&lt;td&gt;llama.cpp SYCL, Q4_K_M&lt;/td&gt;
&lt;td&gt;27.8&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/steveseguin/b70-optimization-lab" rel="noopener noreferrer"&gt;b70-optimization-lab&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strix Halo (Radeon 8060S)&lt;/td&gt;
&lt;td&gt;llama.cpp ROCm, Q4_K_M&lt;/td&gt;
&lt;td&gt;12.6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://akitaonrails.github.io/en/2026/10/22/llm-benchmark-v4-consumer-open-source-rtx5090-strix-halo-strata/" rel="noopener noreferrer"&gt;AkitaOnRails&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DGX Spark (GB10)&lt;/td&gt;
&lt;td&gt;vLLM, 128K ctx&lt;/td&gt;
&lt;td&gt;11.0&lt;/td&gt;
&lt;td&gt;&lt;a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/" rel="noopener noreferrer"&gt;Cristian Tala&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3060 12GB&lt;/td&gt;
&lt;td&gt;llama-bench (doesn't fit, offloads)&lt;/td&gt;
&lt;td&gt;5.2–6.7&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/rtx3060" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Turn on MTP.&lt;/strong&gt; Qwen3.8 supports multi-token-prediction (MTP) drafting, and in same-hardware tests it helps a lot. On the RTX 3090 it took llama.cpp from 40.4 to 72.5 tok/s on a code prompt (50.9 on a reasoning prompt) (&lt;a href="https://github.com/L-Forster/open-jet/tree/master/megakernel" rel="noopener noreferrer"&gt;OpenJet&lt;/a&gt;). On Strix Halo it took Vulkan Q6_K from 9.59 to 18.01 (&lt;a href="https://sleepingrobots.com/dreams/qwen38-mtp-strix-halo/" rel="noopener noreferrer"&gt;Sleeping Robots&lt;/a&gt;), and on the DGX Spark it took vLLM from 11.0 to 19.0 (&lt;a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/" rel="noopener noreferrer"&gt;Cristian Tala&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Gemma 4 and Qwen3.6 27B: dense models, where bandwidth wins
&lt;/h2&gt;

&lt;p&gt;Dense models read every weight for every token, so speed follows memory bandwidth. Here are llamabench community &lt;code&gt;tg128&lt;/code&gt; results:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;RTX 5090&lt;/th&gt;
&lt;th&gt;RTX 4090&lt;/th&gt;
&lt;th&gt;5090 ÷ 4090 &lt;em&gt;(arithmetic)&lt;/em&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;70.0&lt;/td&gt;
&lt;td&gt;43.8&lt;/td&gt;
&lt;td&gt;1.60×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3.6 27B &lt;em&gt;(legacy, now Qwen3.8 27B)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;75.7&lt;/td&gt;
&lt;td&gt;47.0&lt;/td&gt;
&lt;td&gt;1.61×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 26B-A4B (MoE)&lt;/td&gt;
&lt;td&gt;235&lt;/td&gt;
&lt;td&gt;164&lt;/td&gt;
&lt;td&gt;1.43×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 12B&lt;/td&gt;
&lt;td&gt;142&lt;/td&gt;
&lt;td&gt;98.1&lt;/td&gt;
&lt;td&gt;1.45×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-oss 20B&lt;/td&gt;
&lt;td&gt;313&lt;/td&gt;
&lt;td&gt;203&lt;/td&gt;
&lt;td&gt;1.54×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sources: &lt;a href="https://llamabench.ai/browse/rtx5090" rel="noopener noreferrer"&gt;RTX 5090&lt;/a&gt;, &lt;a href="https://llamabench.ai/browse/rtx4090" rel="noopener noreferrer"&gt;RTX 4090&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On dense ~30B models, the 5090 is about &lt;strong&gt;1.6× faster&lt;/strong&gt; than the 4090. On the MoE models the gap is smaller.&lt;/p&gt;

&lt;p&gt;For the RTX 3090, llamabench lists &lt;strong&gt;40.2 tok/s&lt;/strong&gt; on Qwen3.6 27B (&lt;a href="https://llamabench.ai/browse/rtx3090" rel="noopener noreferrer"&gt;source&lt;/a&gt;). That row includes some runs with speculative decoding, so don't compare it directly with the table above.&lt;/p&gt;

&lt;p&gt;Gemma 4 12B on smaller cards (llamabench community):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Card&lt;/th&gt;
&lt;th&gt;Gemma 4 12B tok/s&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 5070 Ti (16 GB)&lt;/td&gt;
&lt;td&gt;87.6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/rtx5070ti" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3060 (12 GB)&lt;/td&gt;
&lt;td&gt;38.5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://llamabench.ai/browse/rtx3060" rel="noopener noreferrer"&gt;llamabench.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  So what should you buy?
&lt;/h2&gt;

&lt;p&gt;Based only on the numbers above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;gpt-oss 20B / Gemma 4 12B:&lt;/strong&gt; any 16 GB card works. A 12 GB RTX 3060 runs both at usable speeds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.6 35B-A3B:&lt;/strong&gt; a single 24 GB card. A used RTX 3090 does 140–153 tok/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dense ~30B (Qwen3.8 27B, Gemma 4 31B):&lt;/strong&gt; 24 GB fits them at Q4. A used 3090 does ~40 tok/s on Qwen3.8 27B (≈72 with MTP); the RTX 5090 does 75.2 and is ~1.6× faster than a 4090 on Gemma 4 31B.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;gpt-oss 120B:&lt;/strong&gt; a 96 GB GPU or a big-memory Mac.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lowest power:&lt;/strong&gt; the DGX Spark had the best tokens-per-watt on gpt-oss 20B in Geerling's tests, though it was the slowest box.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Missing your card?
&lt;/h2&gt;

&lt;p&gt;The full dataset has 117 builds and 298 measured results, with parts lists, power draw and a link to every source: &lt;strong&gt;&lt;a href="https://getrigbase.com" rel="noopener noreferrer"&gt;RigBase&lt;/a&gt;&lt;/strong&gt;. Browse &lt;a href="https://getrigbase.com/gpus/" rel="noopener noreferrer"&gt;by GPU&lt;/a&gt; or &lt;a href="https://getrigbase.com/best/" rel="noopener noreferrer"&gt;by VRAM size&lt;/a&gt;, check fit on the &lt;a href="https://getrigbase.com/can-it-run/" rel="noopener noreferrer"&gt;Can it run? calculator&lt;/a&gt;, or download it all free as &lt;a href="https://getrigbase.com/data/" rel="noopener noreferrer"&gt;CSV/JSON (CC BY 4.0)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you've run llama-bench on a current model, &lt;a href="https://getrigbase.com/submit/" rel="noopener noreferrer"&gt;submit it&lt;/a&gt;. It needs a proof link, and that's the only way a number gets in.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Data snapshot: RigBase builds.json, first published 19 Oct 2026, updated 24 Oct 2026. Corrections welcome. Every row links to its source, so check there first.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>hardware</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
