More
Submit build

Apple M2 Ultra for local LLMs

Quick answer

How fast is the Apple M2 Ultra for local LLMs?
The fastest plain-decode result we have is 132.5 tok/s on Ornith 1.5 35B-A3B (oQ4e-mtp mixed 4-bit MLX (20.5 GB loaded), oMLX 0.7.1rc1 (MLX), MTP off) in 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). Speed depends heavily on the model, quant and engine, so compare like with like in the table. RigBase lists 6 measured results from 2 builds.

Last updated:

6 measured results from 2 builds, each linked to its source.

Memoryunified memory
Memory bandwidthnot listed
Typical EU pricenot tracked yet

Can it run? Ornith 1.5 35B-A3B on Apple M2 Ultra Qwen3.8 27B on Apple M2 Ultra gpt-oss 120B on Apple M2 Ultra gpt-oss 20B on Apple M2 Ultra

All builds with the Apple M2 Ultra

BuildGPU(s)Memory GB (total)Results
Mac Studio M2 Ultra 76-core GPU, 192 GBApple M2 Ultra 76-core GPU1923
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)Apple M2 Ultra 60-core GPU (unified, Mac Studio)643

All measured results

(MTP, DFlash, DSpark and similar draft-and-verify methods give much higher tok/s on predictable text and are not comparable 1:1 with plain decode)

ModelBuildRan onQuantEnginetok/sDetails
Ornith 1.5 35B-A3BMac 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)Apple M2 UltraoQ4e-mtp mixed 4-bit MLX (20.5 GB loaded)oMLX 0.7.1rc1 (MLX), MTP off132.5context: 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
Qwen3.8 27BMac 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)Apple M2 UltraoQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded)oMLX 0.7.1rc1 (MLX), Lightning MTP on41.6⚡ 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
Qwen3.8 27BMac 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)Apple M2 UltraoQ4e-mtp mixed 4/5-bit MLX (4.887 bits/weight, 16.2 GB loaded)oMLX 0.7.1rc1 (MLX), MTP off33.6context: 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%)
gpt-oss 120BMac Studio M2 Ultra 76-core GPU, 192 GBApple M2 UltraMXFP4llama.cpp79.68
gpt-oss 20BMac Studio M2 Ultra 76-core GPU, 192 GBApple M2 UltraMXFP4llama.cpp116.08
Llama 2 7B legacyMac Studio M2 Ultra 76-core GPU, 192 GBApple M2 UltraQ4_0llama.cpp Metal (FA, Aug 2026 build)125.21

All Apple M2 Ultra builds: see also all GPUs · best LLMs by memory size · download the dataset.

FAQ

How fast is the Apple M2 Ultra for local LLMs?

The fastest plain-decode result we have is 132.5 tok/s on Ornith 1.5 35B-A3B (oQ4e-mtp mixed 4-bit MLX (20.5 GB loaded), oMLX 0.7.1rc1 (MLX), MTP off) in 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). Speed depends heavily on the model, quant and engine, so compare like with like in the table. RigBase lists 6 measured results from 2 builds.

How much memory does the Apple M2 Ultra have?

unified memory.

Which models have been measured on the Apple M2 Ultra?

Llama 2 7B, Ornith 1.5 35B-A3B, Qwen3.8 27B, gpt-oss 120B, gpt-oss 20B.

Where do these numbers come from?

Every row links to a build page with its original public source (benchmark logs, READMEs, forum posts). RigBase does not re-run the benchmarks. Results marked ⚡ use speculative decoding and are not comparable 1:1 with plain decode.

Not enough VRAM? Rent before you buy. Run Apple M2 Ultra-class models on a rented 24–96 GB cloud GPU by the hour and see the real speed before spending €1,000+. Try it on Runpod
Referral link: if you sign up with Google and add $10, Runpod gives you and RigBase bonus credit (terms). It never affects our data.