Three packs
All three keep the model's MTP head and run the same exact speculative path. They differ in quantization, which sets download size, memory, speed, and how close the output stays to the bf16 model. M1 and M2 Macs get an FP16 sibling of each pack automatically (same weights, native precision for chips without bf16).
| Pack | Quant | Download | Peak memory | KL vs bf16 | Pick it for |
|---|---|---|---|---|---|
| Optimized Speed | 4-bit dynamic, 32-weight groups, 8-bit on sensitive modules | 20.4 GB | 23.6 GB | 0.0220 | Coding. The default on 32 GB+ Macs. |
| Bare Speed | Flat 4-bit, 64-weight groups | 16.0 GB | 17.0 GB | 0.0376 | Fastest chat. Lower quality and slower on long coding tasks. |
| Optimized Quality | 8-bit dynamic, 64-weight groups | 29.4 GB | 32.7 GB | 0.00105 | Closest to the bf16 model. 36 GB+ Macs. |
KL divergence is measured against the original bf16 model on MTPLX's coding battery. Optimized Speed sits 1.7x closer to the original than Bare Speed; Optimized Quality sits 21x closer than Optimized Speed. MTPLX moved its flagship off a flat 4-bit trunk in July 2026 (Qwen 3.6 Optimized Speed V2) because the calibrated map held up better as agent sessions got longer, and flat 4-bit is slower on long coding tasks. The dynamic map below is why the recommended pack costs four more gigabytes than the bare one.
Measured speeds
M5 Max, fans verified at max, single stream, generation running to the model's own stop, official Qwen 3.8 sampling (temperature 1.0, top-p 0.95, top-k 20), MTPLX 2.7.0, 15 August 2026. Same prompt across the three packs.
| Run | Optimized Speed | Bare Speed | Optimized Quality |
|---|---|---|---|
| Coding task, medium reasoning, mtplx serve | 58.7 tok/s | 65.2 tok/s | 40.6 tok/s (depth 2) |
| Same task inside the Mac app, cold session | 55.5 tok/s | 64.4 tok/s | 48.3 tok/s |
| Long reasoning at xhigh, 20k to 46k-token answers | 35.1 to 37.3 tok/s | 32.0 to 35.7 tok/s | 33.1 to 33.2 tok/s |
| One 52,740-token answer, 27.2 minutes, model's own stop | 32.4 tok/s sustained | ||
| Draft acceptance by depth on the coding task | 0.95 / 0.88 / 0.80 | 0.95 / 0.86 / 0.78 | 0.96 / 0.88 / 0.79 |
Same night, same task, other engines: the previous MTPLX flagship Qwen 3.6 27B Optimized Speed V2 ran 59.9 to 60.1 tok/s; oMLX 0.5.7 serving its own Qwen 3.8 4-bit MTP quant ran 63.3 tok/s; LM Studio on the 52,740-token answer ran 17.40 tok/s against 32.4 here.
Speed by context length matters more than any single number once an agent is in the loop. On MTPLX 2.10.0, stock settings, the Optimized Speed pack decodes a 3k-token chat answer at 64.3 tok/s, holds 30.4 tok/s at 88k context and 18.4 tok/s at 147k. The full set, with the release each was measured on, is on the benchmarks page.
RAM and Macs
- 32 GB or more: Optimized Speed. This is what the app recommends.
- 36 GB or more: Optimized Quality fits with headroom.
- 16 GB: run Qwen 3.5 9B or 4B instead; the app checks your Mac before recommending anything.
- M1 and M2: the app and CLI pick the FP16 build of the same pack automatically.
- Context window: 262,144 tokens nominal. The memory governor resolves the largest window whose KV fits and prints it in the serve banner; a 48 GB Mac gets 196,608 tokens, and at 42k context that seat measured 33 tok/s decode and 645 tok/s prefill on 2.10.0.
Install
Mac app: download the DMG, pick "Qwen 3.8 27B Optimized Speed". It is the default on modern Macs. The app downloads the pack, sets up its engine, and measures your machine to pick the fastest decoding depth.
Command line:
brew install youssofal/mtplx/mtplx
mtplx serve --model Youssofal/Qwen3.8-27B-MTPLX-Optimized-Speed
Then point OpenCode, Pi, Claude Code, Cline, Cursor or anything that speaks the OpenAI or Anthropic API at
http://127.0.0.1:8000. Setup pages for each client are in the docs. The tuned
depth and draft settings ship inside mtplx_runtime.json; MTPLX reads them on load, no flags needed.
Reasoning effort levels (xhigh, medium, low) work; MTPLX's coding default is medium.
How it is built
The Optimized Speed pack is a dynamic 4-bit quant with a hand-tuned precision map, the same layout as the Qwen 3.6 Optimized Speed V2 that preceded it:
- The bulk of the model at 4-bit with 32-weight groups.
- The parts that hurt most at 4-bit kept at 8-bit: the embeddings, the output head, all 48 GDN output projections, and the last 8 MLP blocks.
- The GDN convolution kernels and recurrent-state parameters, every norm, and the whole MTP head at 16-bit.
- Activations in bf16 on every pass, plain decode and speculative verify alike. The speculative path runs the same model as the autoregressive path.
Bare Speed is every weight matrix at 4-bit with 64-weight groups, nothing promoted. Optimized Quality is every weight matrix at 8-bit with 64-weight groups. All three keep the same 16-bit set.
Exactness
Speculation in MTPLX is exact. Drafts from the MTP head are accepted with the probability-ratio rule and rejected drafts are resampled from the residual, so what you sample is what the model would have sampled without speculation, at any temperature. The draft sampler is a speed knob only. The quantization is the one approximation, and the KL numbers above measure it.