<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RigBase]]></title><description><![CDATA[RigBase]]></description><link>https://rigbase.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 02 Nov 2026 19:04:09 GMT</lastBuildDate><atom:link href="https://rigbase.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[What 117 real local-LLM rigs tell us about tok/s per euro in 2026]]></title><description><![CDATA[We divided measured tokens/sec from 117 sourced home AI builds by current German GPU prices.]]></description><link>https://rigbase.hashnode.dev/what-117-real-local-llm-rigs-tell-us-about-tok-s-per-euro-in-2026</link><guid isPermaLink="true">https://rigbase.hashnode.dev/what-117-real-local-llm-rigs-tell-us-about-tok-s-per-euro-in-2026</guid><category><![CDATA[llm]]></category><category><![CDATA[AI]]></category><category><![CDATA[hardware]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[RigBase]]></dc:creator><pubDate>Thu, 29 Oct 2026 07:30:46 GMT</pubDate><content:encoded><![CDATA[<p>"Which GPU should I buy for local LLMs?" usually gets answered with spec sheets. I wanted an answer from <strong>measured</strong> numbers, so I took the open <a href="https://getrigbase.com/data/">RigBase dataset</a> (117 home AI builds, 298 measured results, every row linked to its public source) and divided tokens/sec by what the card costs today.</p>
<p>Short version:</p>
<ul>
<li><strong>A used RTX 3090 gives about 3× more generation speed per euro than an RTX 5090</strong> on every current model measured on both. The 5090 is 1.76–1.86× faster, but costs ~5.7× as much.</li>
<li><strong>For gpt-oss 20B, 16 GB cards win on value.</strong> RTX 5070 Ti and 5060 Ti both deliver ~150 tok/s per €1,000.</li>
<li><strong>Speculative decoding (MTP and friends) gave a median 1.76× speedup</strong> in ten same-hardware before/after pairs. That's a free upgrade.</li>
</ul>
<h2>The dataset in one paragraph</h2>
<ul>
<li>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.</li>
<li>Sources: 33 different sites. GitHub repos/issues are the biggest (47 builds), then Reddit (12), <a href="http://llm-speed.com">llm-speed.com</a> (10) and <a href="http://llamabench.ai">llamabench.ai</a> (7).</li>
<li>Engines: llama.cpp or Ollama (198 results), vLLM (37), MLX (29), other engines (34).</li>
<li>53 results use speculative decoding and are flagged as such, because they are not comparable 1:1 with plain decode.</li>
<li>Hardware: 72 NVIDIA builds, 24 Apple, 16 AMD, 3 Intel, 2 CPU-only.</li>
</ul>
<p>It's free under CC BY 4.0: <a href="https://getrigbase.com/data/builds.csv">builds.csv</a> and <a href="https://getrigbase.com/data/builds.json">builds.json</a>.</p>
<h2>Method (so you can disagree with it)</h2>
<ul>
<li><strong>Speed</strong> = 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.</li>
<li><strong>Price</strong> = lowest new listing on <a href="http://billiger.de">billiger.de</a> (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 <strong>€1,248</strong> (237 sales, <a href="https://www.pcprice.watch/gpu-buying-guide/rtx-3090-price-used-and-specs">PCPrice.Watch</a>, 24 Oct 2026).</li>
<li><strong>Value</strong> = tok/s ÷ GPU price × 1000, i.e. <strong>tok/s per €1,000 of GPU</strong>. GPU only: no CPU, RAM, PSU or case.</li>
<li>Different sources use different quants and builds. I group comparisons by source wherever possible, and you should treat gaps under ~10% as noise.</li>
</ul>
<h2>1. gpt-oss 20B: one source, six cards</h2>
<p>All of these are llama-bench runs in native MXFP4 from the same llama.cpp thread (<a href="https://github.com/ggml-org/llama.cpp/discussions/15396">discussion #15396</a>), so this is the cleanest comparison in the set.</p>
<table>
<thead>
<tr>
<th>GPU</th>
<th>tok/s</th>
<th>Price</th>
<th>tok/s per €1k</th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>RTX 5070 Ti</td>
<td>189.45</td>
<td>€1,245 new (2026-10-24)</td>
<td><strong>152.2</strong></td>
<td><a href="https://getrigbase.com/builds/single-rtx-5070-ti-gpt-oss/">build</a></td>
</tr>
<tr>
<td>RTX 5060 Ti 16GB</td>
<td>111.51</td>
<td>€739 new (2026-10-16)</td>
<td><strong>150.9</strong></td>
<td><a href="https://getrigbase.com/builds/single-rtx-5060-ti-16gb-gpt-oss/">build</a></td>
</tr>
<tr>
<td>RTX 3090 (used)</td>
<td>161.77</td>
<td>€1,248 used (eBay sold median)</td>
<td><strong>129.6</strong></td>
<td><a href="https://getrigbase.com/builds/single-rtx-3090-gpt-oss/">build</a></td>
</tr>
<tr>
<td>RTX 5080</td>
<td>204.85</td>
<td>€1,770 new (2026-10-24)</td>
<td><strong>115.7</strong></td>
<td><a href="https://getrigbase.com/builds/single-rtx-5080-gpt-oss/">build</a></td>
</tr>
<tr>
<td>RTX 5090</td>
<td>282.51</td>
<td>€7,140 new (2026-10-24)</td>
<td><strong>39.6</strong></td>
<td><a href="https://getrigbase.com/builds/single-rtx-5090-gpt-oss/">build</a></td>
</tr>
<tr>
<td>RTX Pro 6000 Blackwell</td>
<td>286.91</td>
<td>€16,885 new (2026-10-24)</td>
<td><strong>17.0</strong></td>
<td><a href="https://getrigbase.com/builds/rtx-pro-6000-96gb/">build</a></td>
</tr>
</tbody></table>
<p>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.</p>
<h3>Same test rig, with power</h3>
<p>Jeff Geerling's <a href="https://github.com/geerlingguy/ai-benchmarks">ai-benchmarks</a> swaps cards in one Core Ultra 265K system and records peak <strong>whole-system</strong> power:</p>
<table>
<thead>
<tr>
<th>GPU</th>
<th>gpt-oss 20B tok/s</th>
<th>Price</th>
<th>tok/s per €1k</th>
<th>Peak system power</th>
<th>tok/s per W</th>
</tr>
</thead>
<tbody><tr>
<td>RTX 3060 12GB</td>
<td>83.96</td>
<td>€429 (2026-10-16)</td>
<td><strong>195.7</strong></td>
<td>229.3 W</td>
<td>0.37</td>
</tr>
<tr>
<td>RTX A4000</td>
<td>93.55</td>
<td>€1,050 (2026-10-24)</td>
<td><strong>89.1</strong></td>
<td>199.4 W</td>
<td>0.47</td>
</tr>
<tr>
<td>Radeon AI Pro R9700</td>
<td>163.26</td>
<td>€1,848 (2026-10-24)</td>
<td><strong>88.4</strong></td>
<td>332.9 W</td>
<td>0.49</td>
</tr>
<tr>
<td>RTX 4090</td>
<td>279.65</td>
<td>€3,955 (2026-10-16)</td>
<td><strong>70.7</strong></td>
<td>509.1 W</td>
<td>0.55</td>
</tr>
</tbody></table>
<p>Sources: <a href="https://github.com/geerlingguy/ai-benchmarks/issues/40">#40</a>, <a href="https://github.com/geerlingguy/ai-benchmarks/issues/36">#36</a>, <a href="https://github.com/geerlingguy/ai-benchmarks/issues/35">#35</a>, <a href="https://github.com/geerlingguy/ai-benchmarks/issues/43">#43</a>. The quant isn't stated in his summary table.</p>
<p>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.</p>
<h2>2. Current 24–32 GB models: used 3090 vs 4090 vs 5090</h2>
<p>Here are single-card results on current models, without speculative decoding. Each cell shows <strong>measured tok/s → tok/s per €1k</strong>.</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>RTX 3090 (used, €1,248)</th>
<th>RTX 4090 (€3,955)</th>
<th>RTX 5090 (€7,140)</th>
<th>5090 ÷ 3090 speed</th>
</tr>
</thead>
<tbody><tr>
<td>Qwen3.6 35B-A3B</td>
<td>146 → <strong>117.0</strong></td>
<td>160.6 → 40.6</td>
<td>258 → 36.1</td>
<td>1.77×</td>
</tr>
<tr>
<td>Gemma 4 31B</td>
<td>38.8 → <strong>31.1</strong></td>
<td>43.8 → 11.1</td>
<td>71.3 → 10.0</td>
<td>1.84×</td>
</tr>
<tr>
<td>Nemotron 3.5 Bolt 74B-A9B (2-bit)</td>
<td>87.75 → <strong>70.3</strong></td>
<td>108 → 27.3</td>
<td>154.7 → 21.7</td>
<td>1.76×</td>
</tr>
<tr>
<td>Qwen3.8 27B</td>
<td>40.4 → <strong>32.4</strong></td>
<td>—</td>
<td>75.2 → 10.5</td>
<td>1.86×</td>
</tr>
</tbody></table>
<p>Sources per row:</p>
<ul>
<li><strong>Qwen3.6:</strong> 3090 <a href="https://llamabench.ai/browse/rtx3090">llamabench</a> (low end of 146–153), 4090 <a href="https://llm-speed.com/r/r_m6j1zxwvp-f">llm-speed</a>, 5090 <a href="https://llamabench.ai/browse/rtx5090">llamabench</a>.</li>
<li><strong>Gemma 4 31B:</strong> <a href="https://localllmadvisor.com/can-run/gemma-4-31b-on-rtx-3090-24gb.html">3090</a>, <a href="https://llamabench.ai/browse/rtx4090">4090</a>, <a href="https://localllmadvisor.com/can-run/gemma-4-31b-on-rtx-5090-32gb.html">5090</a>.</li>
<li><strong>Nemotron Bolt:</strong> <a href="https://llm-speed.com/blog/nemotron-3-5-bolt-74b-24gb-measured">llm-speed post</a> for the 3090 and 5090, <a href="https://llamabench.ai/browse/rtx4090">llamabench</a> for the 4090.</li>
<li><strong>Qwen3.8 27B:</strong> 3090 <a href="https://github.com/L-Forster/open-jet/tree/master/megakernel">OpenJet README</a> (llama.cpp, no speculation), 5090 <a href="https://llm-speed.com/r/r_dwp5fgdapmw">llm-speed</a>.</li>
</ul>
<p><strong>On all four models the used 3090 gives 3.1–3.2× more tok/s per euro than the 5090.</strong> 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.</p>
<h2>3. The cheapest upgrade: speculative decoding</h2>
<p>Here are ten before/after pairs where the <strong>same build</strong> ran the <strong>same model</strong> with the same engine and quant, and the only change was turning on a draft method (MTP, DSpark):</p>
<table>
<thead>
<tr>
<th>Setup</th>
<th>Model</th>
<th>Plain tok/s</th>
<th>With drafting</th>
<th>Speedup</th>
</tr>
</thead>
<tbody><tr>
<td>RTX 3090, llama.cpp Q4_K_M, MTP 2 drafts (code prompt)</td>
<td>Qwen3.8 27B</td>
<td>40.4</td>
<td>72.5</td>
<td><strong>1.79×</strong></td>
</tr>
<tr>
<td>RTX 3090, llama.cpp Q4_K_M, MTP 2 drafts (reasoning prompt)</td>
<td>Qwen3.8 27B</td>
<td>40.4</td>
<td>50.9</td>
<td><strong>1.26×</strong></td>
</tr>
<tr>
<td>Strix Halo, llama.cpp Vulkan Q6_K, MTP n=2</td>
<td>Qwen3.8 27B</td>
<td>9.59</td>
<td>18.01</td>
<td><strong>1.88×</strong></td>
</tr>
<tr>
<td>Strix Halo, llama.cpp ROCm Q8_0, MTP n=3</td>
<td>Qwen3.8 27B</td>
<td>7.76</td>
<td>15.67</td>
<td><strong>2.02×</strong></td>
</tr>
<tr>
<td>Strix Halo, llama.cpp Vulkan Q8_0, MTP n=3</td>
<td>Qwen3.8 27B</td>
<td>7.77</td>
<td>13.19</td>
<td><strong>1.70×</strong></td>
</tr>
<tr>
<td>DGX Spark, vLLM, MTP k=2</td>
<td>Qwen3.8 27B</td>
<td>11</td>
<td>19</td>
<td><strong>1.73×</strong></td>
</tr>
<tr>
<td>DGX Spark, vLLM, MTP drafter k=3</td>
<td>Gemma 4 26B-A4B</td>
<td>30.8</td>
<td>56.5</td>
<td><strong>1.83×</strong></td>
</tr>
<tr>
<td>DGX Spark, vLLM NVFP4, MTP k=2</td>
<td>Qwen3.6 35B-A3B</td>
<td>78.1</td>
<td>102.3</td>
<td><strong>1.31×</strong></td>
</tr>
<tr>
<td>DGX Spark, vLLM, DSpark k=3</td>
<td>Nemotron 3.5 Lightning 30B-A3B</td>
<td>70.3</td>
<td>94.4</td>
<td><strong>1.34×</strong></td>
</tr>
<tr>
<td>2× Tesla V100, bnk Q8_0, MTP</td>
<td>Qwen3.8 27B</td>
<td>42.4</td>
<td>104</td>
<td><strong>2.45×</strong></td>
</tr>
</tbody></table>
<p>Sources: <a href="https://github.com/L-Forster/open-jet/tree/master/megakernel">OpenJet</a>, <a href="https://sleepingrobots.com/dreams/qwen38-mtp-strix-halo/">Sleeping Robots</a>, <a href="https://howquant.dev/benchmarks/strix-halo-rocm-vs-vulkan/">howquant.dev</a>, <a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/">Cristian Tala</a>, <a href="https://github.com/christ-pher/bnk">bnk</a>.</p>
<p>The speedups range from <strong>1.26× to 2.45×, with a median of 1.76×</strong>. That's roughly the gap between a 3090 and a 5090, and it costs nothing. Two patterns show up:</p>
<ul>
<li><strong>Small-active-parameter MoEs gain least.</strong> 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×.</li>
<li><strong>The prompt matters.</strong> 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.</li>
</ul>
<p>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.</p>
<h2>4. Big models: where there's no good per-euro answer yet</h2>
<p>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 <strong>gpt-oss 120B</strong>:</p>
<table>
<thead>
<tr>
<th>Hardware</th>
<th>tok/s</th>
<th>Engine</th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>RTX Pro 6000 Blackwell (96 GB)</td>
<td>196.31</td>
<td>llama.cpp MXFP4</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">source</a></td>
</tr>
<tr>
<td>Apple M2 Ultra 76-core (192 GB)</td>
<td>79.68</td>
<td>llama.cpp MXFP4</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/4167">source</a></td>
</tr>
<tr>
<td>Ryzen AI Max+ PRO 495 (Radeon 8065S)</td>
<td>55.8</td>
<td>llama.cpp Vulkan MXFP4</td>
<td><a href="https://www.hommie.net/posts/ai-box.html">source</a></td>
</tr>
<tr>
<td>Ryzen AI Max+ PRO 395 (Radeon 8060S)</td>
<td>44.7</td>
<td>llama.cpp Vulkan MXFP4</td>
<td><a href="https://petronellatech.com/blog/dgx-spark-vs-strix-halo-vs-gorgon-halo-local-llm-benchmarks/">source</a></td>
</tr>
<tr>
<td>DGX Spark (GB10)</td>
<td>44.4</td>
<td>vLLM, 128K ctx</td>
<td><a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/">source</a></td>
</tr>
</tbody></table>
<p>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.</p>
<h2>Takeaways</h2>
<ol>
<li><strong>Up to ~20B MoE (gpt-oss 20B, Qwen3.5 9B, Gemma 4 12B):</strong> buy a 16 GB card. The RTX 5060 Ti and 5070 Ti tie on value at ~150 tok/s per €1k.</li>
<li><strong>27–35B (Qwen3.8 27B, Qwen3.6 35B-A3B, Gemma 4 31B):</strong> a used RTX 3090 gives ~3× the value of a 5090. The 5090 is ~1.8× faster.</li>
<li><strong>Before buying anything, turn on speculative decoding.</strong> In this data it was worth a median 1.76×.</li>
<li><strong>Don't buy a halo card for value.</strong> The RTX Pro 6000 is at 17 tok/s per €1k on gpt-oss 20B, versus 152 for a 5070 Ti.</li>
</ol>
<h2>Get the data, add yours</h2>
<ul>
<li>Browse by <a href="https://getrigbase.com/gpus/">GPU</a>, by <a href="https://getrigbase.com/best/">VRAM size</a>, or <a href="https://getrigbase.com/can-it-run/">check if a model fits your card</a>.</li>
<li>Download everything: <a href="https://getrigbase.com/data/">getrigbase.com/data</a> (CSV + JSON, CC BY 4.0, attribution "RigBase").</li>
<li>Ran llama-bench on a current model? <a href="https://getrigbase.com/submit/">Submit it</a>. It needs a public proof link, and that's the only way a number gets in.</li>
</ul>
<p><em>Data snapshot: RigBase builds.json, 24 Oct 2026. Prices:</em> <a href="http://billiger.de"><em>billiger.de</em></a> <em>16–24 Oct 2026; used RTX 3090 from PCPrice.Watch, 24 Oct 2026. All ratios are arithmetic on the sourced numbers. Corrections welcome.</em></p>
]]></content:encoded></item><item><title><![CDATA[What GPU do you need for Qwen3.8, Qwen3.6, Gemma 4 and gpt-oss locally? (measured, Oct 2026)]]></title><description><![CDATA[Measured tokens/sec for Qwen3.8 27B, Qwen3.6, Gemma 4 and gpt-oss on 117 real home rigs, every number sourced.]]></description><link>https://rigbase.hashnode.dev/what-gpu-do-you-need-for-qwen3-8-qwen3-6-gemma-4-and-gpt-oss-locally-measured-oct-2026</link><guid isPermaLink="true">https://rigbase.hashnode.dev/what-gpu-do-you-need-for-qwen3-8-qwen3-6-gemma-4-and-gpt-oss-locally-measured-oct-2026</guid><category><![CDATA[llm]]></category><category><![CDATA[AI]]></category><category><![CDATA[hardware]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[RigBase]]></dc:creator><pubDate>Tue, 27 Oct 2026 07:21:19 GMT</pubDate><content:encoded><![CDATA[<p>Every time a new open model comes out, people ask the same thing: <em>will it run on my card, and how fast?</em> Spec-sheet calculators can tell you whether the weights <em>fit</em>. They can't tell you what speed you'll actually get. So here are <strong>measured</strong> 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.</p>
<p><strong>How to read the numbers</strong></p>
<ul>
<li>Speeds are <em>generation</em> (decode) tokens/sec at short context unless noted. Prompt processing is a different number and is usually much faster.</li>
<li>Sources use different engines, quants and llama.cpp builds. Treat gaps under ~10% as noise.</li>
<li>"llamabench community" rows are aggregated llama-bench <code>tg128</code> runs from <a href="https://llamabench.ai">llamabench.ai</a>. Open the source for the exact quant and build.</li>
</ul>
<h2>TL;DR</h2>
<table>
<thead>
<tr>
<th>If you have…</th>
<th>What runs well (measured)</th>
</tr>
</thead>
<tbody><tr>
<td>12 GB (RTX 3060)</td>
<td>Gemma 4 12B at <strong>38.5 tok/s</strong>, gpt-oss 20B at <strong>84 tok/s</strong></td>
</tr>
<tr>
<td>16 GB (RTX 5060 Ti / 5070 Ti / 5080)</td>
<td>gpt-oss 20B at <strong>112 / 189 / 205 tok/s</strong></td>
</tr>
<tr>
<td>24 GB (RTX 3090 / 4090)</td>
<td>Qwen3.6 35B-A3B at <strong>140–153 tok/s</strong> on a 3090; Qwen3.8 27B at <strong>40.4 tok/s</strong> (72.5 with MTP) on a 3090; Gemma 4 31B at <strong>43.8 tok/s</strong> on a 4090</td>
</tr>
<tr>
<td>32 GB (RTX 5090)</td>
<td>Qwen3.6 35B-A3B at <strong>258</strong>, Qwen3.8 27B at <strong>75.2</strong>, Gemma 4 31B at <strong>70 tok/s</strong></td>
</tr>
<tr>
<td>96 GB+ (RTX Pro 6000, Macs)</td>
<td>gpt-oss 120B at <strong>196 tok/s</strong> (Pro 6000) / <strong>79.7 tok/s</strong> (M2 Ultra)</td>
</tr>
</tbody></table>
<p>Details and sources below.</p>
<h2>1. gpt-oss 20B: the one model everyone has benchmarked</h2>
<p>gpt-oss 20B runs in its native MXFP4 format, so these numbers compare well across cards. These are llama-bench <code>tg128</code> results from the official llama.cpp gpt-oss guide (<a href="https://github.com/ggml-org/llama.cpp/discussions/15396">discussion #15396</a>), plus Apple results:</p>
<table>
<thead>
<tr>
<th>Hardware</th>
<th>Memory</th>
<th>gpt-oss 20B tok/s</th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>RTX Pro 6000 (Blackwell)</td>
<td>96 GB</td>
<td>286.91</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>RTX 5090</td>
<td>32 GB</td>
<td>282.51</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>RTX 5080</td>
<td>16 GB</td>
<td>204.85</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>RTX 5070 Ti</td>
<td>16 GB</td>
<td>189.45</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>RTX 3090</td>
<td>24 GB</td>
<td>161.77</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>Apple M2 Ultra (76-core GPU)</td>
<td>192 GB</td>
<td>116.08</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/4167">llama.cpp #4167</a></td>
</tr>
<tr>
<td>Apple M3 Ultra</td>
<td>512 GB</td>
<td>115.52</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>RTX 5060 Ti 16GB</td>
<td>16 GB</td>
<td>111.51</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>Apple M4 Max (MacBook)</td>
<td>36 GB</td>
<td>92.36</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>Apple M1 Max</td>
<td>64 GB</td>
<td>75.15</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
</tbody></table>
<p>Takeaway: a <strong>16 GB card is enough</strong> for gpt-oss 20B. Even the 5060 Ti does over 100 tok/s, which is far faster than you can read.</p>
<h3>Speed <em>and</em> power: whole-system measurements</h3>
<p>Jeff Geerling's <a href="https://github.com/geerlingguy/ai-benchmarks">ai-benchmarks</a> records peak <strong>whole-system</strong> power during each run. That data is rare. (His summary table doesn't state the quant.)</p>
<table>
<thead>
<tr>
<th>System</th>
<th>gpt-oss 20B tok/s</th>
<th>Peak system power</th>
<th>tok/s per W <em>(arithmetic)</em></th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>Core Ultra 265K + RTX 4090</td>
<td>279.65</td>
<td>509.1 W</td>
<td>0.55</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/43">#43</a></td>
</tr>
<tr>
<td>Core Ultra 265K + Radeon AI Pro R9700 (32 GB)</td>
<td>163.26</td>
<td>332.9 W</td>
<td>0.49</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/35">#35</a></td>
</tr>
<tr>
<td>Core Ultra 265K + RTX 4070 Ti</td>
<td>163.14</td>
<td>298.7 W</td>
<td>0.55</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/45">#45</a></td>
</tr>
<tr>
<td>Mac Studio M3 Ultra 512 GB</td>
<td>115.29</td>
<td>227 W</td>
<td>0.51</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/42">#42</a></td>
</tr>
<tr>
<td>Core Ultra 265K + RTX A4000</td>
<td>93.55</td>
<td>199.4 W</td>
<td>0.47</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/36">#36</a></td>
</tr>
<tr>
<td>Dell Pro Max GB10 (DGX Spark)</td>
<td>87.97</td>
<td>122.8 W</td>
<td>0.72</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/34">#34</a></td>
</tr>
<tr>
<td>Core Ultra 265K + RTX 3060</td>
<td>83.96</td>
<td>229.3 W</td>
<td>0.37</td>
<td><a href="https://github.com/geerlingguy/ai-benchmarks/issues/40">#40</a></td>
</tr>
</tbody></table>
<p>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.</p>
<h2>2. gpt-oss 120B: you need ~96 GB of fast memory</h2>
<table>
<thead>
<tr>
<th>Hardware</th>
<th>gpt-oss 120B tok/s</th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>RTX Pro 6000 (Blackwell, 96 GB)</td>
<td>196.31</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/15396">llama.cpp #15396</a></td>
</tr>
<tr>
<td>Apple M2 Ultra 192 GB</td>
<td>79.68</td>
<td><a href="https://github.com/ggml-org/llama.cpp/discussions/4167">llama.cpp #4167</a></td>
</tr>
</tbody></table>
<h2>3. Qwen3.6 35B-A3B: the 24 GB sweet spot</h2>
<p>It's a mixture-of-experts model with only ~3B active parameters, so it runs very fast once it fits.</p>
<table>
<thead>
<tr>
<th>Hardware</th>
<th>Setup</th>
<th>tok/s</th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>RTX 5090 (32 GB)</td>
<td>llama-bench tg128</td>
<td>258</td>
<td><a href="https://llamabench.ai/browse/rtx5090">llamabench.ai</a></td>
</tr>
<tr>
<td>4× RTX 3090 (using 2)</td>
<td>vLLM, AWQ-INT4, TP=2 + MTP-3 speculative decoding</td>
<td>225–231</td>
<td><a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab">tfriedel/qwen3.6-rtx3090-lab</a></td>
</tr>
<tr>
<td>4× RTX 3090 (using 2)</td>
<td>vLLM, AWQ-INT4, TP=2</td>
<td>149</td>
<td><a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab">same</a></td>
</tr>
<tr>
<td>RTX 3090 (24 GB)</td>
<td>llama-bench tg128</td>
<td>146–153</td>
<td><a href="https://llamabench.ai/browse/rtx3090">llamabench.ai</a></td>
</tr>
<tr>
<td>RTX 3090 (24 GB)</td>
<td>Q4 GGUF, all layers on GPU, ~90K context</td>
<td>139.6</td>
<td><a href="https://www.gilesthomas.com/2026/07/benchmarking-qwen-3-6-35b-moe-rtx-3090">Giles Thomas</a></td>
</tr>
<tr>
<td>RTX 3090 (24 GB)</td>
<td>llama.cpp, IQ4_XS, 1 GPU</td>
<td>115–133</td>
<td><a href="https://github.com/tfriedel/qwen3.6-rtx3090-lab">tfriedel lab</a></td>
</tr>
<tr>
<td>RTX 4090 (24 GB)</td>
<td>llama.cpp, Q4_K_M</td>
<td>160.6</td>
<td><a href="https://llm-speed.com/r/r_m6j1zxwvp-f">llm-speed</a></td>
</tr>
<tr>
<td>Apple M5 Max (36 GB)</td>
<td>oMLX, 4-bit MLX</td>
<td>145.8</td>
<td><a href="https://rapidmlx.com/compare">Rapid-MLX compare</a></td>
</tr>
<tr>
<td>Intel Arc Pro B70 (32 GB)</td>
<td>vLLM XPU, GPTQ Int4, no MTP</td>
<td>120</td>
<td><a href="https://github.com/riceharvest/b70-qwen38-cookbook">riceharvest cookbook</a></td>
</tr>
<tr>
<td>DGX Spark (GB10)</td>
<td>vLLM, NVFP4, 128K ctx, no spec. decoding</td>
<td>78.1</td>
<td><a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/">Cristian Tala</a></td>
</tr>
<tr>
<td>Strix Halo (Radeon 8060S, 96 GB)</td>
<td>llama-bench tg128</td>
<td>50.2–62.4</td>
<td><a href="https://llamabench.ai/browse/radeon8060s">llamabench.ai</a></td>
</tr>
</tbody></table>
<p>Two things stand out:</p>
<ul>
<li><strong>One used RTX 3090 is enough.</strong> 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 (<a href="https://www.gilesthomas.com/2026/07/benchmarking-qwen-3-6-35b-moe-rtx-3090">source</a>).</li>
<li><strong>A second 3090 helps through vLLM, not llama.cpp.</strong> Tensor parallel with AWQ went from 115–133 to 149 tok/s, and adding MTP speculative decoding pushed it to 225–231.</li>
</ul>
<h2>4. Qwen3.8 27B: the new default dense model</h2>
<p>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:</p>
<table>
<thead>
<tr>
<th>Hardware</th>
<th>Setup</th>
<th>tok/s</th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>RTX 5090 (32 GB)</td>
<td>llama.cpp, Q4_K_M</td>
<td>75.2</td>
<td><a href="https://llm-speed.com/r/r_dwp5fgdapmw">llm-speed</a></td>
</tr>
<tr>
<td>RTX 3090 (24 GB)</td>
<td>OpenJet megakernel, Q4_K_M</td>
<td>42.9</td>
<td><a href="https://github.com/L-Forster/open-jet/tree/master/megakernel">OpenJet</a></td>
</tr>
<tr>
<td>RTX 3090 (24 GB)</td>
<td>llama.cpp, Q4_K_M</td>
<td>40.4</td>
<td><a href="https://github.com/L-Forster/open-jet/tree/master/megakernel">OpenJet</a></td>
</tr>
<tr>
<td>Apple M5 Max (128 GB)</td>
<td>MLX 4-bit</td>
<td>31</td>
<td><a href="https://baobabtech.ai/posts/local-moe-m5-max-qwen-gemma-speed">Baobab Tech</a></td>
</tr>
<tr>
<td>Radeon AI Pro R9700 (32 GB)</td>
<td>Ollama, Q4_K_M (includes hidden reasoning tokens)</td>
<td>30</td>
<td><a href="https://www.vaditaslim.com/blog/ai/qwen3.8-27b-two-rigs">vaditaslim</a></td>
</tr>
<tr>
<td>RTX 5060 Ti 16GB</td>
<td>llama.cpp, UD-IQ4_XS, 8K ctx</td>
<td>28.0</td>
<td><a href="https://jesvs.com/posts/llama-cpp-dual-gpu-optimization/">JESVS</a></td>
</tr>
<tr>
<td>Intel Arc Pro B70 (32 GB)</td>
<td>llama.cpp SYCL, Q4_K_M</td>
<td>27.8</td>
<td><a href="https://github.com/steveseguin/b70-optimization-lab">b70-optimization-lab</a></td>
</tr>
<tr>
<td>Strix Halo (Radeon 8060S)</td>
<td>llama.cpp ROCm, Q4_K_M</td>
<td>12.6</td>
<td><a href="https://akitaonrails.github.io/en/2026/10/22/llm-benchmark-v4-consumer-open-source-rtx5090-strix-halo-strata/">AkitaOnRails</a></td>
</tr>
<tr>
<td>DGX Spark (GB10)</td>
<td>vLLM, 128K ctx</td>
<td>11.0</td>
<td><a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/">Cristian Tala</a></td>
</tr>
<tr>
<td>RTX 3060 12GB</td>
<td>llama-bench (doesn't fit, offloads)</td>
<td>5.2–6.7</td>
<td><a href="https://llamabench.ai/browse/rtx3060">llamabench.ai</a></td>
</tr>
</tbody></table>
<p><strong>Turn on MTP.</strong> 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) (<a href="https://github.com/L-Forster/open-jet/tree/master/megakernel">OpenJet</a>). On Strix Halo it took Vulkan Q6_K from 9.59 to 18.01 (<a href="https://sleepingrobots.com/dreams/qwen38-mtp-strix-halo/">Sleeping Robots</a>), and on the DGX Spark it took vLLM from 11.0 to 19.0 (<a href="https://ctala.github.io/local-llm-agentic-workflows/benchmarks/">Cristian Tala</a>).</p>
<h2>5. Gemma 4 and Qwen3.6 27B: dense models, where bandwidth wins</h2>
<p>Dense models read every weight for every token, so speed follows memory bandwidth. Here are llamabench community <code>tg128</code> results:</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>RTX 5090</th>
<th>RTX 4090</th>
<th>5090 ÷ 4090 <em>(arithmetic)</em></th>
</tr>
</thead>
<tbody><tr>
<td>Gemma 4 31B</td>
<td>70.0</td>
<td>43.8</td>
<td>1.60×</td>
</tr>
<tr>
<td>Qwen3.6 27B <em>(legacy, now Qwen3.8 27B)</em></td>
<td>75.7</td>
<td>47.0</td>
<td>1.61×</td>
</tr>
<tr>
<td>Gemma 4 26B-A4B (MoE)</td>
<td>235</td>
<td>164</td>
<td>1.43×</td>
</tr>
<tr>
<td>Gemma 4 12B</td>
<td>142</td>
<td>98.1</td>
<td>1.45×</td>
</tr>
<tr>
<td>gpt-oss 20B</td>
<td>313</td>
<td>203</td>
<td>1.54×</td>
</tr>
</tbody></table>
<p>Sources: <a href="https://llamabench.ai/browse/rtx5090">RTX 5090</a>, <a href="https://llamabench.ai/browse/rtx4090">RTX 4090</a>.</p>
<p>On dense ~30B models, the 5090 is about <strong>1.6× faster</strong> than the 4090. On the MoE models the gap is smaller.</p>
<p>For the RTX 3090, llamabench lists <strong>40.2 tok/s</strong> on Qwen3.6 27B (<a href="https://llamabench.ai/browse/rtx3090">source</a>). That row includes some runs with speculative decoding, so don't compare it directly with the table above.</p>
<p>Gemma 4 12B on smaller cards (llamabench community):</p>
<table>
<thead>
<tr>
<th>Card</th>
<th>Gemma 4 12B tok/s</th>
<th>Source</th>
</tr>
</thead>
<tbody><tr>
<td>RTX 5070 Ti (16 GB)</td>
<td>87.6</td>
<td><a href="https://llamabench.ai/browse/rtx5070ti">llamabench.ai</a></td>
</tr>
<tr>
<td>RTX 3060 (12 GB)</td>
<td>38.5</td>
<td><a href="https://llamabench.ai/browse/rtx3060">llamabench.ai</a></td>
</tr>
</tbody></table>
<h2>So what should you buy?</h2>
<p>Based only on the numbers above:</p>
<ul>
<li><strong>gpt-oss 20B / Gemma 4 12B:</strong> any 16 GB card works. A 12 GB RTX 3060 runs both at usable speeds.</li>
<li><strong>Qwen3.6 35B-A3B:</strong> a single 24 GB card. A used RTX 3090 does 140–153 tok/s.</li>
<li><strong>Dense ~30B (Qwen3.8 27B, Gemma 4 31B):</strong> 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.</li>
<li><strong>gpt-oss 120B:</strong> a 96 GB GPU or a big-memory Mac.</li>
<li><strong>Lowest power:</strong> the DGX Spark had the best tokens-per-watt on gpt-oss 20B in Geerling's tests, though it was the slowest box.</li>
</ul>
<h2>Missing your card?</h2>
<p>The full dataset has 117 builds and 298 measured results, with parts lists, power draw and a link to every source: <strong><a href="https://getrigbase.com">RigBase</a></strong>. Browse <a href="https://getrigbase.com/gpus/">by GPU</a> or <a href="https://getrigbase.com/best/">by VRAM size</a>, check fit on the <a href="https://getrigbase.com/can-it-run/">Can it run? calculator</a>, or download it all free as <a href="https://getrigbase.com/data/">CSV/JSON (CC BY 4.0)</a>.</p>
<p>If you've run llama-bench on a current model, <a href="https://getrigbase.com/submit/">submit it</a>. It needs a proof link, and that's the only way a number gets in.</p>
<p><em>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.</em></p>
]]></content:encoded></item></channel></rss>