Side by side
Speed with popular models
Tokens a second for one conversation, each chip at its largest memory size (64 GB and 128 GB), with the best version of the model that fits.
| Model | M1 Max | M1 Ultra |
|---|---|---|
| Llama 3.1 8B Instruct8B | 21–38 8-bit | 42–75 8-bit |
| gpt-oss-20b21B · 3.6B active | 95–168 native 4.25-bit | 189–337 native 4.25-bit |
| Qwen3.6 35B A3B35B · 3B active | 56–100 8-bit | 113–200 8-bit |
| Qwen3.8 27B27B | 12–21 4-bit | 13–22 8-bit |
| Llama 3.3 70B Instruct70B | 5–8 4-bit | 5–9 8-bit |
| gpt-oss-120b117B · 5.1B active | 113–200 2-bit lower quality | 133–237 native 4.25-bit |
| Qwen3.5 122B A10B122B · 10B active | 58–103 2-bit lower quality | 64–114 4-bit |
| DeepSeek V4 Flash 0731284B · 13B active | too big | 88–156 2-bit lower quality |
Questions
- Is the M1 Ultra faster than the M1 Max for LLMs?
- The M1 Ultra reads memory about 100% faster than the M1 Max (800 vs 400 GB/s), so it writes about 100% faster with any model that fits both. Reading a long prompt depends on GPU compute instead, which this comparison doesn’t cover.
- Which can run bigger models, the M1 Max or the M1 Ultra?
- The M1 Ultra: The M1 Ultra goes up to 128 GB of memory, the M1 Max to 64 GB. At its largest it runs 47 of 73 open models well, against 39.
More comparisons
The M1 Max for local AI · The M1 Ultra for local AI · Compare every model · The best Mac for local LLMs
How it’s worked out
Memory: the model’s parameters at 8, 6, 4, 3 or 2 bits per weight plus MLX’s group scales (half a bit per weight), or its native format, with room for the context on top. By default macOS lets the GPU use about 75% of unified memory. Speed: memory bandwidth divided by the bytes read per token is the ceiling for one conversation; in llama.cpp’s public Apple Silicon benchmarks real runs reach about 45% to 80% of it, which is the range shown. These are estimates, not measurements: measure your own Mac on MLX Bench. Model figures from each official model card, chip figures from Apple’s Tech Specs. Checked 2026-10-19. Same data as mlx.app/compare.