M4 Max LLM benchmark
The highest recorded decode rate in these M4 Max submissions is from qwen3-coder-bench-32k (30.5B) at 113.3 decode tok/s via ollama (source run). This page contains 17 workload rows from 5 submitted runs across 2 model labels. Model sizes, workloads and reported hardware configurations differ; the highest rate is not a quality ranking or a speed guarantee.
Fastest single result in these submissions (any model size)
113.3 decode tok/s
qwen3-coder-bench-32k (30.5B) via ollama (Q4_K_M). Workload: chat-short. Reported hardware: M4 Max (40-core GPU) + 128GB unified. see full run
qwen3-coder-bench-32k
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 113.3tok/s | 84.12tok/s | 1,308ms | r_roktphpc--8 |
| chat-long | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 97.40tok/s | 1,342.8tok/s | 2,344ms | r_roktphpc--8 |
| concurrent-decode | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 109.7tok/s | no data | no data | r_roktphpc--8 |
| agent-trace | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 103.2tok/s | 3,371.6tok/s | 477ms | r_roktphpc--8 |
qwen3-coder
| Workload | Model size | Reported hardware | Backend | Quant | decode tok/s | prefill tok/s | TTFT | Run |
|---|---|---|---|---|---|---|---|---|
| chat-short | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 94.51tok/s | 65.06tok/s | 1,691ms | r_r0di2hkku1h |
| chat-long | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 97.35tok/s | 1,397.3tok/s | 2,252ms | r_r0di2hkku1h |
| concurrent-decode | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 109.9tok/s | no data | no data | r_r0di2hkku1h |
| agent-trace | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | no data | no data | no data | r_r0di2hkku1h |
| chat-short | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 55.45tok/s | 675.2tok/s | 163ms | r_1o8q4lhgj88 |
| chat-long | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 57.86tok/s | 28,422.4tok/s | 111ms | r_1o8q4lhgj88 |
| concurrent-decode | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 67.01tok/s | no data | no data | r_1o8q4lhgj88 |
| agent-trace | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | no data | no data | no data | r_1o8q4lhgj88 |
| chat-short | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 92.70tok/s | 719.0tok/s | 153ms | r_40h1dznuznk |
| chat-long | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 94.61tok/s | 1,396.5tok/s | 2,253ms | r_40h1dznuznk |
| concurrent-decode | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 109.1tok/s | no data | no data | r_40h1dznuznk |
| agent-trace | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | no data | no data | no data | r_40h1dznuznk |
| chat-short | 30.5B | M4 Max (40-core GPU) + 128GB unified | ollama@0.30.11 | Q4_K_M | 93.17tok/s | 13.30tok/s | 8,270ms | r_txvkjgoyyxs |