L LocalNodeOps

GPU

Mac Mini M4 16GB

16GB unified memory shared between CPU, GPU, and OS. By default macOS lets the GPU use about 75% of it (around 12GB), not the full 16GB.

24 Tokens/sec ceiling (Llama 3.1 8B, Q4_K_M) Estimated — not yet benchmarked

The Mac Mini M4 uses Apple’s unified memory architecture: a single pool of RAM shared between the CPU, GPU, and the rest of the system, rather than a separate VRAM pool the way discrete NVIDIA and AMD GPUs work.

Why 16GB unified memory isn’t the same as 16GB VRAM

On a discrete GPU, the number on the box is roughly what a model can use. On Apple Silicon, macOS limits how much of the shared pool the GPU can use. The default is about 75% of total memory (the exact share varies), which is around 12GB on a 16GB Mac Mini. On macOS 14 or later, the sysctl iogpu.wired_limit_mb setting can raise the limit, but memory has to be left for macOS itself or the system can slow down badly or crash.

The VRAM calculator at /hardware accounts for this. Under “Your GPU”, pick “Apple Silicon 16GB unified” and it compares your model against the roughly 12GB the GPU can use by default. There is no system-RAM offload tier, because there is no separate system RAM.

What actually fits

An 8B model at Q4_K_M (the Llama 3.1 8B file is about 4.9 GB, or 4.58 GiB) needs about 6.1 GB at 8K context by this site’s formula, so it fits with room to spare. A 13B model at Q4 needs about 14.9 GB at 8K context by the generic estimate, which is more than the 12GB default limit, so it does not fit without a shorter context or a smaller quantization. Unified memory is also slower than the dedicated memory on a high-end discrete GPU, which affects speed as well as capacity.

Where the 24 tokens/sec comes from

The figure is a theoretical ceiling, not a measurement. Generating each token reads the whole model from memory, so the maximum speed is roughly memory bandwidth divided by model size. The base M4 chip has 120 GB/s of memory bandwidth and the Llama 3.1 8B Q4_K_M file is about 4.9 GB (4.58 GiB), so 120 / 4.9 is about 24 tokens/sec. Real speeds are lower than the ceiling.

Known limitation

This is a calculation, not a benchmark, and it has not been measured on LocalNodeOps hardware, which is why the entry keeps the “estimated” label. The 12GB figure is a default that varies by macOS version and settings, and the memory actually available also depends on what else is running. See /methodology for what estimates mean on this site.