Which local AI models fit on which hardware
Reviewed by the Contractor AI Shop research team · Last updated Oct 14, 2026 · How we research
Why this matters: running a model on hardware you own keeps bids, specs and pricing private. Two numbers decide whether that works: memory (does the model fit?) and memory bandwidth (how fast does it write?). This guide gives you the math, real download sizes, fits-on matrices at two context lengths, measured speeds with the software used, and picks per contractor task. Every number links to its source; the full list is at the bottom.
1. Tokens, and tokens per second, in plain words
Models read and write in tokens, small chunks of text. OpenAI's rule of thumb for English is that one token is about four characters, or about three-quarters of a word, so 100 tokens is roughly 75 words. Speeds are quoted in tokens per second (tok/s), and there are two very different speeds:
- Prompt processing (also called prefill): how fast the model reads what you give it, such as a spec section or an RFI log. This depends mostly on raw compute, so numbers run into the thousands.
- Generation (also called decode): how fast it writes the answer. This depends mostly on memory bandwidth, because every new token means reading the model's active weights again. 20 tok/s is roughly 15 words a second, faster than most people read; under about 5 tok/s feels slow for chat but is fine for overnight batch jobs.
So a machine can read a 50-page spec quickly and still write slowly, or the reverse. Quote both when you compare hardware.
2. The memory math
Memory needed = model weights + KV cache + runtime overhead.
- Weights are roughly parameters x bytes per weight: 2 bytes at FP16/BF16, about 1 at Q8, a bit over half at Q4. Ollama lists Llama 3.1 70B at 141GB (FP16), 75GB (Q8_0) and 43GB (Q4_K_M). In practice, use the download size.
- KV cache is the model's working memory for the text it is holding. Per token it is
2 x layers x KV heads x head size x bytes per value, and the total grows in a straight line with context length and with the number of simultaneous users (Together AI, NVIDIA). For Llama 3.1 70B that is about 40GB for one user at the full 128K-token context, according to both Together AI and NVIDIA, almost as much as the 43GB Q4 weights. - Runtime overhead depends on the engine. VRAMCalculator publishes measured allowances of 0.9GB + 3% for Ollama, 1GB + 3% for LM Studio and 2GB + 5% for vLLM. We use the Ollama figure.
- Macs share memory with the system. By default macOS lets the GPU use about 75% of unified memory, as the llama.cpp maintainer notes; one benchmark there shows a 16GB MacBook Air refusing a 13.5GB model because it exceeded a 12.7GB GPU working-set limit. The limit can be raised, but that is an advanced change that leaves less memory for macOS. The matrices count Macs at 75%.
3. Long documents: how memory grows with context
A spec book is where local AI gets tight. Using OpenAI's ratio, 30,000 words is about 40,000 tokens. The KV cache for that context, per user, at FP16, computed from each model's published configuration:
| Model | Per 1,000 tokens | 8K tokens (about 6,000 words) | 32K (about 24,000 words) | 128K (about 96,000 words) |
|---|---|---|---|---|
| Llama 3.1 8B | 0.13GB | 1.1GB | 4.3GB | 17GB |
| Qwen3 32B | 0.26GB | 2.1GB | 8.6GB | n/a (native limit about 41K) |
| Llama 3.3 70B | 0.33GB | 2.7GB | 10.7GB | 43GB |
| gpt-oss 120B | 0.07GB or less | 0.6GB | 2.4GB | 9.7GB |
Computed with the Together AI formula from the config.json files linked in the references (decimal GB). gpt-oss uses a 128-token sliding window on half its layers, so its real cache is smaller than shown. Qwen3's config lists a 40,960-token native context.
Ways to stay inside memory: feed the model the relevant spec sections instead of the whole book (that is what document-Q&A tools such as Open WebUI's retrieval do); set the context length to what you actually use; and consider an 8-bit KV cache, which roughly halves cache size. LLMFit reports Q8 KV cache as near-lossless for most models, with 4-bit cache costing more quality. Long context also slows generation: in MacStories testing summarized by senn-tech, Qwen3.8-27B on an M5 Ultra went from 48 tok/s on a short prompt to 32 tok/s at 128K tokens.
4. Hardware tiers (verified specs)
| Hardware | Memory options | Bandwidth | Software | Power | Sourced price |
|---|---|---|---|---|---|
| Mac mini M6 | 16, 24 or 32GB unified | 153GB/s (16GB); 170GB/s (24/32GB) | macOS: Metal, MLX, Ollama, LM Studio | n/a | From $900 (Daring Fireball price table) |
| Mac mini M5 Pro | 24, 48 or 64GB | 307GB/s | macOS | n/a | From $1,700 (Daring Fireball) |
| Mac Studio M5 Max | 36GB; 48, 64 or 128GB with the 40-core GPU | 460GB/s (32-core GPU); 614GB/s (40-core) | macOS | 480W max continuous (Apple spec) | From $2,499 (Apple) |
| Mac Studio M5 Ultra | 96GB; 256 or 512GB with the 80-core GPU | 1.2TB/s | macOS | 480W max continuous | From $5,499 (Apple); 512GB price not announced |
| NVIDIA DGX Spark | 128GB unified LPDDR5x (a 64GB OEM version ships Oct 23) | 273GB/s | DGX OS (Ubuntu), CUDA, vLLM, SGLang, TensorRT-LLM, Ollama | 240W adapter; GB10 chip 140W | $6,950 on NVIDIA Marketplace (128GB, 4TB); 64GB from $4,999 (NVIDIA) |
| RTX 4090 | 24GB GDDR6X | 1,008GB/s | Windows or Linux, CUDA | 450W card | No current NVIDIA list price; older card |
| RTX 5090 | 32GB GDDR7 | 1,792GB/s | Windows or Linux, CUDA | 575W card | $1,999 launch price (NVIDIA), card only |
Specs: Apple Mac mini specs, Apple Mac Studio specs, NVIDIA DGX Spark, DGX Spark user guide, NVIDIA GeForce comparison, NVIDIA RTX Blackwell whitepaper (card power). DGX Spark pricing history: $3,999 at launch, $4,699 from Feb 23, 2026 (NVIDIA forum), $6,950 on NVIDIA's marketplace as of Oct 2026 (listing, tracked by GPUwerk). A GPU card needs a full PC around it, and its price is not included. Apple and NVIDIA prices are US prices and change; check before buying.
The usable memory for each column of the matrices below:
- 16GB Mac: Mac mini M6 base (16GB); about 12GB usable by the GPU by default
- RTX 4090: 24GB GDDR6X VRAM
- RTX 5090: 32GB GDDR7 VRAM
- 32GB Mac: Mac mini M6 32GB; about 24GB usable by default
- 64GB Mac: Mac mini M5 Pro or Mac Studio M5 Max 64GB; about 48GB usable
- DGX Spark: 128GB unified memory, shared with DGX OS
- 128GB Mac: Mac Studio M5 Max 128GB; about 96GB usable
- 256GB Mac: Mac Studio M5 Ultra 256GB; about 192GB usable
- 512GB Mac: Mac Studio M5 Ultra 512GB (Apple: late October 2026); about 384GB usable
5. Fits-on matrix at 8K tokens (everyday chat, email, short documents)
| Model | Download size Q4 / Q8 / FP16 | KV cache at 8,192 tokens | 16GB Mac | RTX 4090 | RTX 5090 | 32GB Mac | 64GB Mac | DGX Spark | 128GB Mac | 256GB Mac | 512GB Mac |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Llama 3.1 8B Dense · 8.03B · llama3.1:8b | 4.9GB / 8.5GB / 16GB | 1.1GB | Q8 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 14B Dense · 14.8B · qwen3:14b | 9.3GB / 16GB / 30GB | 1.3GB | Q4 | Q8 | Q8 | Q8 | FP16 | FP16 | FP16 | FP16 | FP16 |
| gpt-oss 20B MoE · 20.9B · gpt-oss:20b | 14GB (MXFP4) | 0.4GB upper bound; half the layers use a 128-token sliding window | No | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 |
| Mistral Small 3.2 24B Dense · 24.0B · mistral-small3.2:24b | 15GB / 26GB / n/a | 1.3GB | No | Q4 | Q8 | Q4 | Q8 | Q8 | Q8 | Q8 | Q8 |
| Gemma 3 27B Dense · 27.4B · gemma3:27b | 17GB / 30GB / 55GB | 4.2GB upper bound; most layers use a 1,024-token sliding window | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Gemma 4 26B-A4B MoE · 26B (per name) · gemma4:26b | 18GB / 28GB / 52GB | not computed | No | Q4 | Q8 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Gemma 4 31B Dense · 31B (per name) · gemma4:31b | 20GB / 34GB / 63GB | not computed | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3.6 27B Dense · 27.8B · qwen3.6:27b | 17GB / 30GB / 56GB | not computed | No | Q4 | Q8 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 30B-A3B MoE · 30.5B · qwen3:30b-a3b | 19GB / 33GB / 61GB | 0.8GB | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 32B Dense · 32.8B · qwen3:32b | 20GB / 35GB / 66GB | 2.1GB | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3.6 35B-A3B MoE · 36.0B · qwen3.6:35b-a3b | 23GB / 39GB / 72GB | not computed | No | No | Q4 | No | Q8 | FP16 | FP16 | FP16 | FP16 |
| Llama 3.1 / 3.3 70B Dense · 70.6B · llama3.3:70b | 43GB / 75GB / 141GB | 2.7GB | No | No | No | No | Q4 | Q8 | Q8 | FP16 | FP16 |
| gpt-oss 120B MoE · 116.8B · gpt-oss:120b | 65GB (MXFP4) | 0.6GB upper bound; half the layers use a 128-token sliding window | No | No | No | No | No | MXFP4 | MXFP4 | MXFP4 | MXFP4 |
| Qwen3 235B-A22B MoE · 235.1B · qwen3:235b | 142GB / 250GB / 470GB | 1.6GB | No | No | No | No | No | No | No | Q4 | Q8 |
| Llama 3.1 405B Dense · 405B · llama3.1:405b | 243GB / 431GB / 812GB | 4.2GB | No | No | No | No | No | No | No | No | Q4 |
| DeepSeek-R1 671B MoE · 684.5B (incl. MTP layer) · deepseek-r1:671b | 404GB / 713GB / 1300GB | 0.6GB compressed MLA cache, assumes the runtime supports it | No | No | No | No | No | No | No | No | No |
Cells show the highest-quality version that fits at 8,192 tokens of context. A model fits when download size + KV cache at the stated context (FP16 cache, from each model's config.json) + runtime overhead (0.9GB + 3%, the Ollama figure published by VRAMCalculator) is at or below the tier's usable memory. Macs are counted at 75% of unified memory, the default GPU limit noted by the llama.cpp maintainer; NVIDIA GPUs at full VRAM; DGX Spark at its full 128GB, which DGX OS also shares. Models marked "not computed" use newer attention designs, so only weights and overhead are counted; leave extra room. Sizes are Ollama download sizes, checked Oct 14, 2026.
6. Fits-on matrix at 32K tokens (long specs, contracts, agent work)
| Model | Download size Q4 / Q8 / FP16 | KV cache at 32,768 tokens | 16GB Mac | RTX 4090 | RTX 5090 | 32GB Mac | 64GB Mac | DGX Spark | 128GB Mac | 256GB Mac | 512GB Mac |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Llama 3.1 8B Dense · 8.03B · llama3.1:8b | 4.9GB / 8.5GB / 16GB | 4.3GB | Q4 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 14B Dense · 14.8B · qwen3:14b | 9.3GB / 16GB / 30GB | 5.4GB | No | Q8 | Q8 | Q8 | FP16 | FP16 | FP16 | FP16 | FP16 |
| gpt-oss 20B MoE · 20.9B · gpt-oss:20b | 14GB (MXFP4) | 1.6GB upper bound; half the layers use a 128-token sliding window | No | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 | MXFP4 |
| Mistral Small 3.2 24B Dense · 24.0B · mistral-small3.2:24b | 15GB / 26GB / n/a | 5.4GB | No | Q4 | Q4 | Q4 | Q8 | Q8 | Q8 | Q8 | Q8 |
| Gemma 3 27B Dense · 27.4B · gemma3:27b | 17GB / 30GB / 55GB | 16.6GB upper bound; most layers use a 1,024-token sliding window | No | No | No | No | Q4 | FP16 | FP16 | FP16 | FP16 |
| Gemma 4 26B-A4B MoE · 26B (per name) · gemma4:26b | 18GB / 28GB / 52GB | not computed | No | Q4 | Q8 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Gemma 4 31B Dense · 31B (per name) · gemma4:31b | 20GB / 34GB / 63GB | not computed | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3.6 27B Dense · 27.8B · qwen3.6:27b | 17GB / 30GB / 56GB | not computed | No | Q4 | Q8 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 30B-A3B MoE · 30.5B · qwen3:30b-a3b | 19GB / 33GB / 61GB | 3.2GB | No | Q4 | Q4 | Q4 | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3 32B Dense · 32.8B · qwen3:32b | 20GB / 35GB / 66GB | 8.6GB | No | No | Q4 | No | Q8 | FP16 | FP16 | FP16 | FP16 |
| Qwen3.6 35B-A3B MoE · 36.0B · qwen3.6:35b-a3b | 23GB / 39GB / 72GB | not computed | No | No | Q4 | No | Q8 | FP16 | FP16 | FP16 | FP16 |
| Llama 3.1 / 3.3 70B Dense · 70.6B · llama3.3:70b | 43GB / 75GB / 141GB | 10.7GB | No | No | No | No | No | Q8 | Q8 | FP16 | FP16 |
| gpt-oss 120B MoE · 116.8B · gpt-oss:120b | 65GB (MXFP4) | 2.4GB upper bound; half the layers use a 128-token sliding window | No | No | No | No | No | MXFP4 | MXFP4 | MXFP4 | MXFP4 |
| Qwen3 235B-A22B MoE · 235.1B · qwen3:235b | 142GB / 250GB / 470GB | 6.3GB | No | No | No | No | No | No | No | Q4 | Q8 |
| Llama 3.1 405B Dense · 405B · llama3.1:405b | 243GB / 431GB / 812GB | 16.9GB | No | No | No | No | No | No | No | No | Q4 |
| DeepSeek-R1 671B MoE · 684.5B (incl. MTP layer) · deepseek-r1:671b | 404GB / 713GB / 1300GB | 2.3GB compressed MLA cache, assumes the runtime supports it | No | No | No | No | No | No | No | No | No |
Cells show the highest-quality version that fits at 32,768 tokens of context. A model fits when download size + KV cache at the stated context (FP16 cache, from each model's config.json) + runtime overhead (0.9GB + 3%, the Ollama figure published by VRAMCalculator) is at or below the tier's usable memory. Macs are counted at 75% of unified memory, the default GPU limit noted by the llama.cpp maintainer; NVIDIA GPUs at full VRAM; DGX Spark at its full 128GB, which DGX OS also shares. Models marked "not computed" use newer attention designs, so only weights and overhead are counted; leave extra room. Sizes are Ollama download sizes, checked Oct 14, 2026.
These matrices are for one user. Each extra simultaneous user adds another KV cache, so an office of five people on one box needs five times the cache column.
7. Measured speeds
Same small model, every machine. The llama.cpp project keeps community scoreboards that run one standard test (Llama 2 7B at Q4_0, reading 512 tokens and writing 128) on each machine. That isolates the hardware:
| Hardware | Reads (prompt tok/s) | Writes (generation tok/s) | llama.cpp build |
|---|---|---|---|
| RTX 5090 | 14,970 | 300 | 8cf6b42 (flash attention on) |
| RTX 4090 | 14,771 | 189 | 2241453 (flash attention on) |
| Mac Studio M5 Ultra (80-core GPU) | 4,945 | 179 | c1d0e7a |
| M5 Max (40-core GPU) | 3,220 | 120 | c1d0e7a |
| DGX Spark | 3,661 | 57 | 5acd455 (flash attention on) |
| Mac mini M5 Pro (16-core GPU) | 1,340 | 68 | 60081bb |
| Mac mini M6 (32GB) | 989 | 36 | c1d0e7a |
Sources: llama.cpp CUDA scoreboard (NVIDIA rows) and llama.cpp Apple Silicon scoreboard (Mac rows). Builds differ between rows, so treat small gaps as noise.
Big models people actually run:
| Hardware | Model | Software | Reads (tok/s) | Writes (tok/s) | Source |
|---|---|---|---|---|---|
| DGX Spark | gpt-oss 120B (MXFP4) | llama.cpp build 7941 (11fb327bf) | 2,444 (2,048-token prompt) | 58.7 | llama.cpp DGX Spark benches |
| DGX Spark | gpt-oss 120B | SGLang (after LMSYS and NVIDIA optimizations) | n/a | about 50 | LMSYS, Nov 2025 |
| DGX Spark | gpt-oss 120B | Ollama at launch (Oct 2025) | 95 | 11.7 | LMSYS review |
| DGX Spark | Llama 3.1 70B (FP8) | SGLang, 1 user | 804 | 2.7 | LMSYS review |
| DGX Spark | Llama 3.1 8B (FP8) | SGLang, 32 users at once | 7,949 | 368 combined | LMSYS review |
| DGX Spark | Qwen3-Coder 30B-A3B (Q8_0) | llama.cpp build 7941 | 2,987 | 61.1 | llama.cpp DGX Spark benches |
| DGX Spark | gpt-oss 20B (MXFP4) | llama.cpp build 7941 | 4,506 | 83.4 | llama.cpp DGX Spark benches |
| RTX 5090 | gpt-oss 20B (MXFP4) | Ollama | 8,519 | 205 | LMSYS review |
| Mac Studio M5 Ultra 256GB | gpt-oss 120B | oMLX v0.7.0.dev4, macOS 27.0 | 1,049 (1K prompt); 2,829 (4K) | 110 | oMLX benchmark |
Three lessons: software matters (gpt-oss 120B on the Spark went from 11.7 tok/s in Ollama at launch to about 50 to 59 with tuned engines); mixture-of-experts models are much faster than dense models of similar size on bandwidth-limited machines, because only a few billion weights are active per token; and batching multiplies throughput when several people or an agent share one box.
8. Mac vs DGX Spark vs GPU PC
- Bandwidth (writing speed): RTX 5090 1,792GB/s, M5 Ultra 1.2TB/s, RTX 4090 1,008GB/s, M5 Max up to 614GB/s, Mac mini M5 Pro 307GB/s, DGX Spark 273GB/s. The single-model scoreboard above tracks this order closely.
- Capacity (what fits): a GPU stops at its VRAM. When a model spills over into system memory, speed collapses; senn-tech reports a Qwen3.8-27B run on an RTX 5090 falling to 1.5 to 4.6 tok/s once layers spilled over PCIe. The Spark gives 128GB, and Macs go up to 512GB (about 384GB usable by default).
- Software: CUDA (Spark and RTX) runs the widest range of tools, including vLLM, SGLang and TensorRT-LLM, which are built for serving many users. Macs use Metal and MLX; Ollama, LM Studio and llama.cpp run well on them.
- Power and noise: ServeTheHome measured the Spark at 40 to 45W idle and 60 to 90W during LLM inference, never reaching 40dBA outside stress tests (review); Tom's Hardware measured 37.5dBA at 18 inches under load (review). Apple rates the Mac Studio at 480W maximum continuous power and 7dB at idle in its tested M5 Ultra configuration; senn-tech reports sustained full load above 400W with audible fans. An RTX 5090 alone is rated 575W, plus the rest of the PC.
- Price per GB of model memory: see the table in section 4. A 32GB RTX 5090 card is the cheapest route to fast small models; the Spark and Mac Studio are the routes to 70B-class and larger.
9. Recommended picks per tier
| Tier | Email drafting, quick answers | Document Q&A (specs, RFIs, contracts) | Estimating help and agents |
|---|---|---|---|
| 16GB Mac | Llama 3.1 8B (Q8) | Qwen3 14B (Q4), short documents only | Use a bigger machine; keep this one as a client |
| RTX 4090 / 32GB Mac | gpt-oss 20B | Gemma 4 26B-A4B or Qwen3.6 27B (Q4) | Qwen3 30B-A3B (Q4) |
| RTX 5090 | gpt-oss 20B | Qwen3.6 27B or Gemma 4 26B-A4B (Q8 at 8K) | Qwen3.6 35B-A3B (Q4) |
| 64GB Mac | gpt-oss 20B | Qwen3.6 27B (Q8) | Qwen3.6 35B-A3B (Q8); Llama 3.3 70B (Q4) at short context |
| DGX Spark | gpt-oss 20B | gpt-oss 120B | gpt-oss 120B; dense 70B only for batch jobs |
| 128GB Mac | gpt-oss 20B | gpt-oss 120B | gpt-oss 120B |
| 256GB Mac | gpt-oss 20B | gpt-oss 120B | Qwen3 235B-A22B (Q4) |
| 512GB Mac | gpt-oss 20B | gpt-oss 120B or Qwen3 235B-A22B (Q8) | Qwen3 235B-A22B (Q8); Llama 3.1 405B (Q4) for batch work |
Picks are editorial suggestions based on what fits with room for context. Model quality was not benchmarked here; test two candidates on your own bids and documents before you standardize, and always check numbers in an estimate yourself.
10. DGX Spark in depth
The DGX Spark pairs a Blackwell GPU and a 20-core Arm CPU with 128GB of coherent unified memory at 273GB/s. NVIDIA rates one unit for models up to 200 billion parameters, and the user guide says two linked units handle up to 405B. NVIDIA's new 64GB OEM version is rated for models up to 100B.
What fits: everything in the DGX Spark column above, including gpt-oss 120B (65GB), Llama 3.3 70B at Q8 (75GB) and every 30B-class model at FP16. Qwen3 235B-A22B at Q4 (142GB) does not fit on one unit; NVIDIA demonstrates Qwen-235B on two connected Sparks in NVFP4.
Recommended: gpt-oss 120B as the office's main model for document Q&A, estimating help and agents (about 50 to 59 tok/s with SGLang or current llama.cpp); gpt-oss 20B or Qwen3 30B-A3B for fast drafting (61 to 83 tok/s in llama.cpp); dense 70B models only for overnight batch work, since they write at about 2.7 tok/s for one user.
Real-world tips:
- Start with NVIDIA's DGX Spark playbooks and our DGX Spark setup guide.
- Update the inference engine before judging speed. LMSYS's own numbers for gpt-oss 120B rose from 11.7 to about 50 tok/s in three weeks of software work.
- Use vLLM or SGLang when several people or an agent will use it at once; LMSYS measured Llama 3.1 8B going from 20.5 tok/s for one user to 368 tok/s combined across 32.
- Prefer the 4-bit formats NVIDIA optimizes for (MXFP4, NVFP4). NVIDIA says NVFP4 cut memory use by about 40% versus FP8 in its Qwen-235B example.
- Expect slower writing as context grows: in the llama.cpp benches, gpt-oss 120B went from 58.7 tok/s to 42.8 tok/s with 32K tokens already in context.
- Need more than 128GB? Two Sparks connect over the built-in ConnectX-7 200Gbps link (NVIDIA playbook).
11. Mac Studio M5 Ultra with 512GB: confirmed for late October
Status as of Oct 14, 2026: announced by Apple, not yet shipping. Apple's August 25, 2026 press release says "Mac Studio with 512GB of unified memory is coming in late October," and the Mac Studio page carries the footnote "512GB memory option for M5 Ultra coming late October." The 96GB and 256GB M5 Ultra models began arriving September 22. Apple has not published the 512GB price; The Verge lists it as TBD, and MacRumors expects it to start well above $10,000 (an expectation, not an Apple price).
The 512GB option requires the 36-core CPU and 80-core GPU M5 Ultra, with 1.2TB/s of memory bandwidth (Apple tech specs). With about 384GB usable by default, it would hold, per the matrices above:
- Qwen3 235B-A22B at Q8 (250GB), with room for long context.
- Llama 3.1 405B at Q4 (243GB).
- Several mid-size models at once, for example gpt-oss 120B plus a fast drafting model.
- Not by default: DeepSeek-R1 671B at Q4 (404GB download) exceeds the default GPU limit. It would need the macOS limit raised, which leaves little memory for the system.
No independent tests of the 512GB configuration exist yet. The 256GB M5 Ultra uses the same chip and bandwidth, so its gpt-oss 120B result (110 tok/s writing in oMLX) is a reasonable guide for models that fit in both; larger models will write more slowly because more weights are read per token.
12. Getting started
Find your column, pick one model from section 9, and run it with Ollama (for example ollama run gpt-oss:20b). For a Mac walkthrough see Local AI on a Mac Studio with Ollama. To size a model we do not list, the calculators at VRAMCalculator, LLMFit and CanItRun use the same weights-plus-cache-plus-overhead approach.
Research notes
How we research- Specs from primary sourcesApple and NVIDIA spec pages, Ollama tag pages for file sizes, and Hugging Face config.json files for parameter counts and KV cache inputs, all checked Oct 14, 2026.
- Speeds with software versionsFrom llama.cpp scoreboards and benches, LMSYS and oMLX, with builds listed. Speeds change with software updates.
- M5 Ultra 512GB statusConfirmed in Apple's own press release and product page; "late October" per Apple; price not announced as of Oct 14, 2026.
- Estimates, not guaranteesRuntime overhead is a third-party measurement (VRAMCalculator). KV figures assume an FP16 cache and are upper bounds for sliding-window models. Gemma 4 and Qwen3.6 caches were not computed. The 75% Mac limit is the default and can be changed.
Independent guide; not affiliated with Apple, NVIDIA, Ollama or any model publisher.
References
All accessed Oct 14, 2026.
- Apple, "Apple introduces new Mac Studio with M5 Max and M5 Ultra," press release, Aug 25, 2026. apple.com/newsroom
- Apple, Mac Studio product page. apple.com/mac-studio
- Apple Support, Mac Studio (M5 Max or M5 Ultra) Tech Specs. support.apple.com/en-us/128107
- Apple, Mac Studio compare page. apple.com/mac-studio/compare
- Apple, Mac mini Technical Specifications. apple.com/mac-mini/specs
- Daring Fireball, configurations and pricing for the new Mac minis and Mac Studios, Aug 2026. daringfireball.net
- The Verge, Mac Studio M5 Max and M5 Ultra launch. theverge.com
- MacRumors, Mac Studio with M5 Ultra and 512GB launching in October, Aug 25, 2026. macrumors.com
- NVIDIA, DGX Spark product page. nvidia.com
- NVIDIA, DGX Spark User Guide, Hardware Overview. docs.nvidia.com
- NVIDIA Marketplace, DGX Spark listing. marketplace.nvidia.com
- NVIDIA Developer Forums, "2/23/2026 Price Change Announcement." forums.developer.nvidia.com
- NVIDIA Blog, "NVIDIA DGX Spark 64GB," Oct 2, 2026. blogs.nvidia.com
- GPUwerk, DGX Spark price history. gpuwerk.com
- NVIDIA Technical Blog, "New Software and Model Optimizations Supercharge NVIDIA DGX Spark." developer.nvidia.com
- NVIDIA, DGX Spark playbooks and "Connect Two Sparks." build.nvidia.com/spark, stacked sparks
- NVIDIA, GeForce RTX 5090 and RTX 4090 pages and GeForce comparison. RTX 5090, RTX 4090, compare
- NVIDIA, RTX Blackwell GPU Architecture whitepaper. images.nvidia.com
- NVIDIA Newsroom, GeForce RTX 50 Series announcement (RTX 5090 at $1,999). nvidianews.nvidia.com
- llama.cpp, "Performance of llama.cpp on Apple Silicon M-series," Discussion #4167. github.com
- llama.cpp, "Performance of llama.cpp on Nvidia CUDA," Discussion #15013. github.com
- llama.cpp, DGX Spark benchmarks. github.com
- LMSYS, "NVIDIA DGX Spark In-Depth Review," Oct 13, 2025. lmsys.org
- LMSYS, "Optimizing GPT-OSS on NVIDIA DGX Spark," Nov 3, 2025. lmsys.org
- oMLX, gpt-oss-120b on M5 Ultra (80c) benchmark. omlx.ai
- senn-tech, "M5 Ultra: the first measured numbers for local language models," Sep 22, 2026 (summarizes MacStories, Alex Ziskind and Alex Grankin). senn-tech.com
- ServeTheHome, NVIDIA DGX Spark review, page 4 (power and noise). servethehome.com
- Tom's Hardware, NVIDIA DGX Spark review, page 4 (power, heat and noise). tomshardware.com
- Together AI, "KV cache explained." together.ai
- NVIDIA Technical Blog, "Mastering LLM Techniques: Inference Optimization." developer.nvidia.com
- NVIDIA Technical Blog, "Accelerate Large-Scale LLM Inference and KV Cache Offload with CPU-GPU Memory Sharing." developer.nvidia.com
- VRAMCalculator, engine overhead figures. vramcalculator.com
- LLMFit, context length calculator and "What can I run." context calculator, what can I run
- CanItRun. canitrun.dev
- OpenAI Help Center, "Understanding and counting tokens." help.openai.com
- Ollama library tag pages: llama3.1, llama3.3, qwen3, qwen3.6, gemma3, gemma4, deepseek-r1, mistral-small3.2, gpt-oss
- Hugging Face model cards and configs (parameter counts, layers, KV heads): Llama 3.1 8B, Llama 3.3 70B, Llama 3.1 405B architecture (Hermes 3), Qwen3 14B, Qwen3 30B-A3B, Qwen3 32B, Qwen3 235B-A22B, Qwen3.6 27B, Qwen3.6 35B-A3B, gpt-oss 20B, gpt-oss 120B, Mistral Small 3.2, Gemma 3 27B, DeepSeek-R1