M3 Ultra LLM benchmark
On the M3 Ultra, single-user chat decode speeds by model size (one result per model) are: ~7–9B models at 116.8 tok/s (mlx; community results only: middle of 8 community results, not measured by llm-speed, source run, community), ~14–15B models at 70.5 tok/s (mlx; community results only: middle of 4 community results, not measured by llm-speed, source run, community), ~22–32B models at 34.5 tok/s (mlx; community results only: middle of 4 community results, not measured by llm-speed, source run, community) and ~70–72B models (too few results: 2 models, 0 by llm-speed, 2 community; no middle value). Short-chat workload, local runtimes, dense models only. Each model counts once (its standard run at default context), cold-load rows are left out, and a size class needs results from at least 3 models for a middle value. Quantization, backend and settings vary between submissions, so check each row in the tables below.
Specs vendor specs, not measured
- Unified memory (max configuration)
- 512 GB
- Memory bandwidth
- 819 GB/s
- Launch date
- 2025-03-05
Sources: support.apple.com, apple.com. Vendor-published figures, accessed 2026-10-14.
512 GB is the historical maximum announced in 2025. Apple's model-specific support page checked September 7, 2026 lists 96 GB configurable to 256 GB. Check the actual machine: a family ceiling is not installed memory, current availability or a measured configuration. 2025 launch specification · Model-specific specification
Fastest single result in these submissions (any model size)
429.2 decode tok/s
Qwen3-0.6B-4bit via mlx. Workload: chat-short. Reported hardware: M3 Ultra (60-core GPU) + 96GB unified. see full run
Qwen3-30B-A3B-Instruct-2507-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 112.5tok/s | 308.7tok/s | 356ms | r_o6wbmfegmde |
| chat-long | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 96.37tok/s | 1,885.2tok/s | 1,669ms | r_o6wbmfegmde |
| concurrent-decode | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 105.9tok/s | no data | no data | r_o6wbmfegmde |
| agent-trace | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 101.3tok/s | 1,978.0tok/s | 1,057ms | r_o6wbmfegmde |
DeepSeek-R1-0528-Qwen3-8B-MLX-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 116.8tok/s | 424.5tok/s | 247ms | r_yy_6jfx70jq |
| chat-long | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 100.5tok/s | 1,104.0tok/s | 2,846ms | r_yy_6jfx70jq |
| concurrent-decode | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 110.6tok/s | no data | no data | r_yy_6jfx70jq |
| agent-trace | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 107.2tok/s | 1,108.9tok/s | 1,884ms | r_yy_6jfx70jq |
Qwen3-4B-Instruct-2507-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 182.7tok/s | 636.6tok/s | 173ms | r_p2rpb_0iyjj |
| chat-long | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 147.0tok/s | 1,913.7tok/s | 1,644ms | r_p2rpb_0iyjj |
| concurrent-decode | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 168.4tok/s | no data | no data | r_p2rpb_0iyjj |
| agent-trace | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 160.8tok/s | 1,913.6tok/s | 1,091ms | r_p2rpb_0iyjj |
Qwen3-8B-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 120.5tok/s | 446.1tok/s | 247ms | r_b1awwhkoo2v |
| chat-long | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 103.3tok/s | 1,108.8tok/s | 2,838ms | r_b1awwhkoo2v |
| concurrent-decode | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 114.3tok/s | no data | no data | r_b1awwhkoo2v |
| agent-trace | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 109.4tok/s | 1,109.1tok/s | 1,885ms | r_b1awwhkoo2v |
Qwen3-0.6B-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 429.2tok/s | 1,185.2tok/s | 92.8ms | r_6rgao6ao735 |
| chat-long | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 334.3tok/s | 6,893.3tok/s | 457ms | r_6rgao6ao735 |
| concurrent-decode | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 368.7tok/s | no data | no data | r_6rgao6ao735 |
| agent-trace | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 368.5tok/s | 8,617.7tok/s | 233ms | r_6rgao6ao735 |
Qwen3-Next-80B-A3B-Instruct-MLX-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 80B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 80.34tok/s | 24.49tok/s | 4,493ms | r_1pl79r50ofy |
| chat-long | 80B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 77.63tok/s | 1,608.6tok/s | 1,956ms | r_1pl79r50ofy |
| concurrent-decode | 80B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 78.60tok/s | no data | no data | r_1pl79r50ofy |
| agent-trace | 80B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 78.41tok/s | 1,586.3tok/s | 1,318ms | r_1pl79r50ofy |
qwen2.5-72b-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 16.31tok/s | 23.25tok/s | 5,635ms | r_5c80gthqlh6 |
llama-3.3-70b-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 16.78tok/s | 25.09tok/s | 5,420ms | r_sx3a4y9n-m4 |
stable-code-instruct-3b-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 192.5tok/s | 560.7tok/s | 226ms | r_y2_5y8oo97d |
Yi-Coder-9B-Chat-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 103.5tok/s | 390.9tok/s | 307ms | r_3hvui9a1yuc |
starcoder2-15b-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 64.16tok/s | 220.5tok/s | 490ms | r_wsxml_39dh_ |
granite-8b-code-instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 112.3tok/s | 525.7tok/s | 221ms | r_bue3bee0gw7 |
Codestral-22B-v0.1-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 47.49tok/s | 205.7tok/s | 559ms | r_79dvtag5fd_ |
DeepSeek-Coder-V2-Lite-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 168.3tok/s | 291.5tok/s | 449ms | r_l_v1-zq_qaz |
Qwen2.5-Coder-32B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 34.48tok/s | 144.1tok/s | 909ms | r_721b4bls_oq |
Qwen2.5-Coder-14B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 70.51tok/s | 306.1tok/s | 428ms | r_l36cijqxq4t |
Qwen2.5-Coder-7B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 138.6tok/s | 539.6tok/s | 243ms | r_uoehjq0nvc0 |
gpt-oss-20b-MXFP4-Q4
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 152.7tok/s | 239.9tok/s | 692ms | r_3ijun8ltjnb |
Qwen3-Coder-30B-A3B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 112.2tok/s | 204.0tok/s | 539ms | r_fpsca03u2o_ |
Qwen3-32B-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 34.41tok/s | 95.12tok/s | 1,156ms | r_anmmc80-aoq |
Qwen2.5-32B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 32B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 34.60tok/s | 141.9tok/s | 923ms | r_njgxtgyym1e |
gemma-2-9b-it-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 89.45tok/s | 170.7tok/s | 691ms | r_iz137eqvuzy |
Qwen2.5-14B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 14B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 70.85tok/s | 301.7tok/s | 434ms | r_v4bq1sviz4o |
phi-4-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 74.37tok/s | 255.0tok/s | 443ms | r_sqzp-0rdez- |
Llama-3.1-8B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | not supplied | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | - | 130.2tok/s | 400.3tok/s | 340ms | r_v2pbc0rq2l4 |
Qwen2.5-7B-Instruct-4bit
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 7B | M3 Ultra (60-core GPU) + 96GB unified | mlx@0.31.3 | 4bit | 139.6tok/s | 190.0tok/s | 689ms | r_5r6rhiynenc |
Community folklore on M3 Ultra
13 unverified claims extracted from Reddit/HN comments. Lower trust than signed runs above; every row links to the source.
- communityconfidence 70%
18.50tok/s — Qwen3-Coder on M3 Ultra via mlx
our signed data: M3 Ultra · Qwen3-Coder
“m3 ultra with lmstudio-community/Qwen3-Coder-480B-A35B-Instruct-MLX-6bit 256k context len 18.50 token/s 1000 tokens first token 12.44 s”
- communityconfidence 70%
65.00tok/s — Qwen3-Coder-Next on M3 Ultra via vllm-mlx 6-bit
our signed data: M3 Ultra · Qwen3-Coder-Next
“Benchmarks (Mac Studio M3 Ultra, 256GB): Qwen3-Coder-Next-6bit (80B MoE, 3B active): - Decode: 65 tok/s”
- communityconfidence 60%
18.43tok/s — DeepSeek R1 on M3 Ultra via mlx
our signed data: M3 Ultra · DeepSeek R1
“R1 671B Q4 - M3 Ultra 512GB with MLX🔥 Yes it works! First test, and I'm blown away! Prompt: "Create an amazing animation using p5js" * **18.43 tokens/sec** * Generates a p5js zero-shot, tested at video's end * Video in real-time, no acceleration! https://reddit.com/link/1j9vj…”
- communityconfidence 60%
145.0tok/s — Llama 3.3 70b on M3 Ultra via lm-studio
our signed data: M3 Ultra · Llama 3.3 70b
“it so far. Prompt processing is not too bad for 70b models -- with about 7800 tokens of context, 8 bit MLX Llama 3.3 70b processes at about 145 t/s per second - and then in LM studio does not need to process for additional prompts, as it caches the context, assuming you're not ch…”
- communityconfidence 60%
51.47tok/s — GPT-OSS-120B on M3 Ultra via lm-studio
our signed data: M3 Ultra · GPT-OSS-120B
“-120B MLX I'm getting: Mac Studio M3 Ultra with 80 core GPU, 256GB RAM Application: LM Studio Reasoning effort set to High. I'm getting 51.47 tokens/second!”
- communityconfidence 60%
20.00tok/s — Qwen3-Coder-Next on M3 Ultra via vllm
our signed data: M3 Ultra · Qwen3-Coder-Next
“|Quant|RAM|Decode|Prefill|TTFT (cache hit)| |:-|:-|:-|:-|:-| |**4bit (mxfp4)**|\~60GB|33-38 tok/s|\~1500 tok/s|0.3s| |**8bit**|\~122GB|16-20 tok/s|\~300-550 tok/s|1-2s| 4-bit is the sweet spot for this model — decode speed is identical (memory bandwidth limited on MoE), but pref…”
- communityconfidence 60%
38.00tok/s — Qwen3-Coder-Next on M3 Ultra via vllm
our signed data: M3 Ultra · Qwen3-Coder-Next
“GB) # Qwen3.5-122B-A10B (MoE, 10B active params) |Quant|RAM|Decode|Prefill|TTFT (cache hit)| |:-|:-|:-|:-|:-| |**4bit (mxfp4)**|\~60GB|33-38 tok/s|\~1500 tok/s|0.3s| |**8bit**|\~122GB|16-20 tok/s|\~300-550 tok/s|1-2s| 4-bit is the sweet spot for this model — decode speed is id…”
- communityconfidence 60%
65.00tok/s — Qwen3-Coder-Next on M3 Ultra via vllm
our signed data: M3 Ultra · Qwen3-Coder-Next
“Qwen3-Coder-Next at 65 tok/s on M3 Ultra — with working tool calling for OpenClaw I've been running local coding agents on my Mac Studio (M3 Ultra 256GB) for the past”
- communityconfidence 60%
58.70tok/s — Qwen3-Coder-Next on M3 Ultra via lm-studio
our signed data: M3 Ultra · Qwen3-Coder-Next
“done<p>As of v0.2.0: Vision-Language Model support with the same tiered caching<p>Benchmarks on M3 Ultra 512GB with Qwen3-Coder-Next-8bit: 58.7 tok/s single request, 243 tok/s at 8x batch. Full results on the README.<p>It reuses LM Studio's model directory, so you don't need to r…”
- communityconfidence 60%
100.0tok/s — DeepSeek-R1 on M3 Ultra via ollama
our signed data: M3 Ultra · DeepSeek-R1
“Speed-wise, MLX's unified memory means zero CPU↔GPU copies. On an M3 Ultra: Qwen3.5-9B hits 108 tok/s (vs ~41 on Ollama), Qwen 3.6 35B does 100 tok/s with only 3B active params.<p>The full benchmark data is in the README. Happy to discuss the MLX performance characteristics or to…”
Which models can an M3 Ultra run?
Fastest decode speed for each model on this hardware, from llm-speed's own runs and community-submitted runs. Each page lists every quant and runtime and labels which runs llm-speed measured.
- Qwen3-30B-A3B-Instruct-2507 · 112.5 tok/s
- Qwen3 32B · 34.4 tok/s
- Qwen3 0.6B · 429.2 tok/s
- stable-code-instruct 3B · 192.5 tok/s
- Qwen3-4B-Instruct-2507 · 182.7 tok/s
- DeepSeek-Coder-V2-Lite 16B · 168.3 tok/s
- gpt-oss-20b · 152.7 tok/s
- Qwen2.5 7B · 139.6 tok/s
- Qwen2.5-Coder 7B · 138.6 tok/s
- Llama-3.1 8B · 130.2 tok/s
Models measured on M3 Ultra
- Qwen3-30B-A3B-Instruct-2507-4bit benchmarks
- DeepSeek-R1-0528-Qwen3-8B-MLX-4bit benchmarks
- Qwen3-4B-Instruct-2507-4bit benchmarks
- Qwen3-8B-4bit benchmarks
- Qwen3-0.6B-4bit benchmarks
- Qwen3-Next-80B-A3B-Instruct-MLX-4bit benchmarks
- qwen2.5-72b-Instruct-4bit benchmarks
- llama-3.3-70b-Instruct-4bit benchmarks
- stable-code-instruct-3b-4bit benchmarks
- Yi-Coder-9B-Chat-4bit benchmarks
- starcoder2-15b-4bit benchmarks
- granite-8b-code-instruct-4bit benchmarks
- Codestral-22B-v0.1-4bit benchmarks
- DeepSeek-Coder-V2-Lite-Instruct-4bit benchmarks
- Qwen2.5-Coder-32B-Instruct-4bit benchmarks
- Qwen2.5-Coder-14B-Instruct-4bit benchmarks
- Qwen2.5-Coder-7B-Instruct-4bit benchmarks
- gpt-oss-20b-MXFP4-Q4 benchmarks
- Qwen3-Coder-30B-A3B-Instruct-4bit benchmarks
- Qwen3-32B-4bit benchmarks
- Qwen2.5-32B-Instruct-4bit benchmarks
- gemma-2-9b-it-4bit benchmarks
- Qwen2.5-14B-Instruct-4bit benchmarks
- phi-4-4bit benchmarks
- Llama-3.1-8B-Instruct-4bit benchmarks
- Qwen2.5-7B-Instruct-4bit benchmarks
Common questions about M3 Ultra
Direct Q&A drawn from the runs above: fastest LLM, supported model classes, backend rankings, quantization guidance.
Request a run on M3 Ultra
No measured run yet for these pairs. Vote for the one you want; the most-requested runs go first. See all requests.
We never sell or share your email. Privacy