Conditions
All first-party numbers: single stream on a MacBook Pro M5 Max with 128 GB, fans pinned, sampled at the model's own sampler. Each row states the MTPLX version, pack, task or context length and date, and links to its release note or raw log. Measured by Youssof Altoukhi, who brought native MTP to the Mac.
Lanes
Decode speed on a laptop falls with context length, because every token reads the whole KV cache. A number is only comparable to another number in the same lane.
| Lane | What it is | Who it represents |
|---|---|---|
| Burst | A 192-token generation on a short coding prompt, thinking off (mtplx bench tune) | A short chat reply. Where speculative decoding looks best. |
| Chat | A 3k-token answer to a chat prompt | A normal conversation turn with reasoning. |
| Coding task | A medium-reasoning coding prompt, generation to the model's own stop | One agent turn writing code. |
| Long answer | Uncapped 11k to 52k-token answers | A full game or document in one turn; decay within one response. |
| Agent context | Decode at 88k and 147k tokens of context | An agent that has read files for an hour. Where most agent sessions run. |
| Rewrite | Rewriting a file the model just wrote, drafts copied from context | Edit-heavy agent turns. New-text decode speed is in the chat and agent-context rows. |
Qwen 3.8 27B, the current flagship
Official Qwen 3.8 sampling throughout: temperature 1.0, top-p 0.95, top-k 20. Packs are described on the model page.
| Lane | Pack | tok/s | Conditions | Source |
|---|---|---|---|---|
| Coding task | Bare Speed | 65.2 | M5 Max, mtplx serve, medium reasoning, fans verified, to the model's stop, 15 Aug 2026 | 2.7.0 |
| Coding task | Optimized Speed | 58.7 | same run; acceptance by depth 0.95 / 0.88 / 0.80 | 2.7.0 |
| Coding task, in the app | Bare Speed | 64.4 | installed app, cold session, 17.0 GB peak | 2.7.0 |
| Coding task, in the app | Optimized Speed | 55.5 | installed app, cold session, 23.6 GB peak | 2.7.0 |
| Coding task, in the app | Optimized Quality (8-bit) | 48.3 | installed app, cold session, 32.7 GB peak | 2.7.0 |
| Long answer | Bare Speed | 32.4 | one 52,740-token answer, 27.2 minutes, ended at the model's own stop | 2.7.0 |
| Long answer | Optimized Speed | 35.1 to 37.3 | xhigh reasoning, 28k and 20k-token answers | 2.7.0 |
| Depth-3 pack table | Optimized Speed / Bare / Quality | 46.8 / 49.9 / 39.2 | 2.3x / 2.3x / 3.0x the same pack decoded without MTP, quantized draft heads, 20 Aug 2026 | 2.9.0 |
| Chat | Optimized Speed | 64.3 | 3k-token chat answer, stock settings, 29 Aug 2026 (55.9 on 2.9.2) | 2.10.0 |
| Agent context | Optimized Speed | 30.4 | 88k tokens of context (23.6 on 2.9.2) | 2.10.0 |
| Agent context | Optimized Speed | 18.4 | 147k tokens of context (12.0 on 2.9.2) | 2.10.0 |
| Rewrite | Optimized Speed | 87.6 | rewriting a file the model just wrote, cache-copy drafting (73.8 on 2.9.2) | 2.10.0 |
| Prefill | Optimized Speed | 535 | prefill tok/s at 88k context (379 on 2.9.2) | 2.10.0 |
| 48 GB seat | Optimized Speed | 33 | simulated 48 GB Mac, 42k context, 645 tok/s prefill, memory governor | 2.10.0 |
| Agent first token | Optimized Speed | 0.11 s | mid-session turn with preserved reasoning (1.8 to 2.2 s before) | 2.10.0 |
| Claude Code, 165k first turn | Optimized Speed | 3.9 s | follow-up time to first token, 165,165 of 165,502 tokens from cache, 1 Sep 2026 | 2.10.2 |
Decode by context length
Qwen 3.8 27B Optimized Speed, M5 Max, stock settings, MTPLX 2.9.2 against 2.10.0, from the 2.10.0 release note. Decode at 3k runs 3.5 times faster than at 147k on the same Mac; every engine has a curve like it.
Between turns the session cache matters more than peak decode speed: a 100k-token session restores in about two seconds after a restart instead of a five-minute cold prefill, and mid-session tool rounds restore warm in under two seconds (2.0.0).
Records
Records by lane, each with the long-form number from the same configuration where one exists.
| Date | Record | tok/s | Conditions | Source |
|---|---|---|---|---|
| 29 Apr 2026 | First past 60 | 60.169 | Qwen 3.6 27B, depth 3, 192-token coding bench, temp 0.6 / top-p 0.95 / top-k 20, fans pinned; no-MTP control 23.59 (2.55x) | History |
| 2 Jul 2026 | Burst lane record | 81.74 | Qwen 3.6 27B Optimized Speed, depth 3, 192-token bench, thinking off, temp 0.6, fans verified 7,821 to 7,830 RPM, twin runs 81.74 / 81.73; plain decode 30.37 (2.69x) | raw logs |
| 2 Jul 2026 | Same config, long answer | 62.95 | uncapped 11,390-token Flappy Bird, reasoning on, seed 0, clean stop; 75.5 over the first 128 tokens, 39.9 over the last 128 | notes |
| 7 Jul 2026 | Qwen 3.5 9B, 6-bit verify kernels | 82.9 to 112.5 | Qwen 3.5 9B 6-bit, short context, M5 Max; 61.6 to 99.7 at 8k | 2.0.1 |
| 18 Jul 2026 | Qwen 3.5 4B, rebuilt draft head | 227.8 | Qwen 3.5 4B Optimized Speed, depth 3, 1.71x over 133.6 plain decode, M5 Max | 2.2.0 |
| 29 Aug 2026 | MTP on a 125B MoE | 63 to 76 | Qwen 3.8 Flash-Next through the MTPLX server, M5 Max, 61 plain decode, workload dependent | 2.10.0 |
| 30 Aug 2026 | Prefill at 131k | 810 | Flash-Next block-sparse prefill, 131k-token prompt, tok/s of prefill; 262,144 tokens cold in 355 s | 2.10.1 |
Memory
| Date | What | Peak | Conditions | Source |
|---|---|---|---|---|
| 6 May 2026 | Sustained Mode | 27.5 GB | Qwen 3.6 27B at 32k context on Ivan Fioravanti's M5 Max benchmark, down from 98.6 GB | History |
| 7 May 2026 | Long-context curve | 22.1 / 27.2 / 37.5 GB | 32k / 64k / 128k, Sustained, with 620.6 / 504.3 / 372.1 prefill tok/s and 39.1 / 31.2 / 25.3 decode | v0.2.0 |
| 6 Jul 2026 | Packed verify attention | −8 GB / −16 GB | at 64k and 128k context, Qwen 3.6 27B; decode at 128k from 17 to 20+ tok/s | 2.0.0 |
| 15 Aug 2026 | Qwen 3.8 27B packs | 17.0 / 23.6 / 32.7 GB | Bare Speed / Optimized Speed / Optimized Quality, coding task in the app | 2.7.0 |
| 29 Aug 2026 | Memory governor | 196,608 tokens | context window resolved for a 48 GB Mac on the 27B Speed pack instead of the nominal 262,144; allocator growth 8.6 GB to 0.6 GB | 2.10.0 |
| 30 Aug 2026 | 262k cold prompt | 87.4 GB | Flash-Next, block-sparse prefill, 355 s; 98k prompt peak 91.4 to 83.0 GB | 2.10.1 |
Other engines
Same-machine runs against Ollama, LM Studio, llama.cpp, mlx-lm and oMLX are on the compare pages.
Notes
- One chip. Everything first-party is an M5 Max with 128 GB. The app measures your own Mac during onboarding and picks the depth that wins there; MTPLX has published no M1, M2, M3 or M4 numbers of its own. Community-measured numbers with the command line and the log are welcome in issues.
- Sampled, never greedy. Every number is sampled at the model's shipped sampler.