Best GPU for local AI

Which AI models can the Apple M2 Ultra run?

The Apple M2 Ultra has memory shared by its processor and graphics, read at 800 GB/s. In 128 GB of memory, 64 of the 88 open models here run in the share of memory its graphics can use, 63 of them writing faster than you read; the most capable it runs well is Llama 4 Scout 109B-A17B at Q6_K, 18–29 tokens/s. Macs are here for comparison: Bottleneck’s app runs on Windows.

Every figure is for an 8,192-token conversation (about 6,000 words), at the best compression that fits. Try it in the calculator with your own memory, conversation length and compression, or a second card.

Models that run entirely on its graphics

The fastest way to run a model: all of it in graphics memory. Most people read at 5 to 8 tokens a second, so anything above 10 feels quick.

Models the Apple M2 Ultra runs entirely on its graphics
ModelCompressionWritesNeeds
Qwen3.8 Flash NextQ3_K_M71–115 tokens/s88 GB
Mistral Medium 3.5 128BQ4_K_M3.6–5.8 tokens/s80 GB
Qwen3.5 122B-A10BQ5_K_M35–56 tokens/s89 GB
Nemotron 3.5 Super 120B-A12BQ5_K_M30–48 tokens/s88 GB
Mistral Small 4 119BQ5_K_M50–80 tokens/s85 GB
gpt-oss 120BMXFP473–115 tokens/s64 GB
GLM-4.5 Air 106B-A12BQ6_K25–39 tokens/s92 GB
Llama 4 Scout 109B-A17BQ6_K18–29 tokens/s91 GB
Qwen3 Coder Next 80B-A3BQ8_067–105 tokens/s85 GB
Nemotron 3.5 Bolt 74B-A9BQ8_027–43 tokens/s80 GB
Qwen2.5 72BQ3_K_M7.7–12 tokens/s38 GB
Llama 3.3 70BQ3_K_M7.9–13 tokens/s37 GB
Flint 40B-A2.5BQ8_075–120 tokens/s43 GB
Qwen3.6 35B-A3BQ8_067–105 tokens/s38 GB
Qwen3 32BQ8_07.9–13 tokens/s37 GB
Nemotron 3.5 Lightning 30B-A3BQ8_068–110 tokens/s34 GB
Gemma 4 31BQ8_08.3–13 tokens/s34 GB
GLM-4.7 FlashQ8_065–105 tokens/s34 GB
Qwen3 30B-A3B 2507Q8_058–93 tokens/s33 GB
Qwen3 Coder 30B-A3BQ8_058–93 tokens/s33 GB
Muse Glimmer 30BQ8_08.9–14 tokens/s32 GB
Granite 4.2 30BQ8_08.8–14 tokens/s33 GB
Qwen3.6 27BQ8_09.5–15 tokens/s30 GB
Qwen3.8 27BQ8_09.5–15 tokens/s30 GB
Gemma 3 27BQ8_09.5–15 tokens/s30 GB
Gemma 4 26B-A4BQ8_054–87 tokens/s28 GB
Mistral Small 3.2 24BQ8_011–17 tokens/s27 GB
Devstral Small 2 24BQ8_011–17 tokens/s27 GB
LFM2.5 24B-A2BQ8_078–125 tokens/s26 GB
gpt-oss 20BMXFP490–145 tokens/s12 GB
Qwen3 14BQ8_017–28 tokens/s17 GB
Phi-4Q8_017–28 tokens/s17 GB
Ministral 3 14BQ8_018–29 tokens/s16 GB
Gemma 3 12BQ8_021–33 tokens/s14 GB
Gemma 4 12BQ8_022–34 tokens/s13 GB
Qwen3.5 9BQ8_027–43 tokens/s11 GB
Ornith 1.5 9BQ8_027–43 tokens/s11 GB
Ministral 3 8BQ8_028–45 tokens/s11 GB
Granite 4.2 8BQ8_028–45 tokens/s11 GB
Qwen3 8BQ8_030–48 tokens/s9.9 GB
DeepSeek R1 0528 Qwen3 8BQ8_030–48 tokens/s9.9 GB
Llama 3.1 8BQ8_031–49 tokens/s9.6 GB
Gemma 4 E4BQ8_056–90 tokens/s8.7 GB
Qwen2.5 7BQ8_033–54 tokens/s8.6 GB
Mistral 7B v0.3Q8_034–54 tokens/s8.8 GB
Gemma 4 E2BQ8_0105–170 tokens/s5.5 GB
Qwen3.5 4BQ8_054–86 tokens/s5.2 GB
Gemma 3 4BQ8_057–92 tokens/s4.9 GB
Qwen3 4B 2507Q8_056–90 tokens/s5.5 GB
Ministral 3 3BQ8_060–96 tokens/s5.0 GB
Phi-4-miniQ8_059–95 tokens/s5.2 GB
Granite 4.2 3BQ8_064–105 tokens/s4.6 GB
Llama 3.2 3BQ8_070–110 tokens/s4.4 GB
SmolLM3 3BQ8_075–120 tokens/s3.9 GB
Qwen3.5 2BQ8_0105–170 tokens/s2.5 GB
Qwen3 1.7BQ8_0100–160 tokens/s3.1 GB
LFM3 1.7BQ8_0135–215 tokens/s1.9 GB
Llama 3.2 1BQ8_0170–275 tokens/s1.6 GB
Gemma 3 1BQ8_0215–345 tokens/s1.1 GB
Qwen3.5 0.8BQ8_0240–380 tokens/s1.0 GB
Qwen3 0.6BQ8_0190–305 tokens/s1.7 GB
SmolLM2 360MQ8_0365–590 tokens/s0.7 GB
LFM2.5 350MQ8_0440–705 tokens/s0.5 GB
Gemma 3 270MQ8_0535–855 tokens/s0.3 GB

