Builds / Apple M2 Ultra 60-core GPU (unified, Mac Studio)
Mac Studio M2 Ultra (60-core GPU, 64 GB): Qwen3.8 27B 4-bit at 33.6 tok/s, 41.6-64.3 with MTP; Ornith 1.5 35B-A3B at 132.5 tok/s (oMLX)
Last updated:
- GPU(s)
- Apple M2 Ultra 60-core GPU (unified, Mac Studio)
- VRAM / unified memory (GB)
- 64
- CPU
- Apple M2 Ultra
- Motherboard
- Mac Studio
Amazon · eBay (used) · Newegg - RAM
- 64 GB unified memory
- PSU
- not stated
- Other
- macOS 26.5; oMLX 0.7.1rc1 (MLX); background processes (a browser, Activity Monitor, a code-indexing tool) used some CPU during parts of the runs; swap stayed at or below 100 MB, no thermal throttling logged
- Reported total cost
- not stated
- Power
- not stated
Measured speed (generation tokens/sec)
| Model | Quant | Engine | tok/s | Prompt processing (tok/s) | Details |
|---|---|---|---|---|---|
| Qwen3.8 27B | oQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded) | oMLX 0.7.1rc1 (MLX), MTP off | 33.6 | 253 @ 2K-token prompt est. TTFT @8k ≈ 32.4 s (calculated from measured prefill) | context: short Kotlin coding prompt, thinking off📏 oMLX 0.7.1rc1 (OpenAI-compatible server for Apple Silicon), one model per server process, temperature 0, streaming, one request at a time, prefix cache off, 512 max tokens, 10 runs per prompt per phase over 2 phases (20 runs); decode tok/s = completion tokens / (last streamed chunk - first chunk), time to first token excluded; thinking off; 33.6 tok/s on the code prompt and 33.7 on the prose prompt (20 runs each, MTP-off phases agree within 1.4%) |
| Qwen3.8 27B | oQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded) | oMLX 0.7.1rc1 (MLX), Lightning MTP on | 41.6 | not stated | ⚡ spec-decode (MTP)context: 350-word prose explanation, thinking off📏 oMLX 0.7.1rc1 (OpenAI-compatible server for Apple Silicon), one model per server process, temperature 0, streaming, one request at a time, prefix cache off, 512 max tokens, 10 runs per prompt per phase over 2 phases (20 runs); decode tok/s = completion tokens / (last streamed chunk - first chunk), time to first token excluded; thinking off; prose 41.6 tok/s (MTP acceptance 69.6%, 2.64 tokens per cycle) and code 64.3 tok/s (acceptance 93.4%, 4.20 tokens per cycle, 1.92x); with thinking on, code 46.7 and prose 33.9 (MTP parked in all 20 runs). Lower end listed. The author found that with MTP on, the greedy output text differed from the MTP-off text in 7 of 8 scenarios and did not measure quality |
| Ornith 1.5 35B-A3B | oQ4e-mtp mixed 4-bit MLX (20.5 GB loaded) | oMLX 0.7.1rc1 (MLX), MTP off | 132.5 | 1,771 @ 2K-token prompt est. TTFT @8k ≈ 4.6 s (calculated from measured prefill) | context: short Kotlin coding prompt, thinking off📏 oMLX 0.7.1rc1 (OpenAI-compatible server for Apple Silicon), one model per server process, temperature 0, streaming, one request at a time, prefix cache off, 512 max tokens, 10 runs per prompt per phase over 2 phases (20 runs); decode tok/s = completion tokens / (last streamed chunk - first chunk), time to first token excluded; thinking off; 132.5 tok/s on the code prompt and 133.1 on the prose prompt. With MTP on, code rose to 147.9 but prose fell to 107.6 (0.81x), so MTP did not help on this MoE |
Prompt processing = prefill speed (how fast the prompt is read) as reported by the source, with the prompt length it was measured at; blank = the source does not report it. est. TTFT @8k is calculated from the measured prefill speed (8,192 ÷ prefill tok/s), shown only when prefill was measured on a prompt of 512+ tokens. It is not a measurement and ignores load time and caching. measured TTFT is the source's own time-to-first-token. Why prefill matters for coding assistants.
dev.to post of 21 Oct 2026 (a speed test of MTP on a Mac Studio, written after the EAGLE-4 release). Means over 20 runs per scenario; the post's own caveats are one machine, one runtime version, community quantizations and temperature 0 only. Not listed: the 4-bit Qwen3-4B control (159 tok/s, not a RigBase model).
Blank fields = not stated in the source. We never estimate build data; GPU street prices above are separately sourced and dated.
Quick answers: Can Apple M2 Ultra run Ornith 1.5 35B-A3B? · Can Apple M2 Ultra run Qwen3.8 27B?
Speculative-decoding rows on this page are not like-for-like with plain decode. See how much MTP and DFlash really speed things up (measured pairs).