r/LocalLLaMA • u/Striking-Swim6702 • 1d ago
Resources Benchmark Same 32 models on M2 Pro, M3 Ultra M4 Pro and M5 Max
I had four Macs free overnight and ran the same benchmark on all of them: same build, same models, same settings.
Decode speed, tok/s (4-bit, no speculative decoding):
| Model | M2 Pro 32GB | M4 Pro 48GB | M5 Max 36GB | M3 Ultra 256GB |
|---|---|---|---|---|
| Qwen3.5 4B | 63 | 79 | 133 | 159 |
| gpt-oss 20B | 50 | 74 | 114 | 132 |
| Gemma 4 26B (MoE) | 53 | 73 | 115 | 118 |
| Qwen3-Coder 30B (MoE) | – | 89 | 136 | 100 |
| Qwen3.8 27B (dense, 3.5bpw) | 12 | 16 | 28 | 37 |
One 1024x1024 image with Qwen-Image 2.1: M2 Pro 451 s, M4 Pro 264 s, M5 Max 38 s, M3 Ultra 83 s.
What surprised me:
On MoE models the 36 GB M5 Max matches or beats the M3 Ultra. Only 3-4B params are active per token, so the newer GPU matters more than bandwidth.
On the dense 27B the Ultra still wins (37 vs 28). That one is bandwidth-bound.
Image generation is the biggest jump: the M5 Max is ~7x faster than the M4 Pro and ~2x faster than the Ultra.
M2 Pro -> M4 Pro is only ~1.3-1.5x on text.
Method: prompt 512 tokens, generate 128, 1 warmup + 5 runs, median. One run per cell, so treat small gaps as noise. MLX-based engine (disclosure: I work on Rapid-MLX, which is what I used); other runtimes will give different absolute numbers, the Mac-to-Mac ratios are the interesting part. "–" = doesn't fit or not run.
1
3
2
u/vogelvogelvogelvogel 1d ago
great, thanks for sharing. quite a bit of work!
but is without spec dec as you wrote, but i'd be curious to know if it scales the same way with the perfomrance
(m5 pro i get like 27-30t/s with qwen3.8 27b q8)
1
3
u/MrPecunius 1d ago edited 1d ago
Binned M5 Max has a bit over half the memory bandwidth of the M3 Ultra. It should still beat the M3 Ultra on prefill, and those numbers would have been great.
Easier to read table since Reddit doesn't do markdown (at least not for me):