Originally published on macyou.co, where the tables update as specs change. Disclosure up front: I run Macyou, we rent dedicated Apple Silicon Macs. That is exactly why every number below is computed the same way for NVIDIA, AMD and Apple, and why the section on where a Mac is the wrong purchase is the longest one.
The honest short version, and it is not the one you would expect from a company that rents Macs: if your model fits in 32 GB, buy an NVIDIA card. An RTX 5090 moves 1,792 GB/s against 546 for an M4 Max. Above 32 GB the question changes completely, because speed stops mattering when the model will not load at all, and that is where unified memory earns its price.
The market has split into three shapes
Fast and small. Discrete GPUs put GDDR7 behind a wide bus and reach 936 to 1,792 GB/s. Consumer cards stop at 24 or 32 GB, so they hold roughly 32B at Q4. Two cards double the capacity on paper but split the model across a bus, which is a different and worse thing than one pool.
Big and slow. The 128 GB unified memory boxes, the NVIDIA DGX Spark (GB10) and the AMD Strix Halo systems, use LPDDR5x. They hold a 123B model at 273 and 256 GB/s respectively, between a quarter and a seventh of a modern GPU.
Big and fast, at a price. Apple's Ultra tier is the only consumer hardware that is both. The M5 Ultra addresses 512 GB at 1,200 GB/s. NVIDIA's answer in that quadrant is the RTX PRO 6000 at 96 GB and 1,597 GB/s, a workstation part with a workstation price.
The comparison that surprises people
The DGX Spark costs $3,999 and has 273 GB/s of memory bandwidth. The M4 Pro, a two year old mid tier chip in a Mac mini, has 273 GB/s. Same number. The M4 Max has 546 GB/s at the same 128 GB, twice the Spark, and the M5 Ultra is 4.4 times it. If you are buying a 128 GB box for generation speed, make that comparison first. If you are buying it for CUDA, prompt processing or fine tuning, none of this applies and the Spark is a reasonable purchase.
Everything, at Q4_K_M
Tokens per second for generation, computed identically for every row from memory bandwidth and model size. "no" means the model does not fit. Memory is the largest configuration available.
| Hardware | Memory | Bandwidth | 8B | 32B | 70B | 123B | Price |
|---|---|---|---|---|---|---|---|
| RTX 3090 | 24 GB | 936 GB/s | 105 | no | no | no | ~$1,300 used |
| RTX 4090 | 24 GB | 1,008 GB/s | 109 | no | no | no | varies |
| RTX 5090 | 32 GB | 1,792 GB/s | 146 | 62 | no | no | varies |
| RTX PRO 6000 Blackwell | 96 GB | 1,597 GB/s | 139 | 57 | 30.1 | 18.2 | varies |
| DGX Spark (GB10) | 128 GB | 273 GB/s | 42.9 | 12 | 5.7 | 3.3 | ~$3,999 |
| AMD Strix Halo (Ryzen AI Max+ 395) | 128 GB | 256 GB/s | 40.7 | 11.3 | 5.4 | 3.1 | ~$2,000 |
| Apple M5 Ultra | 512 GB | 1,200 GB/s | 120 | 45.5 | 23.3 | 13.9 | varies |
| Apple M5 Max | 128 GB | 614 GB/s | 80 | 25.5 | 12.5 | 7.3 | varies |
| Apple M5 Pro | 64 GB | 307 GB/s | 47.3 | 13.4 | 6.4 | no | varies |
| Apple M6 | 32 GB | 153 GB/s | 26 | 6.9 | no | no | varies |
| Apple M4 Max (40-core GPU) | 128 GB | 546 GB/s | 74 | 22.9 | 11.2 | 6.5 | varies |
| Apple M4 Pro | 64 GB | 273 GB/s | 42.9 | 12 | 5.7 | no | varies |
| Apple M3 Ultra | 512 GB | 819 GB/s | 97 | 32.9 | 16.4 | 9.7 | varies |
Where a Mac is the wrong purchase
Anything that fits in 24 or 32 GB. A used RTX 3090 at around $1,300 runs an 8B model at 105 tokens/sec. The base M4 does 21. The 3090 runs out of memory before 32B, but a 5090 holds it and still runs it at 62 tokens/sec, against 12 on an M4 Pro.
Fine tuning. MLX is good and improving, but the ecosystem assumes CUDA. You will hit repositories that will not run without porting, and the time spent porting is usually worth more than the hardware difference.
Long prompts with short answers. Prompt processing is compute bound, not bandwidth bound, and NVIDIA hardware is substantially better at it. The Spark processes prompts two to three times faster than a Strix Halo box despite nearly identical generation speed.
Serving many users at once. These figures are single stream. Batched serving is where GPU compute and stacks like vLLM pull away, and none of the unified memory machines, Apple included, are the right tool.
Where a Mac is the right purchase
Models between 32 and 128 GB, where you still want speed. This is the gap the GPUs leave. A 70B at Q4 will not load on a 5090; on a 128 GB box it runs at about 5.7 tokens/sec; on an M4 Max it runs at 11.2.
The very large models, at all. Above 128 GB the field empties out. Apple's Ultra tier at 256 and 512 GB is most of what is left short of datacenter hardware.
Machines that have to be quiet, small and always on. A Mac mini idles at a few watts and is silent. A 5090 draws hundreds of watts under load and needs a case and a power supply built around it.
Where the newest Apple chips land
| Chip | Bandwidth | Max memory | Versus the DGX Spark |
|---|---|---|---|
| M5 Ultra | 1,200 GB/s | 512 GB | 4.4x bandwidth |
| M5 Max | 614 GB/s | 128 GB | 2.25x bandwidth |
| M5 Pro | 307 GB/s | 64 GB | 1.12x bandwidth |
| M6 | 153 GB/s | 32 GB | 0.56x bandwidth |
Read the M6 row before drawing the wrong conclusion from the others. Apple's entry desktop chip sits at 153 GB/s, below both 128 GB boxes, so the boxes are not simply slower than Macs. The crossover is the M5 Pro, the first chip in a Mac mini to edge past them, by twelve percent. What separates the classes is the top, not the entry point: Apple keeps scaling to 614 and 1,200 GB/s while the boxes stop at 273. Their argument was never speed. It is 128 GB for around $2,000, and against that specific number Apple has nothing to offer.
How these numbers were produced, and what is wrong with them
Every speed above comes from one formula applied to every row: seconds per token equals weight size divided by (bandwidth times 0.915), plus 3.9 ms of fixed overhead. The two constants were fitted by least squares to six models measured on a base M4 and reproduce all six within 4%. The calculator runs it for any model and chip.
The obvious objection, stated before someone else does: the overhead constant was measured on Apple hardware running Ollama. Applying it to CUDA and ROCm assumes a comparable per token cost, which I have not verified. It is not a rounding error: without it the formula claims a 5090 does over 300 tokens/sec on an 8B model, which nobody observes; with it, 146, which matches what people report. If you have measured numbers on a 5090 or a Spark, I would like to check the model against them. The HN thread is the place.
Everything else is a published specification with a source link on the original page. Street prices move constantly; treat the price column as an order of magnitude.
Top comments (0)