Draft · 16 Aug 2026

Local Lane Results

What actually sits on a 3090 and on a 2025 Strix Halo laptop. Not a frozen paper.

Desktop 26b = 1. Rank is Eff. = (Speed + vs 26b) / 2. z13 26b is second.

What this is

Personal benchmarking of large local models on two machines I actually use. Correctness is the local-lane L2 battery under opr, desktop only. Speed is decode rate (eval_count / eval_duration) on both boxes. Nothing here is UID-verified or registered as a claim. It will move.

The Qwen3.6 → 3.8 drop has its own page: 3.6 vs 3.8. Faster, not measurably more correct. This page is the field.

Two machines

Desktop — discrete 3090

1× NVIDIA RTX 3090, 24 GB. Stock TDP 350 W, capped at 320 W. Every desktop rate is therefore conservative. Q4, flash attention, KV q8_0. A second 3090 is installed and unpowered (wrong cord; replacement due 18 Aug). Dual-card numbers do not exist yet.

z13 — 2025 Strix Halo laptop

AMD Ryzen AI MAX 390, Radeon 8050S, 24 threads. 27 GB unified LPDDR5X. 17.5 GiB GPU-addressable (4.0 VRAM carve-out + 13.5 GTT). Backend is Vulkan (RADV GFX1151), not ROCm. Figures are AC + performance. Battery / power-saver made 26b look 3.4× slow (13.7 vs 51.6). Write the power state down or throw the number out.

Power ranking — Eff. = (Speed + vs 26b) / 2

A row is ranked only if it has a seat-battery L2 score (the three hard fixtures, pooled /54) and it runs on that machine. Speed is always against desktop gemma4:26b at 133.0 tok/s — z13 is on the same axis, not renormalized to itself. Correctness 1.00 is still 36/54, not 54/54.

Rubric. Two axes, equal weight. Eff. = (Speed + vs 26b) / 2. Order is Eff., then Speed on a tie. The column is parked here until a third axis exists. A 54/54 at the same decode would be vs-26b 1.50 and Eff. 1.25.

z13 gemma4:26b is 0.39× the desktop seat on speed and second on the rubric — ahead of every other rankable row. 3090 31b moves from eighth-fastest to fourth overall. Coder:14b drops: 0.55 speed does not survive 3/54.

3.8 at 44.6 is the stock tag (draft_num_predict 4). Same weights at draft 2 decode 50.3 (Speed 0.38, Eff. 0.66) — still behind z13 26b. See MTP. z13 Qwen rows are ctx 8192. L2 was not run on z13; vs-26b correctness is transferred.

# Machine Model tok/s Speed L2 vs 26b Eff.
1 3090 gemma4:26b 133.0 1.00 36/54 1.00 1.00
2 z13 gemma4:26b 51.3 0.39 36/54 1.00 0.70
3 3090 qwen3.8:27b 44.6 0.34 34/54 0.94 0.64
4 3090 gemma4:31b 33.9 0.25 36/54 1.00 0.63
5 z13 gemma4:31b 11.5 0.09 36/54 1.00 0.55
6 3090 qwen3.6:27b 37.3 0.28 28/54 0.78 0.53
7 z13 qwen3.8:27b @8k 16.3 0.12 34/54 0.94 0.53
8 z13 qwen3.6:27b @8k 13.0 0.10 28/54 0.78 0.44
9 3090 qwen2.5-coder:14b 72.9 0.55 3/54 0.08 0.32
10 3090 qwen3:32b 35.1 0.26 4/54 0.11 0.19
11 3090 gemma3:27b 39.9 0.30 0/54 0.00 0.15

We do not have a frontier 54/54. Agy Flash Low and Claude-in-Agy cleared the three seat fixtures at isolated n=3. That is 9/9 on a different harness, not 54 cells. A 54/54 would be 1.50 on vs-26b and 1.25 on Eff. at desktop-26b speed.

Ruled out — not ranked

These were measured. They do not get a rank. Mixing them into the tables above would launder a different instrument, a host-conditioned n=6, or a model that does not run.

