More
Submit build

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:

Source: dev.to ↗📏 How measured: reported by the original source; RigBase re-checked the numbers at that source
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)

ModelQuantEnginetok/sPrompt processing (tok/s)Details
Qwen3.8 27BoQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded)oMLX 0.7.1rc1 (MLX), MTP off33.6253 @ 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 27BoQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded)oMLX 0.7.1rc1 (MLX), Lightning MTP on41.6not 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-A3BoQ4e-mtp mixed 4-bit MLX (20.5 GB loaded)oMLX 0.7.1rc1 (MLX), MTP off132.51,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).

Source: https://dev.to/romantsisyk/eagle-4-does-not-run-on-a-mac-i-measured-mtp-instead-92-on-one-model-19-on-another-5g9a

Blank fields = not stated in the source. We never estimate build data; GPU street prices above are separately sourced and dated.

Embed this result

Copy into a README or blog. Links back to this build. See badge docs (CC BY 4.0 attribution). The SVG does not invent speeds — numbers stay on the build page.

Markdown

[![Measured on RigBase](https://getrigbase.com/badge/mac-studio-m2-ultra-60c-64gb-omlx-qwen38-27b-ornith-mtp-ab.svg)](https://getrigbase.com/builds/mac-studio-m2-ultra-60c-64gb-omlx-qwen38-27b-ornith-mtp-ab/)

HTML

<a href="https://getrigbase.com/builds/mac-studio-m2-ultra-60c-64gb-omlx-qwen38-27b-ornith-mtp-ab/" rel="noopener"><img src="https://getrigbase.com/badge/mac-studio-m2-ultra-60c-64gb-omlx-qwen38-27b-ornith-mtp-ab.svg" alt="Measured on RigBase" height="20"/></a>

Preview: Measured on RigBase · How to use

Rent before you buy: try this model on a cloud GPU for a few dollars first: Runpod (referral link; sign up with Google to get the new-user bonus)

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).