Deals

Measured on our Macs

Specs give a ceiling; software lands below it. These are 62 runs of 38 models on three Macs we own, from the benchmark suite of Akhna, our Mac app (2026-03-31 to 2026-05-21), each next to the ceiling the bandwidth rule gives for that exact model file. measured

What they say

The same models on three Macs

Context: a 6,000-character prompt (the token count is in each cell), about 70-150 tokens generated, 3 repetitions, median. Ceiling = bandwidth / (bytes of the model file streamed per token + the KV cache at that length), from the file's size and config on Hugging Face. derived

Model (4-bit MLX)MacBook Air, M2 (10-core GPU), 24 GB
100 GB/s spec
MacBook Air, M5 (10-core GPU), 32 GB
153 GB/s spec
MacBook Pro 16, M5 Max (40-core GPU), 128 GB
614 GB/s spec
Qwen2.5-3B-Instruct-4bit
1.7 GB file
40.0 tok/s of 56 (72%)
first word 5.438 s · 1,657 tokens
62.1 tok/s of 85 (73%)
first word 3.023 s · 1,657 tokens
210.1 tok/s of 341 (62%)
first word 0.258 s · 1,657 tokens
Llama-3.2-3B-Instruct-4bit
1.8 GB file
40.6 tok/s of 50 (81%)
first word 3.478 s · 1,540 tokens
61.0 tok/s of 77 (80%)
first word 2.665 s · 1,540 tokens
220.5 tok/s of 308 (72%)
first word 0.232 s · 1,540 tokens
Phi-4-mini-instruct-4bit
2.2 GB file
33.5 tok/s of 42 (79%)
first word 5.138 s · 1,489 tokens
—177.4 tok/s of 260 (68%)
first word 0.314 s · 1,489 tokens
Qwen3-4B-Instruct-2507-4bit
2.3 GB file
30.3 tok/s of 40 (76%)
first word 9.549 s · 1,657 tokens
—172.4 tok/s of 244 (71%)
first word 0.316 s · 1,657 tokens
Qwen2.5-7B-Instruct-4bit
4.3 GB file
18.8 tok/s of 24 (77%)
first word 12.624 s · 1,657 tokens
30.0 tok/s of 38 (80%)
first word 6.35 s · 1,657 tokens
117.3 tok/s of 151 (78%) runs disagree
first word 0.573 s · 1,657 tokens
Meta-Llama-3.1-8B-Instruct-4bit
4.5 GB file
17.9 tok/s of 23 (79%)
first word 11.873 s · 1,540 tokens
23.8 tok/s of 34 (69%)
first word 8.238 s · 1,540 tokens
110.7 tok/s of 138 (80%)
first word 0.516 s · 1,540 tokens
Qwen2.5-14B-Instruct-4bit
8.3 GB file
8.0 tok/s of 12 (66%)
first word 24.869 s · 1,657 tokens
14.4 tok/s of 19 (78%) runs disagree
first word 16.939 s · 1,657 tokens
57.6 tok/s of 75 (77%)
first word 1.25 s · 1,657 tokens
Qwen2.5-32B-Instruct-4bit
18.4 GB file
—5.1 tok/s of 8 (62%)
first word 41.958 s · 1,657 tokens
27.2 tok/s of 33 (82%)
first word 2.546 s · 1,657 tokens

Every model on the M5 Max

