Apple unified memory · Apple
Apple Mac mini (M5 Pro, 16-core GPU)
The cheaper M5 Pro Mac mini, configurable to 64GB. A small, quiet box for running mid-size models.
Memory for models
Assumed three quarters of 64 GB for macOS's default GPU limit, which Apple does not publish.
Memory bandwidth
Maker price
Largest at 4-bit
46.9 GB at 8,192 tokens of context, default GPU limit (an assumed limit, see Memory for models)
gpt-oss-20b, 4-bit
Memory configurations
One page covers every memory option the maker sells. Prices are the maker’s list price for the cheapest configuration with that much memory.
| Memory | Price | Memory the GPU can use |
|---|---|---|
| 24 GB | ~$1,699 | 16 GB default gpu limitassumption 16 GB limit raised with sysctlassumption |
| 48 GB | ~$2,299 | 36 GB default gpu limitassumption 40 GB limit raised with sysctlassumption |
| 64 GB | ~$2,699 | 48 GB default gpu limitassumption 56 GB limit raised with sysctlassumption |
Assumed three quarters of 64 GB for macOS's default GPU limit, which Apple does not publish. Raised with iogpu.wired_limit_mb per the MLX docs, leaving an assumed 8 GB for macOS. How GPU memory limits work on unified-memory machines.
What it runs at 4-bit
Every model in the catalog at its 4-bit file with 8,192 tokens of context. 22 of 41 fit in at least one configuration. Speeds are the median of measured runs on the same chip where any exist; otherwise an estimate from memory bandwidth. Try other quants and context lengths.
| Model | Needs | Fit | Generation speed |
|---|---|---|---|
| Kimi K32.8T, 104B active · UD-Q4_K_XL | 1406.8 GBcontext memory estimated | Does not fit | |
| DeepSeek V4 Pro1.6T, 49B active · Q4_K_M | 890.5 GBcontext memory not counted | Does not fit | |
| Kimi K2.61T, 32B active · UD-Q4_K_XL | 545.7 GBcontext memory estimated | Does not fit | |
| DeepSeek V4.1 Flash552B, 16B active · Q4 (DwarfStar) | 484.5 GB | Does not fit | |
| GLM-5.3753.3B · UD-Q4_K_XL | 437.4 GBcontext memory estimated | Does not fit | |
| DeepSeek V3.2671B, 37B active · Q4_K_M | 379.6 GBcontext memory estimated | Does not fit | |
| MiniMax M3428B, 23B active · Q4_K_M | 244.8 GBcontext memory not counted | Does not fit | |
| Qwen3.5 397B-A17B397B, 17B active · Q4_K_M | 229.1 GBcontext memory estimated | Does not fit | |
| GLM-5.3 Flash320B, 18B active · UD-Q4_K_XL | 187.6 GBcontext memory estimated | Does not fit | |
| Hy3295B, 21B active · Q4_K_M | 173.6 GB | Does not fit | |
| MiniMax M2.7228.7B · Q4_K_M | 132.7 GB | Does not fit | |
| Qwen3.8 Flash-Next125B, 6B active · Q4_K_M | 113.1 GBcontext memory estimated | Does not fit | |
| Nemotron 3 Super 120B-A12B120B, 12B active · Q4_K_M | 82.6 GBcontext memory estimated | Does not fit | |
| Qwen3.5 122B-A10B122B, 10B active · Q4_K_M | 73.0 GBcontext memory estimated | Does not fit | |
| Mistral Medium 3.5 128B128B · Q4_K_M | 74.0 GB | Does not fit | |
| GLM-4.5-Air106B, 12B active · Q4_K_M | 70.9 GB | Does not fit | |
| Mistral Small 4 119B (2603)119B, 6.5B active · Q4_K_M | 69.3 GBcontext memory estimated | Does not fit | |
| Llama 4 Scout 17B-16E Instruct109B, 17B active · Q4_K_M | 62.4 GBcontext memory not counted | Does not fit | |
| gpt-oss-120b117B, 5.1B active · MXFP4 (native) | 60.2 GBcontext memory estimated | Does not fit | |
| Qwen3 Coder Next80B, 3B active · Q4_K_M | 46.9 GBcontext memory estimated | Fitsassumed limitfrom the 64 GB config | ~56–100 tok/sestimate |
| Llama 3.3 70B Instruct70B · Q4_K_M | 43.6 GB | Fitsassumed limitfrom the 64 GB config | ~5.3–6.6 tok/sestimate |
| Nemotron 3.5 Lightning 30B-A3B30B, 3B active · Q4_K_M | 25.3 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | ~40–71 tok/sestimate |
| Qwen3.6 35B-A3B35B, 3B active · Q4_K_M | 22.4 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | 107 tok/smedian of 3 runs |
| Ornith 1.5 35B-A3B35B, 3B active · Q4_K_M | 21.9 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | ~55–98 tok/sestimate |
| Qwen3 Coder 30B-A3B Instruct30.5B, 3.3B active · Q4_K_M | 19.5 GB | Fitsassumed limitfrom the 48 GB config | 92 tok/smedian of 1 run |
| Gemma 4 31B IT30.7B · Q4_K_M | 18.9 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | ~12–15 tok/sestimate |
| Granite 4.2 30B29.3B · Q4_K_M | 20.3 GB | Fitsassumed limitfrom the 48 GB config | ~13–16 tok/sestimate |
| Qwen3.8 27B27B · Q4_K_M | 18.2 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | 18 tok/smedian of 3 runs |
| Gemma 4 26B-A4B IT25.2B, 3.8B active · Q4_K_M | 17.4 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | ~40–71 tok/sestimate |
| Qwen3.6 27B27B · Q4_K_M | 17.7 GBcontext memory estimated | Fitsassumed limitfrom the 48 GB config | ~13–17 tok/sestimate |
| Devstral Small 2 24B (2512)24B · Q4_K_M | 16.1 GB | Fitsassumed limitfrom the 48 GB config | ~16–20 tok/sestimate |
| gpt-oss-20b21B, 3.6B active · MXFP4 (native) | 12.5 GBcontext memory estimated | Fitsassumed limitfrom the 24 GB config | 80 tok/smedian of 3 runs |
| Phi-414.7B · Q4_K_M | 11.3 GB | Fitsassumed limitfrom the 24 GB config | ~25–32 tok/sestimate |
| Ministral 3 14B Reasoning (2512)13.9B · Q4_K_M | 10.4 GB | Fitsassumed limitfrom the 24 GB config | ~27–34 tok/sestimate |
| Gemma 4 12B IT11.95B · Q4_K_M | 8.2 GBcontext memory estimated | Fitsassumed limitfrom the 24 GB config | ~32–39 tok/sestimate |
| Qwen3.5 9B9B · Q4_K_M | 7.0 GBcontext memory estimated | Fitsassumed limitfrom the 24 GB config | 56 tok/smedian of 1 run |
| Granite 4.2 8B8.8B · Q4_K_M | 7.9 GB | Fitsassumed limitfrom the 24 GB config | ~41–51 tok/sestimate |
| Gemma 4 E4B IT8B · Q4_K_M | 6.5 GBcontext memory not counted | Fitsassumed limitfrom the 24 GB config | ~74–92 tok/sestimate |
| Qwen3 8B8.2B · Q4_K_M | 7.3 GB | Fitsassumed limitfrom the 24 GB config | ~45–56 tok/sestimate |
| Llama 3.1 8B Instruct8B · Q4_K_M | 7.1 GB | Fitsassumed limitfrom the 24 GB config | 44 tok/smedian of 1 run |
| Qwen3.5 4B4B · Q4_K_M | 4.3 GBcontext memory estimated | Fitsassumed limitfrom the 24 GB config | ~82–102 tok/sestimate |
Measured speeds
15 published runs with one user, plain decoding and at most 4,096 tokens already in context, on M5 Pro (15-core CPU, 16-core GPU).
| Model | Quant | Backend | Generation | Prompt | Context | Measured on | Source |
|---|---|---|---|---|---|---|---|
| gpt-oss-120b | 2bit (MLX) | oMLX (version not stated) | 59 tok/s | 870 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-04 |
| gpt-oss-120b | 2bit (MLX) | oMLX (version not stated) | 49 tok/s | 845 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-03 |
| gpt-oss-20b | 4-bit MLX (gpt-oss-20b-MXFP4-Q8) | oMLX (version not stated) (MLX) | 84 tok/s | 2,423 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-10 |
| gpt-oss-20b | 4bit (MLX) | oMLX (version not stated) | 80 tok/s | 2,354 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| gpt-oss-20b | 4bit (MLX) | oMLX (version not stated) | 80 tok/s | 2,530 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Llama 3.1 8B Instruct | Q4_K_M | LocalScore (llamafile/llama.cpp, version not stated) | 44 tok/s | 341 tok/s | 0 | a machine with the same chip | LocalScore2026-10 |
| Nemotron 3.5 Lightning 30B-A3B | 6bit (MLX) | oMLX (version not stated) | 77 tok/s | 1,670 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3 Coder 30B-A3B Instruct | 4-bit MLX (Qwen3-Coder-30B-A3B-Instruct-MLX-4bit) | oMLX (version not stated) (MLX) | 92 tok/s | 2,056 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.5 9B | 4-bit MLX (Qwen3.5-9B-MLX-4bit) | oMLX (version not stated) (MLX) | 56 tok/s | 1,331 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4-bit MLX (Qwen3.6-35B-A3B-4bit) | oMLX (version not stated) (MLX) | 110 tok/s | 2,267 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4bit (MLX) | oMLX (version not stated) | 107 tok/s | 2,891 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4bit (MLX) | oMLX (version not stated) | 68 tok/s | 1,350 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | 4-bit MLX (Qwen3.8-27B-MLX-4bit) | oMLX (version not stated) (MLX) | 18 tok/s | 390 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | 4bit (MLX) | oMLX (version not stated) | 18 tok/s | 418 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | 4bit (MLX) | oMLX (version not stated) | 14 tok/s | 588 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
With speculative decoding
A small draft model or extra prediction heads guess several tokens ahead. Generation is faster on text the guesses get right, so these are kept out of the medians above.
| Model | Quant | Backend | Generation | Prompt | Context | Measured on | Source |
|---|---|---|---|---|---|---|---|
| Gemma 4 26B-A4B IT | 4bit (MLX) | oMLX (version not stated) | 48 tok/s | 2,014 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4bit (MLX) | oMLX (version not stated) | 96 tok/s | 1,584 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4bit (MLX) | oMLX (version not stated) | 75 tok/s | 2,559 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 Flash-Next | 4bit (MLX) | oMLX (version not stated) | 10 tok/s | 269 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 Flash-Next | 4bit (MLX) | oMLX (version not stated) | 9.9 tok/s | 269 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
Deep into a long context
Measured with more than 4,096 tokens already in context, where every new token also reads the context memory.
| Model | Quant | Backend | Generation | Prompt | Context | Measured on | Source |
|---|---|---|---|---|---|---|---|
| Gemma 4 31B IT | 4-bit MLX (gemma-4-31b-it-4bit) | oMLX (version not stated) (MLX) | 13 tok/s | 292 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| gpt-oss-20b | 4-bit MLX (gpt-oss-20b-OptiQ-4bit) | oMLX (version not stated) (MLX) | 72 tok/s | 2,272 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| gpt-oss-20b | 4-bit MLX (gpt-oss-20b-MXFP4-Q8) | oMLX (version not stated) (MLX) | 53 tok/s | 2,001 tok/s32,768-token prompt | 32,768 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.5 9B | 4-bit MLX (Qwen3.5-9B-MLX-4bit) | oMLX (version not stated) (MLX) | 33 tok/s | 816 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.5 9B | 4-bit MLX (Qwen3.5-9B-MLX-4bit) | oMLX (version not stated) (MLX) | 29 tok/s | 774 tok/s32,768-token prompt | 32,768 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.6 35B-A3B | 4-bit MLX (Qwen3.6-35B-A3B-4bit) | oMLX (version not stated) (MLX) | 64 tok/s | 2,060 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | 4-bit MLX (Qwen3.8-27B-4bit) | oMLX (version not stated) (MLX) | 17 tok/s | 591 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | 4-bit MLX (Qwen3.8-27B-4bit) | oMLX (version not stated) (MLX) | 15 tok/s | 516 tok/s32,768-token prompt | 32,768 | a machine with the same chip | oMLX benchmark submission2026-10 |
Specifications
- Chip
- M5 Pro (15-core CPU, 16-core GPU)
- Memory
- unified LPDDR (Apple does not state the generation)
- Memory bandwidth
- 307 GB/s
- FP16 compute
- Apple does not publish TFLOPS for the M5 Pro GPU or its Neural Accelerators
- Software
- Metal, MLX
- Ships with
- macOS
- Power
- 155 W (Maximum continuous power, Apple tech specs)
- Form factor
- Mini PC
- Networking
- 2.5GbE (10GbE option); three Thunderbolt 5, which Apple says can cluster multiple Mac minis
- Released
- 2026-09
- Maker page
- apple.com
Sources
- apple.com: M5 Pro chip, 307GB/s, memory options, 155W max continuous power, ports
- apple.com: base prices $1,699 (15-core) and $1,899 (18-core)
- apple.com: Thunderbolt 5 clustering, 2.5GbE
- apple.com: available 2026-09-22
- apple.com: memory deltas: 24GB +$0, 48GB +$600, 64GB +$1,000 over $1,699
- github.com: how far the GPU memory limit can be raised on a Mac (sysctl iogpu.wired_limit_mb)
- github.com: the default GPU memory limit on a Mac and how to raise it
Similar machines
- Apple Mac mini (M5 Pro, 20-core GPU)~$1,899–$2,899
- Apple Mac Studio (M5 Max, 32-core GPU)~$2,499
- Apple Mac Studio (M5 Max, 40-core GPU)~$3,099–$5,099