The other 24 need more memory than 128 GB of memory has; the calculator shows what more memory, or a second card, would add.

Compared with similar graphics

Tokens per second writing Llama 3.1 8B at 4 bits, which every 8 GB card holds, and the most capable model each runs well in its share of memory. Every card ranked.

GraphicsMemoryLlama 3.1 8BMost capable it runs well
Apple M5 Max64 GB shared76Qwen3 32B
Apple M2 Ultra128 GB shared68Llama 4 Scout 109B-A17B
Apple M3 Ultra128 GB shared66Llama 4 Scout 109B-A17B
Apple M1 Ultra128 GB shared60Llama 4 Scout 109B-A17B
Apple M4 Max64 GB shared60Qwen3 32B

Estimated tokens per second; a real figure is usually within a quarter either way. * Part of it in system memory. {CAPABLE_NOTE}

How it is worked out

Writing an answer is limited by memory rather than arithmetic: for every word-piece (token) a model writes, the computer reads every weight that token uses once. So the speed is how fast the memory holding the model can be read, divided by how much is read for each token: the model’s weights at the chosen compression, plus the conversation so far. How much of its memory speed each graphics card reaches is measured, not assumed: it comes from the card’s own result in llama.cpp’s benchmark, which LM Studio, Ollama and Jan are built on. A model that does not fit in the graphics card’s memory spills into system memory, five to fifteen times slower, and one that does not fit in memory at all can be read from the drive as it runs, slower again; the estimate counts each part at its own speed, and a processor with few threads cannot use all of fast memory. Graphics built into a processor use system memory, at its speed. Reading a prompt is limited by arithmetic, so it follows the measured prompt speed.

Already running a model? See if it runs at full speed

A model that is slower than it should be is nearly always partly on the processor rather than all on the graphics card, which is several times slower — and Ollama does that without a word when something else holds the card’s memory. Bottleneck’s free app checks a model run with Ollama, LM Studio, llama.cpp, KoboldCpp or Jan: where it really runs, how fast it writes, and what your PC should manage with it. Nothing leaves your PC. Or check and fix it by hand.

It reads your parts too: the graphics card and how much memory it really has free, how much system memory is installed, the speed it runs at and in how many channels. Memory left in one channel, or below its rated speed, halves how fast a model runs from it, and Bottleneck says so. Its AI models screen then lists what runs on this PC.

The free version shows where a model runs and how fast, with no time limit and no account. Pro, $9 once, explains why it is slower than it could be and how to fix it. Compare the versions