Model What we have Why it is not ranked
granite4 197.9 tok/s desktop; floor 8/18 Floor battery (path fidelity), not the seat /54. Fast and below the ~12B knee.
llama3.1:8b floor 9/18 Same floor instrument. Same path-drop failure.
gemma4:e4b floor 13/18 Floor only. No seat /54.
gemma4:12b floor 17/18; 75.2 / 26.8 tok/s Floor knee, not a seat score. No /54. Slow for its size on the floor pack.
gpt-oss 51.4 tok/s on z13, 100% iGPU Speed peer of 26b on the laptop. No L2 on either machine. 13 Aug power state unrecorded.
nemotron-3-nano 121.2 tok/s at 7% spill; 0/18 on the three seat fixtures The 0 is real (left stubs). n=6, host-conditioned, do not fold into Elo. Not a floor score and not a /54.
qwen3.6:35b 86.4 tok/s at 4% spill; 9/18 Same three fixtures, n=6, do not fold into Elo. Usable. Not a 100%-GPU row.
qwen3-vl:30b 177 tok/s Vision grader, not a field model.

Floor pack (E5), for the record, is a different ranking problem: granite 8/18, llama 9/18, e4b 13/18, 12b 17/18, coder:14b 18/18. 26b is not the 1.00 there — those items saturate by 14B. It is how the floor was mapped. It is not this power ranking.

The resident field

Four models that run fully on the 3090 at the ladder context (16384). 26b is MoE (25.2B total / 3.8B active). 31b is dense. Both Qwen 27Bs are dense.

Model Kind 3090 tok/s z13 tok/s L2
gemma4:26b MoE, 3.8B active 133.0 51.3 36/54
qwen3.8:27b dense 44.6 16.3 @8k 34/54
qwen3.6:27b dense 37.3 13.0 @8k 28/54
gemma4:31b dense 33.9 11.5 36/54

26b and 31b are tied on this battery (p=0.49 in E11). 26b is ~3.9× the decode of 31b and ~3× the Qwens. That is the seat. Re-pulled 16 Aug 2026: same digest 6316f0629137 on both machines (Q4_K_M, 19 GB). Desktop n=3 at 16384: 33.9 tok/s, 100% GPU (33.2 / 34.2 / 34.2) — the old 34.8 was n=1, same model. z13 now loads at 2048, 8192, and 16384, 100% GPU, 11.5 tok/s. The mid-August “will not load / device-lost” row is stale. 11.5 is still below the ~20 tok/s interactive floor.

z13 Qwen rows are num_ctx 8192. 3.8 OOMs at the ladder’s 16384 (CLIP projector). 3.6 does not. Everyday interactive context on the laptop is below 8k anyway. Neither Qwen clears a ~20 tok/s “I am watching this” floor on z13; 26b at 51.3 does. Detail on the revision: 3.6 vs 3.8.

Two spill models

Host-conditioned rows. Not folded into Elo. Same three L2 fixtures, n=6, desktop, 15 Aug. Placement sampled from ollama ps.

Model Place tok/s L2 (same run) Read
qwen3.6:35b (MoE, 35B-A3B) 4%/96% — half the samples 100% 86.4 9/18 3.6:27b plus the log-format contract. Not 26b.
nemotron-3-nano 7%/93% 121.2 0/18 26b-class decode. Empty on the battery. Fast skip.
gemma4:26b (control) 100% GPU 128.0 12/18 and 11/18 Same-run control, two invocations.

4–7% spill is not a decode cliff. 35b-with-spill is ~2.3× the fully-resident 27b dense and ~2.5× the current 31b. Doubling context 16k → 32k cost ~3% (86.4 → 84.0) and the CPU fraction did not grow. Nano is 121 vs 26b’s 127 — a few tok/s, not a 3× hole. Architecture shows up (MoE / hybrid active params). The CPU slice does not make them dense-slow.

35b did not win merit. Same-run 26b was 12/18; 35b was 9/18. It picked up strict-log-format (6/6 vs 27b’s 2/6) and lost ambiguous-anchor (3/6 vs 6/6). Wall-clock on passing cells sat in the 26b band after load. Usable. Not the seat. There is no 100%-GPU 35b row on this card, so this is not a measurement of “what the 4% costs.”

Nano failed all 18 cells by missing the implementation, not by timing out. Cells died in 2.3–2.5s. Decode class does not predict L2.

Why 26b is still the seat

Tied with 31b on L2. Far faster. At L1 — the prompt a human actually types — 26b is 14/18 and 3.8 is 7/18 (p=0.04). 31b now loads on z13 (11.5 tok/s, 100% GPU) but stays below the interactive floor. 35b-with-spill is quicker than the dense 27Bs and still loses to 26b on the same-run L2. Nano is a speed demon that does not implement the task.

Published cards put 31b a notch above 26b. That can be true and still not be the 3090 pick.

What this does not say