The number that actually limits you
Unified memory is shared with macOS and everything you have open, and Metal will not let a process wire down all of it — the default ceiling is roughly 75% of installed RAM. So an 18GB M3 Pro offers something like 13.5GB to a model, and a 36GB machine around 27GB. Every "will it fit" question on a Mac is against that number, not against the number on the box. It is adjustable with iogpu.wired_limit_mb, but raising it means macOS starts swapping instead of the model failing to load, which is worse. One change to know about: since Ollama v0.40.0 (now its latest release), architectures its MLX runtime supports run on MLX by default instead of llama.cpp — Ollama names Qwen3.8, Gemma 4, Qwen3.6 and Qwen3.5. The sizes on this site are for GGUF builds, and Ollama has not published how large its MLX builds are, so for those families read them as a guide rather than an exact figure.
# What Metal will currently wire down (0 = system default, ~75% of RAM)
sysctl iogpu.wired_limit_mb
# 18 GB machine → ≈ 13.5 GB usable
# 36 GB machine → ≈ 27 GB usable18GB M3 Pro
More than the earlier version of this guide claimed. A 14B at Q4_K_M is about 11.0GB at 8K context and does fit — it was previously listed here as needing 36GB+, which was wrong. 7–8B models sit near 6GB and leave room to keep working while one is loaded. What does not fit is a 30B: even the MoE Qwen3 30B-A3B is around 20GB at 8K, above both the 75% ceiling and the machine.
Llama 3.1 8B Q4_K_M @8K ≈ 6.2 GB comfortable
Qwen3 8B Q4_K_M @8K ≈ 6.4 GB comfortable
Qwen2.5 14B Q4_K_M @8K ≈ 11.0 GB fits, watch what else is open
GPT-OSS 20B MXFP4 @8K ≈ 12.9 GB tight — 95% of the 13.5 GB ceiling
Qwen3 30B-A3B Q4_K_M @8K ≈ 20.1 GB does not fit36GB M3 Pro
A 32B at Q4_K_M is about 22.8GB at 8K, which fits inside the ~27GB ceiling — the earlier claim that 32B "requires Q3 or heavy context sacrifice" was too conservative. 14B models at 8K leave most of the machine free. The honest limit on this tier is speed rather than capacity. Generating a token reads every weight once, so the M3 Pro's 150 GB/s sets a ceiling: about 8 tok/s for a 32B at Q4_K_M, 18 for a 14B, 32 for an 8B. Those are upper bounds, not measurements — real runs land below them, and this site has no measured M3 Pro figures. The mixture-of-experts Qwen3 30B-A3B is the exception worth knowing: about 20.1GB at 8K (comfortable here), but it reads only its few active experts per token, so it is not held to a dense model's ceiling.
ollama pull qwen2.5:14b # ≈ 11 GB at 8K — plenty of room
ollama pull qwen2.5:32b # ≈ 23 GB at 8K — fits; ceiling ≈ 8 tok/s
ollama pull qwen3:30b-a3b # ≈ 20 GB at 8K — fits; MoE, not bound by that ceilingCheck what it is really using
ollama ps reports the resident size and where the model is running; on Apple Silicon it should read 100% GPU. When a model is larger than what Metal lets the GPU use, Ollama does not refuse it — it puts the layers that do not fit on the CPU, and the column reads something like 25%/75% CPU/GPU, with generation slowing accordingly. That split, not an error, is the sign you are over the limit. If the machine starts paging, you will feel it everywhere before you see it in any model metric, so watch memory pressure in Activity Monitor rather than free memory.
ollama ps
# NAME ID SIZE PROCESSOR UNTIL
# qwen2.5:14b <id> ... 100% GPU 4 minutes from now
#
# Over the limit, the same column reads e.g. 25%/75% CPU/GPUCommon problems
Model loads then the Mac crawls: you are over the wired limit and macOS is swapping — close applications or drop to a smaller model rather than raising iogpu.wired_limit_mb. Long context is what pushed you over: the KV cache scales with it and nothing else does, so halve the context before changing the model. Ollama pulled a bigger file than expected: a bare tag gives that tag’s default build, usually Q4_K_M, not a level chosen for your memory.
Next steps
Select your Mac in the VRAM calculator — the unified-memory machines are in the list — and compare at the context you actually use. Remember to judge the result against ~75% of the machine, not 100%.
Common questions
Can an 18GB M3 Pro run a 14B model?
Yes, at everyday context lengths. Qwen2.5 14B at Q4_K_M is about 11.0GB at 8K, against roughly 13.5GB that Metal lets the GPU use on an 18GB machine — 81%, which this site rates comfortable. Long context is what breaks it: at 32K the same model is about 15.9GB, over the limit, and Ollama will start putting layers on the CPU.
Should I raise iogpu.wired_limit_mb to fit a bigger model?
Usually not. The default leaves roughly a quarter of memory to macOS and your open applications; taking it for the model moves the shortage onto the rest of the system, and once macOS starts swapping everything slows, the model included. A smaller quant or a shorter context gets the same model to fit without that trade.
How fast will a 32B model be on an M3 Pro?
At most about 8 tokens per second at Q4_K_M, and in practice less. Each generated token reads all of the weights once, and the M3 Pro has 150 GB/s of memory bandwidth against roughly 20GB of weights — that ratio is a ceiling no runtime can beat. This site has not measured an M3 Pro, so it gives the ceiling rather than a run. A mixture-of-experts model such as Qwen3 30B-A3B reads far less per token and is not bound by it.
What this guide uses
- Hardware
- Mac M3 Pro 18G18GB
- Picks for it
- Best local LLM for Apple silicon
Next steps
See everything that fits 🍎 Mac M3 Pro 18GReverse lookup — 18GB 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 Max: The Ultimate Local LLM Setup
Maximise your Apple Silicon with Ollama. Run multiple models, set up an OpenAI-compatible API, and tune Metal GPU layers.
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.