Apple unified memory · Apple
Apple Mac Studio (M5 Ultra, 80-core GPU)
The full M5 Ultra Mac Studio. Apple lists a 512GB option for this chip as coming in late October 2026; until it ships, 256GB is the largest orderable memory.
Memory for models
Assumed three quarters of 256 GB for macOS's default GPU limit, which Apple does not publish.
Memory bandwidth
Maker price
Largest at 4-bit
187.6 GB at 8,192 tokens of context, default GPU limit (an assumed limit, see Memory for models)
gpt-oss-20b, 4-bit
no measurement on this hardware yet
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 |
|---|---|---|
| 96 GB | ~$6,799 | 72 GB default gpu limitassumption 88 GB limit raised with sysctlassumption |
| 256 GB | ~$10,799 | 192 GB default gpu limitassumption 248 GB limit raised with sysctlassumption |
Assumed three quarters of 256 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. 35 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 | Fits with raised limitassumed limitfrom the 256 GB config | ~28–51 tok/sestimate |
| Qwen3.5 397B-A17B397B, 17B active · Q4_K_M | 229.1 GBcontext memory estimated | Fits with raised limitassumed limitfrom the 256 GB config | ~38–68 tok/sestimate |
| GLM-5.3 Flash320B, 18B active · UD-Q4_K_XL | 187.6 GBcontext memory estimated | Fitsassumed limitfrom the 256 GB config | ~36–63 tok/sestimate |
| Hy3295B, 21B active · Q4_K_M | 173.6 GB | Fitsassumed limitfrom the 256 GB config | ~31–55 tok/sestimate |
| MiniMax M2.7228.7B · Q4_K_M | 132.7 GB | Fitsassumed limitfrom the 256 GB config | – |
| Qwen3.8 Flash-Next125B, 6B active · Q4_K_M | 113.1 GBcontext memory estimated | Fitsassumed limitfrom the 256 GB config | ~70–124 tok/sestimate |
| Nemotron 3 Super 120B-A12B120B, 12B active · Q4_K_M | 82.6 GBcontext memory estimated | Fitsassumed limitfrom the 256 GB config | ~46–82 tok/sestimate |
| Qwen3.5 122B-A10B122B, 10B active · Q4_K_M | 73.0 GBcontext memory estimated | Fitsassumed limitfrom the 256 GB config | ~64–113 tok/sestimate |
| Mistral Medium 3.5 128B128B · Q4_K_M | 74.0 GB | Fitsassumed limitfrom the 256 GB config | ~12–15 tok/sestimate |
| GLM-4.5-Air106B, 12B active · Q4_K_M | 70.9 GB | Fitsassumed limitfrom the 96 GB config | ~48–86 tok/sestimate |
| Mistral Small 4 119B (2603)119B, 6.5B active · Q4_K_M | 69.3 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~101–179 tok/sestimate |
| Llama 4 Scout 17B-16E Instruct109B, 17B active · Q4_K_M | 62.4 GBcontext memory not counted | Fitsassumed limitfrom the 96 GB config | ~39–70 tok/sestimate |
| gpt-oss-120b117B, 5.1B active · MXFP4 (native) | 60.2 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | 111 tok/smedian of 1 run |
| Qwen3 Coder Next80B, 3B active · Q4_K_M | 46.9 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | 102 tok/smedian of 2 runs |
| Llama 3.3 70B Instruct70B · Q4_K_M | 43.6 GB | Fitsassumed limitfrom the 96 GB config | ~21–26 tok/sestimate |
| Nemotron 3.5 Lightning 30B-A3B30B, 3B active · Q4_K_M | 25.3 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~157–279 tok/sestimate |
| Qwen3.6 35B-A3B35B, 3B active · Q4_K_M | 22.4 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~209–373 tok/sestimate |
| Ornith 1.5 35B-A3B35B, 3B active · Q4_K_M | 21.9 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~214–382 tok/sestimate |
| Qwen3 Coder 30B-A3B Instruct30.5B, 3.3B active · Q4_K_M | 19.5 GB | Fitsassumed limitfrom the 96 GB config | ~199–354 tok/sestimate |
| Gemma 4 31B IT30.7B · Q4_K_M | 18.9 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~48–60 tok/sestimate |
| Granite 4.2 30B29.3B · Q4_K_M | 20.3 GB | Fitsassumed limitfrom the 96 GB config | ~49–61 tok/sestimate |
| Qwen3.8 27B27B · Q4_K_M | 18.2 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | 50 tok/smedian of 4 runs |
| Gemma 4 26B-A4B IT25.2B, 3.8B active · Q4_K_M | 17.4 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~155–277 tok/sestimate |
| Qwen3.6 27B27B · Q4_K_M | 17.7 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~52–65 tok/sestimate |
| Devstral Small 2 24B (2512)24B · Q4_K_M | 16.1 GB | Fitsassumed limitfrom the 96 GB config | ~61–77 tok/sestimate |
| gpt-oss-20b21B, 3.6B active · MXFP4 (native) | 12.5 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~200–357 tok/sestimate |
| Phi-414.7B · Q4_K_M | 11.3 GB | Fitsassumed limitfrom the 96 GB config | ~99–123 tok/sestimate |
| Ministral 3 14B Reasoning (2512)13.9B · Q4_K_M | 10.4 GB | Fitsassumed limitfrom the 96 GB config | ~107–133 tok/sestimate |
| Gemma 4 12B IT11.95B · Q4_K_M | 8.2 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~124–154 tok/sestimate |
| Qwen3.5 9B9B · Q4_K_M | 7.0 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~155–193 tok/sestimate |
| Granite 4.2 8B8.8B · Q4_K_M | 7.9 GB | Fitsassumed limitfrom the 96 GB config | ~159–198 tok/sestimate |
| Gemma 4 E4B IT8B · Q4_K_M | 6.5 GBcontext memory not counted | Fitsassumed limitfrom the 96 GB config | ~290–361 tok/sestimate |
| Qwen3 8B8.2B · Q4_K_M | 7.3 GB | Fitsassumed limitfrom the 96 GB config | ~175–218 tok/sestimate |
| Llama 3.1 8B Instruct8B · Q4_K_M | 7.1 GB | Fitsassumed limitfrom the 96 GB config | ~179–223 tok/sestimate |
| Qwen3.5 4B4B · Q4_K_M | 4.3 GBcontext memory estimated | Fitsassumed limitfrom the 96 GB config | ~321–400 tok/sestimate |
Measured speeds
13 published runs with one user, plain decoding and at most 4,096 tokens already in context, on M5 Ultra (36-core CPU, 80-core GPU).
| Model | Quant | Backend | Generation | Prompt | Context | Measured on | Source |
|---|---|---|---|---|---|---|---|
| Gemma 4 31B IT | 8bit (MLX) | oMLX (version not stated) | 26 tok/s | 1,009 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| GLM-5.3 Flash | mixed 4/8-bit MLX | oMLX 0.7.0.dev2 (MLX) | 31 tok/s | 1,217 tok/s3,408-token prompt | 3,408 | this machine | review2026-09 |
| GLM-5.3 Flash | mixed 4/8-bit MLX | oMLX 0.7.0.dev2 (MLX) | – | 997 tok/s126,964-token prompt | 0 | this machine | review2026-09 |
| gpt-oss-120b | quant shown as 'unknown' on source (gpt-oss weights ship as MXFP4) (gpt-oss-120b) | oMLX (version not stated) (MLX) | 111 tok/s | 2,991 tok/s1,024-token prompt | 1,024 | a machine with the same chip | oMLX benchmark submission2026-09 |
| gpt-oss-120b | unknown (MLX) | oMLX (version not stated) | 109 tok/s | 2,829 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-09 |
| gpt-oss-120b | unknown (MLX) | oMLX (version not stated) | 108 tok/s | 3,061 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-09 |
| Qwen3 Coder Next | 4bit (MLX) | oMLX (version not stated) | 103 tok/s | 4,509 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-09 |
| Qwen3 Coder Next | 4bit (MLX) | oMLX (version not stated) | 101 tok/s | 4,492 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) | 55 tok/s | 1,170 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) | 54 tok/s | 1,641 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 46 tok/s | – | 0 | this machine | review2026-09 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 46 tok/s | – | 4,096 | this machine | review2026-09 |
| Qwen3.8 27B | 8bit (MLX) | oMLX (version not stated) | 32 tok/s | 1,698 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 |
|---|---|---|---|---|---|---|---|
| GLM-5.3 Flash | 4bit (MLX) | oMLX (version not stated) | 76 tok/s | 2,321 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| GLM-5.3 Flash | 4bit (MLX) | oMLX (version not stated) | 75 tok/s | 2,317 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 108 tok/s | – | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 91 tok/s | – | 3,578 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 88 tok/s | – | 15,867 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 84 tok/s | – | 65,005 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX)3 requests at once | 81 tok/s | – | 6,500 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 75 tok/s | – | 261,597 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 61 tok/s | – | 130,522 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | – | 2,887 tok/s15,519-token prompt | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | – | 2,732 tok/s65,235-token prompt | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | – | 2,654 tok/s130,781-token prompt | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | – | 2,544 tok/s261,856-token prompt | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ5e (MLX 5-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 100 tok/s | – | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | oQ6e (MLX 6-bit mixed, embedding tables on SSD) | oMLX 0.7.0.dev2 (MLX) | 95 tok/s | – | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | 8bit (MLX) | oMLX (version not stated) | 92 tok/s | 3,761 tok/s4,096-token prompt | 4,096 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 Flash-Next | oQ8e (MLX 8-bit mixed, embedding tables on SSD) | oMLX 0.7.0.dev2 (MLX) | 87 tok/s | – | 0 | this machine | review2026-09 |
| Qwen3.8 Flash-Next | 8bit (MLX) | oMLX (version not stated) | 70 tok/s | 1,150 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 |
|---|---|---|---|---|---|---|---|
| GLM-5.3 Flash | mixed 4/8-bit MLX | oMLX 0.7.0.dev2 (MLX) | 32 tok/s | 1,107 tok/s13,639-token prompt | 13,639 | this machine | review2026-09 |
| GLM-5.3 Flash | mixed 4/8-bit MLX | oMLX 0.7.0.dev2 (MLX) | 28 tok/s | 1,016 tok/s61,434-token prompt | 61,434 | this machine | review2026-09 |
| gpt-oss-120b | quant shown as 'unknown' on source (gpt-oss weights ship as MXFP4) (gpt-oss-120b) | oMLX (version not stated) (MLX) | 97 tok/s | 2,944 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-09 |
| gpt-oss-120b | quant shown as 'unknown' on source (gpt-oss weights ship as MXFP4) (gpt-oss-120b) | oMLX (version not stated) (MLX) | 86 tok/s | 2,723 tok/s32,768-token prompt | 32,768 | a machine with the same chip | oMLX benchmark submission2026-09 |
| Qwen3.8 27B | 4-bit MLX (Qwen3.8-27B-MLX-4bit) | oMLX (version not stated) (MLX) | 51 tok/s | 1,796 tok/s16,384-token prompt | 16,384 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 48 tok/s | 1,701 tok/s6,091-token prompt | 6,091 | this machine | review2026-09 |
| Qwen3.8 27B | 4-bit MLX (Qwen3.8-27B-MLX-4bit) | oMLX (version not stated) (MLX) | 48 tok/s | 1,687 tok/s32,768-token prompt | 32,768 | a machine with the same chip | oMLX benchmark submission2026-10 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 45 tok/s | – | 8,192 | this machine | review2026-09 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 43 tok/s | – | 16,384 | this machine | review2026-09 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 41 tok/s | – | 32,768 | this machine | review2026-09 |
| Qwen3.8 27B | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 39 tok/s | 1,501 tok/s63,445-token prompt | 63,445 | this machine | review2026-09 |
| Qwen3.8 27B | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 32 tok/s | – | 128,983 | this machine | review2026-09 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 32 tok/s | – | 65,536 | this machine | review2026-09 |
| Qwen3.8 27B | Q4_K_M | llama.cpp (build not stated) | 30 tok/s | – | 131,072 | this machine | review2026-09 |
| Qwen3.8 27B | oQ4e (MLX 4-bit mixed) | oMLX 0.7.0.dev2 (MLX) | 24 tok/s | – | 260,037 | this machine | review2026-09 |
Specifications
- Chip
- M5 Ultra (36-core CPU, 80-core GPU)
- Memory
- unified LPDDR (Apple does not state the generation)
- Memory bandwidth
- 1,200 GB/s
- FP16 compute
- Apple does not publish TFLOPS for the M5 GPU or its Neural Accelerators
- Software
- Metal, MLX
- Ships with
- macOS
- Power
- 480 W (Maximum continuous power, Apple tech specs)
- Form factor
- Desktop
- Networking
- 10GbE; six Thunderbolt 5 (120Gb/s, four back and two front), Thunderbolt 5 clustering with RDMA per Apple
- Released
- 2026-09
- Maker page
- apple.com
Sources
- apple.com: chip, memory options, bandwidth, ports, 10GbE, 480W max continuous power
- apple.com: base prices per chip
- apple.com: available 2026-09-22
- apple.com: clustering over Thunderbolt 5 with RDMA; MLX
- apple.com: memory deltas: 96GB +$0, 256GB +$4,000 over $6,799; 512GB not yet orderable
- apple.com: M5 Ultra 1.2TB/s memory bandwidth
- 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
Compared with
Similar machines
- Apple Mac Studio (M5 Ultra, 64-core GPU)~$5,499–$9,499
- Apple MacBook Pro 16-inch (M5 Max, 40-core GPU)~$4,999–$6,999
- Apple MacBook Pro 14-inch (M5 Max, 40-core GPU)~$4,699–$6,699