Overview system, model roster, the full scoreboard, and the quality-vs-speed trade-off
System
Apple Mac Studio · macOS 26.3 (Sequoia) · ARM64
- Chip
- Apple M4 Max (T6041)
- CPU
- 16-core (12P + 4E)
- GPU
- 40-core integrated
- Neural Engine
- 16-core ANE
- Memory
- 128 GB unified (LPDDR5X, ~546 GB/s)
- Storage
- 1.8 TB SSD
- OS / kernel
- macOS 26.3 · Darwin 25.3.0
- Inference backend
- LM Studio · MLX (Apple Silicon)
- API endpoint
http://<lm-studio-host>:1234/v1
Models benchmarked
All MLX safetensors, run via LM Studio. Phase 1 (Qwen) verified 2026-05-19; Phase 2 (Gemma 4) verified 2026-05-22 (all 7 models, n=100 across HumanEval/MMLU/MATH/DROP/GPQA + n=50 LCB). The two right-most columns capture qualitative strengths and how each model is meant to be used in rotation. Model names link to the HuggingFace quant repo; Peak RAM is the loaded footprint from speed-probe telemetry (— where no qualifying probe — see Resource usage below); the rest is on-disk metadata.
| Model | Provider | Family | Arch | Total | Active | Quant | Disk | Peak RAM | Context | Vision | Tools | Best for | Expected usage | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
qwen/qwen3-coder-next ↗ HF |
Qwen (Alibaba) · mlx-communityvia LM Studio | Qwen3-Coder | MoE | 80 B | 3 B | 6-bit MLX | 64.76 GB | — | 256K (1M w/ YaRN) | — | ✓ | Agentic coding, multi-file edits, tool-driven repo work. Strong jdhodges (90) but weakest GPQA (37) of Phase 1. | Primary local coder. ~68 t/s thanks to 3B active despite 80B total — feels snappy on coding scaffolds. Don't reach for it on hard science Q&A. | |
qwen3.6-27b ↗ HF |
Qwen (Alibaba) · mlx-communityvia LM Studio | Qwen3.6 | Dense | 27 B | 27 B | 6-bit MLX | 22.80 GB | 48.8 GB | 128K | ✓ | ✓ | GPQA-tier science, MATH, DROP comprehension. Highest GPQA on the rig (70, >78 if not for 32 k truncation). | Quality-over-speed slot. Decode ~20 t/s and reasoning-heavy — expect long waits, especially past ~3 k context where prefill drops to ~5 t/s. Reserve for hard one-shot questions. | |
qwen3.6-35b-a3b ↗ HF |
Qwen (Alibaba) · mlx-communityvia LM Studio | Qwen3.6 | MoE | 35 B | 3 B | 6-bit MLX | 29.09 GB | 56.0 GB | 128K | ✓ | ✓ | Balanced reasoning + tool calls at MoE speed. Near-27b accuracy at ~4× the throughput. | Daily-driver chat with tools. ~85 t/s generation; jdhodges 97.5 leads Phase 1. Watch the documented MLX MoE tool-call regression on 4-bit/8-bit Qwen3.x-A3B checkpoints (6-bit unaffected so far). | |
gemma-4-26b-a4b-it-mlx@4bit ↗ HF |
Google · mlx-communityvia LM Studio | Gemma 4 | MoE | 26 B | 4 B | 4-bit MLX | 14.6 GB | — | 65K | ✓ | ✓ | Vision + throughput when RAM is tight. Fastest Gemma (~100 t/s) and lightest on disk (14.6 GB). | Pick when RAM-constrained or for vision drafts. 4-bit costs ~6 pp GPQA and ~3 pp MATH vs @6bit — prefer the 6-bit sibling when you have the headroom. | |
gemma-4-26b-a4b-it-mlx@6bit ↗ HF |
Google · mlx-communityvia LM Studio | Gemma 4 | MoE | 26 B | 4 B | 6-bit MLX | 21.81 GB | 30.3 GB* | 65K | ✓ | ✓ | Coding (LCB 88 %, ties 27b), vision, knowledge — the best Gemma quant overall and the fastest 88 % coder on the rig. | Recommended Gemma slot. ~80 t/s, near-lossless vs base, jdhodges 97.5 / veerman 83.3. Default to this for any Gemma workload unless you specifically need the 4-bit RAM savings. | |
gemma-4-31b-it-mlx ↗ HF |
Google · mlx-communityvia LM Studio | Gemma 4 | Dense | 31 B | 31 B | 8-bit MLX | 33.80 GB | — | 65K | ✓ | ✓ | DROP comprehension (+6 pp vs A4B@6bit) — and that's it. Demoted from rotation. | Skip in normal use. Decode ~13 t/s = 6× slower than A4B@6bit for indistinguishable accuracy on every other bench. Only reach for it if a specific dense behavior matters. | |
gemma-4-e4b-it-mlx ↗ HF |
Google · mlx-communityvia LM Studio | Gemma 4 | Dense | 4 B | 4 B | 8-bit MLX | ~7.5 GB | — | 32K | ✓ | ✓ | FIM / autocomplete / quick-call slot; fast vision drafts. | Tiny utility, ~70 t/s. MATH collapses to 14 % — never use it for hard symbolic work. Useful as a drafter / first-pass under an editor that streams completions. | |
agents-a1-xl-mlx ↗ HF |
InternScience / leonsarmiento (Qwen3.5 base) · communityvia LM Studio | Agents-A1 | MoE | ~40 B | ~3 B | 6-bit MLX | 29.90 GB | 108.1 GB | 256K | ✓* | ✓ | Tool-calling generalist. Top-tier jdhodges 92.5 / veerman 83.3, HumanEval 97, LCB 82, MMLU 82. Qwen3.5 MoE (256 experts / 8 active), heavy thinker. *vision tower present but untested on-rig. | Well-rounded but a heavy thinker — ~40 t/s effective under reasoning load, and it can't complete short-output workloads (thinking overruns 150-tok budgets). Doesn't displace coder-next (agentic speed), 27b (knowledge), or gemma@6bit (coding). MATH/DROP/GPQA + T-Bench not run (2026-07-05). | |
unsloth/minimax-m2.5 ↗ HF |
MiniMax · unsloth (GGUF)via LM Studio | MiniMax-M2.5 | MoE | 229 B | ~10 B | Q3_K_S GGUF | 98.69 GB | — | 60K (usable) | — | ✓ | Frontier-scale local coder/agent. LCB 78%, T-Bench 25.8% (4th on rig). Sole-model (>80 GB). | GGUF-only (MLX build ⛔ kernel-panics). ~37 t/s, always-on reasoning tax. MMLU/MATH/DROP/GPQA not run. | |
minimax-m2.5@iq2_m ↗ HF |
MiniMax · unsloth (GGUF)via LM Studio | MiniMax-M2.5 | MoE | 229 B | ~10 B | UD-IQ2_M GGUF | 78.20 GB | — | 60K (usable) | — | ✓ | Preferred MiniMax quant — LCB 76 (not regraded: no saved answers; Q3_K_S regrades to 78), Veerman 83, ties it on T-Bench (25.8%). Under 80 GB → co-resident. | ~43 t/s (+17% vs Q3_K_S). Pair with a fast generalist, or free ~50 GB for local-Docker T-Bench. T-Bench 25.8% (23/89) — exact tie with Q3_K_S. | |
qwen3.5-122b-a10b ↗ HF |
Alibaba (Qwen) · unsloth GGUF🔴 NO-GO | Qwen3.5 | MoE | 122 B | 10 B | GGUF Q4_K_S | 75.23 GB | 75.2 GB | 256K | ✓* | ✓ | Planning-slot challenger — NO-GO (2026-07-12). Ties qwen3.6-27b one-shot (HumanEval 96, LCB 62 — a lower bound, not regraded; ±3 pp) at ~2× decode (~36 t/s), but weaker agent (T-Bench 24.7, #5 — below MiniMax 25.8) and 75 GB sole-model. *vision advertised, untested. |
Faster sidegrade, not an upgrade. One-gen-older Qwen3.5 loses to the newer, smaller Qwen3.6 on every axis that matters for a slot: agentic (−6.8 pp T-Bench), memory (75 GB sole-model vs 27B's 22.8 GB swap-in), and a truncation liability (over-thinks, under-executes). Lesson: test the newest generation, not the biggest old model. |
Benchmark scoreboard
All accuracy benches (n=100), tool-calling suites, and creative-writing throughput in one matrix. Click any column header to sort ascending/descending; the best score in each numeric column is highlighted green. Hover a row to highlight it. Throughput columns are the creative-writing scenario (the most representative single number for "feels like" decode speed). The filter bar above hides models from every chart and this table at once.
| Model | HumanEval | MMLU | MATH | DROP | GPQA | LCB v6 | T-Bench | jdhodges | veerman | Gen t/s | Eff t/s |
|---|
Defaults: rows are in the same order as the Models table above. Click headers to re-rank. Accuracy = pass-rate %, tool-calling = score %, throughput = tok/s on the creative-writing scenario. T-Bench is on-rig Terminal-Bench 2.0 n=89 (terminus-2, --agent-timeout-multiplier 0.5, 2026-05-24 → 2026-05-29; qwen3.5-122b-a10b backfilled 2026-07-12) — all candidates measured. Phase-5 additions MiniMax-M2.5 Q3_K_S and UD-IQ2_M both appear in the charts and tie exactly on T-Bench at 25.8% (23/89).
Resource usage CPU · GPU · memory · power, from speed-probe telemetry
Per-model resource draw captured by macmon during the speed-probe runs (local models only — accuracy/throughput benchmarks and frontier models are not instrumented). Peak RAM is peak unified-memory footprint (weights + KV cache + runtime); Avg CPU/GPU are the mean per-sample utilisation; Peak power is the package total. Only runs with n ≥ 10 telemetry samples are shown — noisier runs are gated out and appear as — (qwen3-coder-next n=2, gemma-4-31b and gemma-4-e4b have no qualifying probe). The filter bar above hides rows here too.
| Model | Peak RAM (GB) | Avg CPU % | Avg GPU % | Peak power (W) | Samples | Probe date |
|---|---|---|---|---|---|---|
| qwen3.6-27b | 48.8 | 10.6 | 99.1 | 43.0 | 70 | 2026-05-17 |
| qwen3.6-35b-a3b | 56.0 | 10.1 | 93.7 | 27.4 | 15 | 2026-05-19 |
| gemma-4-26b-a4b @6bit* | 30.3 | 23.6 | 94.6 | 16.0 | 26 | 2026-04-08 |
| agents-a1-xl-mlx | 108.1 | 14.4 | 99.2 | 67.9 | 258 | 2026-07-04 |
| qwen3-coder-next | — | — | — | — | — | n=2 (below gate) |
| gemma-4-26b-a4b @4bit | — | — | — | — | — | no probe |
| gemma-4-31b dense | — | — | — | — | — | no probe |
| gemma-4-e4b | — | — | — | — | — | no probe |
Source: tools/local-llm-bench-m4-32gb/results/speed_probe/*_results.json (peak RAM / avg GPU / peak power / samples) + *_macmon.jsonl (per-sample cpu_usage_pct for Avg CPU). Rig: Apple M4 Max, 128 GB unified. * Gemma probe filename did not record the quant; attributed to @6bit (the primary Gemma slot).
Quality vs speed
Benchmark score against generation throughput — the trade-off the bar charts can't show. Bubble size ∝ on-disk footprint (GB). Pick the y-axis benchmark; "Composite" averages the six accuracy suites (missing suites are skipped and flagged in the tooltip). agents-a1-xl-mlx has no creative-writing throughput sample, so it has no bubble.
Coding LiveCodeBench & HumanEval — on-rig and vs frontier
LiveCodeBench v6 — local (n=50)
All 7 daily-driver candidates fully characterized after Phase 1 backfill + Step B reruns (2026-05-24), regraded 2026-10-14 with the official LiveCodeBench import prelude (the earlier runner scored 6–28 pp low). Gemma 4 31B leads at 90 %; Gemma 4 26B-A4B @6bit and qwen3.6-27b tie at 88 %. Numbers are post-rerun MERGED canonical: qwen/qwen3-coder-next 84 % clean (0 trunc), qwen3.6-27b 88 % (1 trunc, Q3 abc365_c — hardest across the trio), qwen3.6-35b-a3b@6bit 82 % (6 trunc, all 65 k spirals), gemma-4-26b-a4b@4bit 76 % (8 trunc — Q2 recovered at 65 k, rest are real model limits), gemma-4-26b-a4b@6bit 88 % (1 trunc — Q19 still spirals at 65 k). Phase-5 MiniMax-M2.5 also plotted: Q3_K_S 78% @60k; UD-IQ2_M 76% @32k raw and qwen3.5-122b 62% are lower bounds (no saved answers to regrade).
HumanEval
Python coding. Largely deprecated by frontier providers post-2024.
LiveCodeBench v6
Coding pass@1 against the rolling contamination-resistant set. Anthropic Opus 4.x, Gemini 3 Pro, GPT-5.2, o-series and Llama 4 don't publish LCB; bars are limited to providers who do. Sonnet 4.5 is reported as LCB-Pro, not directly comparable to v6 pass@1 — kept with caveat.
Knowledge & reasoning accuracy suites, frontier comparison, and model radar
Local vs frontier — published scores
Local runs (this rig, n=100, seed=42, temp=0) plotted against published first-party scores for frontier & notable open-weight models. Caveats: many newer frontier models no longer publish HumanEval/DROP; MATH often means MATH-500 or AIME 2025 (noted per-model); GPQA is Diamond throughout. Reasoning models (o3, R1, Claude 4.x with thinking, Gemini 2.5/3, GPT-5) report with test-time compute. Use for ranking, not absolute deltas — ±5pp noise at n=100. Tier pills in the filter bar toggle the frontier / open-weight reference rows.
Accuracy — 100-question benchmarks
Pass rate across reasoning/coding/knowledge suites. Phase 1 (Qwen ×3) complete; Phase 2 (Gemma 4) — 26B-A4B@4bit/@6bit complete, 31B-dense partial (MATH/DROP/GPQA still running). GPQA caveats: Qwen 27b had 15/100 and 35b-a3b had 23/100 hard-capped at max_tokens=32 768 (counted as wrong); true GPQA likely 78–85 % / 75–83 %. Gemma 4 runs used the doubled max_tokens=65 536 rule and truncated only 1–2 questions — those scores are not affected.
MMLU
General knowledge. Anthropic 4.x reports MMMLU (multilingual) — marked *
MATH
Original MATH for local/legacy; MATH-500 for DeepSeek (†); AIME 2025 for frontier (‡).
DROP (F1)
Reading comprehension. Mostly dropped by frontier providers — small field.
GPQA Diamond
Graduate-level science. The one benchmark still universally reported.
Model profile — radar
Head-to-head shape across every 0–100 benchmark axis. Pick up to 3 models. Axes are fixed 0–100 (all are percentages) so shapes stay comparable regardless of selection. Missing axes (e.g. agents-a1-xl-mlx has no MATH/DROP/GPQA/T-Bench) show as gaps.
Tool use & agents Terminal-Bench and tool-calling suites
Terminal-Bench 2.0 — local (n=89)
Multi-turn shell-agent benchmark, measured on-rig 2026-05-24 → 2026-05-29 via Harbor + LiteLLM → LM Studio (Docker linux/amd64), terminus-2 agent, concurrency=1, vanilla T-Bench 2.0 task set with --agent-timeout-multiplier 0.5 (bounds the 14 tasks declaring >60-min agent budgets — scores are a defensible floor; full-budget would land ≤5 pp higher). All 7 candidates complete: qwen/qwen3-coder-next 32.6 % (29/89, 16.8 h), qwen3.6-27b 31.5 % (28/89, 18.9 h), qwen3.6-35b-a3b@6bit 28.1 % (25/89, 15.6 h), gemma-4-31b dense 22.5 % (20/89, 17.4 h), gemma-4-26b-a4b@6bit 21.3 % (19/89, 14.4 h), @4bit 20.2 % (18/89, 16.0 h), gemma-4-e4b 4.5 % (4/89, 6.4 h). Total wall-clock ~105 h. Backfill (2026-07-12): qwen3.5-122b-a10b (GGUF Q4_K_S, thinking ON) 24.7 % (22/89, ~18.5 h) — #5, a NO-GO Planning challenger that ties the 27B one-shot but is a weaker agent (the older Qwen3.5 gen losing to the newer, smaller Qwen3.6). Headline: T-Bench cleanly inverts LCB at the top — the three Qwen3.6 models cluster on top (trained with explicit agentic-loop targets); Gemma — which tops LCB (31B 90 %, 26B @6bit 88 %) — drops to mid-pack. Canonical summaries: tools/local-llm-bench-m4-32gb/benchmarks/runs/tbench_*_summary.json; raw run dirs at bench/terminal-bench/logs/tbench-runs/<model>/result.json. Phase-5 MiniMax-M2.5 lands at 25.8% (23/89) on both quants — Q3_K_S (98.69 GB) and UD-IQ2_M (78.20 GB) tie exactly, 4th overall, above all Gemma. The 2-bit UD-IQ2_M matched the larger Q3_K_S on the agentic-shell loop measured here (remote model on the rig, MBP-side Docker, --agent-timeout-multiplier 0.5; the IQ2_M run's initial 16 Docker env-start failures were recovered on a clean-Docker resume before scoring). Budget diagnostic: IQ2_M logged 46 AgentTimeoutError at 0.5× and 46/89 = 51.7% equals MiniMax's vendor T-Bench figure — but re-running timeout tasks at 1.0× and 1.5× budget recovers only ~25–33% of them (verified-recoverable ≈ 27/89 = 30.3%, budget-boosted, not cohort-comparable). The rest of the gap to vendor is structural — throughput (2-bit @ ~40 t/s over LAN), tool-call JSON-format instability, and capability misses — not a multiplier artifact; more budget mostly lets it finish and be wrong. Full analysis: bench/minimax-m2.5/iq2m-tbench-budget-diagnostic.md.
* MiniMax-M2.5 UD-IQ2_M — with more agent-time budget: at a full/1.5× --agent-timeout-multiplier the model recovers to ~30.3% (27/89) = 23 base passes + 4 verified timeout recoveries (of the 46 AgentTimeoutError at 0.5×, ~25–33% recover). The plotted bar is the apples-to-apples 0.5× value (25.8%) — the extended-budget figure gives IQ2_M more time than every other row, so it is a diagnostic, not a cohort-comparable score, and the rest of the gap to vendor's 51.7% is structural (throughput + 2-bit tool-call format instability). Detail: bench/minimax-m2.5/iq2m-tbench-budget-diagnostic.md.
Tool calling — score
jdhodges (40 q) and veerman (12 q) suites.
Tool calling — throughput
Fresh token-weighted tok/s during each tool-call suite.
Performance throughput, prefill degradation, speed probes, wall-clock
Generation throughput by scenario
Average generation tok/s — pure decode speed, excludes prefill.
Effective throughput by scenario
End-to-end tok/s including prefill — what the user actually feels.
Effective throughput vs context length (prefill-test)
How fast the model still feels at growing context. The dense 27b collapses to ~2 t/s at 8.5k.
Speed probe — total wall-clock
3-prompt cold start (2+2, MMLU atmosphere, code).
Speed probe — reasoning tokens emitted
Why 27b is slow: it thinks heavily even for trivial prompts.
Elapsed time per benchmark
Wall-clock minutes per suite (n=100 except LiveCodeBench n=50). 27b GPQA includes 15 max-token spirals at ~29 min each — the dominant time sink of Phase 1. Gemma 4 31B dense runs at ~13 t/s vs Gemma 26B-A4B's ~100 t/s — the dense tax shows up as ~7× longer wall-clock per bench.