What you need first
macOS 14 or later on Apple silicon. Ollama’s macOS build uses Metal automatically — there is no CUDA-style toolkit to install and no flag to turn the GPU on. What you do need to understand is the memory model: the GPU and the CPU share one pool, so "VRAM" is a share of your total memory rather than a separate number.
brew install ollama
brew services start ollama
# Or download the app from ollama.com — same daemon, adds a menu bar item.
ollama --versionPull a model and run it
Start with an 8B at Q4_K_M. On this index’s numbers Llama 3.1 8B needs 5.6 GB at 4K context and Qwen3 8B needs 5.8 GB, so either is comfortable even on a 16GB Mac. A 48GB M3 Max runs 71 of the 81 models here comfortably — the largest being GLM-4.5-Air at 37.2 GB.
ollama pull llama3.1:8b
ollama run llama3.1:8b "Summarise the difference between Q4_K_M and Q5_K_M."Check it actually ran on the GPU
Unified memory makes the usual check useless — there is no separate VRAM figure to watch climb. Use the system’s own GPU counter instead, or ask Ollama what it decided. If a model was partly placed on the CPU, `ollama ps` says so in the PROCESSOR column.
ollama ps
# NAME SIZE PROCESSOR UNTIL
# llama3.1:8b 6.1 GB 100% GPU 4 minutes from now
# Or watch Metal directly while generating:
sudo powermetrics --samplers gpu_power -i 1000 -n 5The limit nobody mentions
macOS reserves part of the unified pool for the system and caps how much a single process may wire down, so the practical budget is meaningfully below the number on the box — a 16GB Mac does not give a model 16GB. The cap is adjustable, but raising it too far will make the machine swap rather than make the model faster. Budget below nameplate and you will not meet it.
# Current cap, in MB (0 means "use the default policy")
sysctl iogpu.wired_limit_mb
# Raising it is possible but resets on reboot, and over-raising causes swapping
# rather than speed. Prefer choosing a model that fits the default.What the numbers should look like
An M3 Max moves 400 GB/s. Llama 3.1 8B at Q4_K_M is 4.6 GB of weights, so generation cannot exceed roughly 87 tok/s — a ceiling from two published numbers, not a benchmark. This index has one measured run on an M3 Max 48G: Llama 3.1 8B at Q4_K_M under Ollama, at 68 tok/s, which is 83% of that ceiling and about what a well-behaved Metal setup looks like. Memory climbs with context, not with use: the same model needs 5.6 GB at 4K and 9.5 GB at 32K.
When it does not work
`ollama ps` shows a CPU share: the model did not fit the wired limit — take a smaller quant or a shorter context rather than raising the cap. The whole machine becomes unresponsive while generating: you are swapping, which means the model plus the system exceeded physical memory; nothing about the model will fix that except being smaller. A model that ran yesterday will not load today: something else is holding memory — `ollama stop` unloads it, and models unload themselves after five minutes idle by default.
ollama stop llama3.1:8b
# Keep a model resident for an hour instead of the 5-minute default:
curl http://localhost:11434/api/generate -d '{"model":"llama3.1:8b","keep_alive":"1h"}'Common questions
Does a Mac’s unified memory count as VRAM for Ollama?
Mostly. The GPU addresses the same pool as the CPU, so a 48GB Mac holds models a 24GB discrete card cannot — 71 of the 81 models in this index fit an M3 Max 48G comfortably. What is not true is that all of it is available: macOS reserves part of the pool and caps what one process may wire down, so budget meaningfully below the figure on the box.
How do I tell whether Ollama used the GPU on a Mac?
Run `ollama ps` while a model is loaded. The PROCESSOR column reads `100% GPU` when the whole model is on Metal, and names a CPU share when part of it was not placed there. Unified memory means the usual trick of watching VRAM climb tells you nothing, because there is no separate figure to watch.
Which model should I start with on Apple silicon?
An 8B at Q4_K_M. Llama 3.1 8B needs 5.6 GB at 4K context and Qwen3 8B needs 5.8 GB, so both are comfortable on any Apple silicon Mac with 16GB or more, and both leave room to raise the context window later. Move up only once you have seen what the smaller model does — capacity is the easy part on a Mac, and bandwidth decides the rest.
What this guide uses
- Hardware
- Mac M3 Max 48G48GBMac M4 Pro 48G
- Format
- GGUF
- Picks for it
- Best local LLM for Apple silicon
Next steps
See everything that fits 🍎 Mac M3 Max 48GReverse lookup — 48GB at 8192 context, ranked by qualityModels covered in this guide
Did this actually run?
Copying a command is not the same as it working, so this is the only place the site asks. Nothing is collected beyond the answer itself.
Related guides
Mac M3 Pro: Realistic Model Limits
Unified memory is not all yours — what an 18GB and a 36GB M3 Pro actually hold, and the Metal limit that decides it.
M1 / M2 Mac 8GB: Realistic Ollama Limits
Unified memory is shared with macOS — here is what actually works on base MacBooks without swapping.
Docker Compose LLM Stack: Ollama + Open WebUI
A production-ready Docker Compose stack that gives you a local ChatGPT experience with one command.