ModelFileAnswer speedCeiling derivedShareFirst wordPrompt speed
Llama-3.2-1B-Instruct-4bit0.7 GB 464.3 tok/s 82157% 0.106 s22,587 tok/s
Llama-3.2-3B-Instruct-4bit1.8 GB 220.5 tok/s 30872% 0.232 s8,107 tok/s
Qwen2.5-3B-Instruct-4bit1.7 GB 210.1 tok/s 34162% 0.258 s7,791 tok/s
Phi-4-mini-instruct-4bit2.2 GB 177.4 tok/s 26068% 0.314 s6,102 tok/s
gemma-3-text-4b-it-4bit2.6 GB 173.5 tok/s 24770% 0.379 s6,088 tok/s
Qwen3-4B-Instruct-2507-4bit2.3 GB 172.4 tok/s 24471% 0.316 s6,174 tok/s
Qwen3-30B-A3B-4bit (MoE)17.2 GB 135.5 tok/s 32642% 0.399 s4,685 tok/s
gpt-oss-20b-MXFP4-Q8 (MoE)12.1 GB 134.3 tok/s not computed— 0.371 s5,087 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit (MoE)17.2 GB 132.5 tok/s 32541% 0.395 s4,727 tok/s
Qwen3-Coder-30B-A3B-Instruct-4bit (MoE)17.2 GB 132.5 tok/s 32541% 0.391 s4,782 tok/s
Qwen2.5-7B-Instruct-4bit4.3 GB 117.3 tok/s runs disagree 15178% 0.573 s3,167 tok/s
Meta-Llama-3.1-8B-Instruct-4bit4.5 GB 110.7 tok/s 13880% 0.516 s3,208 tok/s
DeepSeek-R1-Distill-Llama-8B-4bit4.5 GB 108.9 tok/s 13978% 0.493 s3,298 tok/s
Hermes-3-Llama-3.1-8B-4bit4.5 GB 108.5 tok/s 13978% 0.459 s3,587 tok/s
aya-expanse-8b-4bit4.5 GB 101.3 tok/s 14869% 0.827 s2,322 tok/s
granite-3.3-8b-instruct-4bit4.6 GB 95.8 tok/s 12577% 0.623 s3,129 tok/s
Qwen3-30B-A3B-Instruct-2507-8bit (MoE)32.4 GB 93.9 tok/s 18052% 0.467 s3,926 tok/s
Yi-1.5-9B-Chat-4bit5.0 GB 89.2 tok/s 12373% 0.657 s2,921 tok/s
falcon3-10b-instruct-4bit5.8 GB 75.6 tok/s 10472% 1.154 s1,588 tok/s
Mistral-Nemo-Instruct-2407-4bit6.9 GB 71.8 tok/s 9080% 0.804 s2,234 tok/s
Qwen2.5-7B-Instruct-8bit8.1 GB 65.2 tok/s 8181% 0.517 s3,509 tok/s
Qwen2.5-14B-Instruct-4bit8.3 GB 57.6 tok/s 7577% 1.25 s1,376 tok/s
Phi-3.5-mini-instruct-bf167.6 GB 57.4 tok/s 7477% 0.449 s4,594 tok/s
Reka-Flash-3-4bit11.8 GB 42.4 tok/s 5380% 1.77 s933 tok/s
Mistral-Small-3.2-24B-Instruct-2506-4bit13.3 GB 39.6 tok/s 4785% 1.769 s990 tok/s
QwQ-32B-Preview-4bit18.4 GB 27.8 tok/s 3384% 2.712 s622 tok/s
c4ai-command-r-08-2024-4bit18.2 GB 27.3 tok/s 3677% 3.273 s543 tok/s
Qwen2.5-32B-Instruct-4bit18.4 GB 27.2 tok/s 3382% 2.546 s663 tok/s
gemma-3-27b-it-4bit16.8 GB 26.8 tok/s 3577% 3.007 s579 tok/s
Yi-1.5-34B-Chat-4bit19.3 GB 26.4 tok/s 3184% 2.75 s680 tok/s
Mixtral-8x22B-Instruct-v0.1-4bit (MoE)79.1 GB 22.1 tok/s not computed— 4.481 s433 tok/s
Llama-3.1-Nemotron-70B-Instruct-HF-4bit39.7 GB 13.1 tok/s 1685% 4.468 s343 tok/s
Athene-V2-Chat-4bit40.9 GB 12.7 tok/s 1584% 5.658 s295 tok/s
Qwen2.5-72B-Instruct-4bit40.9 GB 12.6 tok/s 1583% 5.869 s285 tok/s
Llama-3.3-70B-Instruct-4bit39.7 GB 12.1 tok/s 1678% 6.207 s250 tok/s
Meta-Llama-3.1-70B-Instruct-4bit39.7 GB 12.0 tok/s 1678% 6.452 s243 tok/s
c4ai-command-r-plus-08-2024-4bit58.4 GB 8.9 tok/s 1183% 9.715 s178 tok/s
Mistral-Large-Instruct-2407-4bit69.0 GB 7.4 tok/s 984% 12.634 s153 tok/s

"Not computed": a mixture-of-experts file whose config does not state its expert shape (Mixtral, gpt-oss), so the bytes read per token are not known from the file.

Long prompts on the M5 Max

Reading a long prompt grows faster than its length (attention), and answer speed falls as the cache grows. This is the wait in document Q&A.

ModelPrompt tokensFirst wordPrompt speedAnswer speed
Llama-3.3-70B-Instruct-4bit13,37750.9 s264 tok/s12.8 tok/s
Llama-3.3-70B-Instruct-4bit17,81772.2 s247 tok/s12.3 tok/s
Llama-3.3-70B-Instruct-4bit26,707116.0 s230 tok/s11.5 tok/s
Llama-3.3-70B-Instruct-4bit35,597163.1 s218 tok/s10.5 tok/s
Qwen2.5-14B-Instruct-4bit13,35611.6 s1,159 tok/s47.3 tok/s
Qwen2.5-14B-Instruct-4bit17,79619.0 s943 tok/s36.0 tok/s
Qwen2.5-14B-Instruct-4bit26,68632.2 s832 tok/s39.6 tok/s
Qwen2.5-14B-Instruct-4bit35,57643.6 s818 tok/s26.1 tok/s
Qwen2.5-14B-Instruct-4bit53,35677.5 s690 tok/s29.2 tok/s
Qwen2.5-14B-Instruct-4bit71,136122.4 s582 tok/s23.9 tok/s
Qwen2.5-32B-Instruct-4bit13,35626.6 s503 tok/s25.1 tok/s
Qwen2.5-32B-Instruct-4bit17,79636.4 s490 tok/s23.8 tok/s
Qwen2.5-32B-Instruct-4bit26,68657.9 s461 tok/s22.1 tok/s
Qwen2.5-32B-Instruct-4bit35,57685.1 s419 tok/s15.9 tok/s
Qwen2.5-32B-Instruct-4bit53,356151.7 s352 tok/s16.6 tok/s
Qwen2.5-32B-Instruct-4bit71,136218.9 s325 tok/s14.7 tok/s
Qwen2.5-7B-Instruct-4bit13,3564.0 s3,371 tok/s106.9 tok/s
Qwen2.5-7B-Instruct-4bit17,7966.1 s2,941 tok/s99.0 tok/s
Qwen2.5-7B-Instruct-4bit26,68610.9 s2,470 tok/s92.6 tok/s
Qwen2.5-7B-Instruct-4bit35,57616.6 s2,158 tok/s69.3 tok/s
Qwen2.5-7B-Instruct-4bit53,35631.1 s1,720 tok/s68.4 tok/s
Qwen2.5-7B-Instruct-4bit71,13651.0 s1,398 tok/s56.1 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit13,3563.6 s3,744 tok/s98.4 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit17,7965.8 s3,096 tok/s89.0 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit26,68611.0 s2,437 tok/s76.3 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit35,57617.1 s2,088 tok/s57.5 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit53,35633.9 s1,578 tok/s53.0 tok/s
Qwen3-30B-A3B-Instruct-2507-4bit71,13657.8 s1,233 tok/s43.2 tok/s

How these were run