What you need first
An M1 or M2 Mac with the base 8GB unified memory configuration, and a realistic expectation set before you start: this is the tightest capacity tier this site covers, and the honest goal is a genuinely usable 3B-class assistant, not a smaller version of what a 24GB card runs.
brew install ollama
ollama --versionThis index has no M1/M2 base entry — here is the substitute
The GPU database behind this site’s calculator has no M1 or M2 base-tier row — only M2 Max and M2 Ultra, the higher configurations. The 8GB capacity figures below use the Mac M3 8G entry as a stand-in, since the calculator only reads capacity, and 8GB is 8GB regardless of chip generation. Bandwidth is not: the M3 entry is rated at 100 GB/s, while the M2 base chip is close to that at 100 GB/s and the original M1 base chip is meaningfully slower at roughly 68 GB/s. On an M1 specifically, expect generation speed below what the M3-based numbers here would suggest; on an M2, expect them to be close.
What actually fits
At Q4_K_M and 4K context: Llama 3.2 3B is 2.5 GB total, Qwen2.5 3B is 2.2 GB, Phi-3.5 Mini is 4.1 GB — all comfortable on 8GB with macOS and a browser running. An 8B model at Q4_K_M is 5.6 GB on its own, which sounds like it should fit, but the unified-memory reality below is what actually decides it.
ollama pull llama3.2:3b
ollama run llama3.2:3bThe unified-memory limit nobody mentions
macOS reserves part of the 8GB pool for the system and caps what one process may wire down — on an 8GB machine that cap leaves meaningfully less than 8GB for a model, and it is why an 8B model that "should" fit by the raw arithmetic often does not in practice. This is the same mechanism every Mac on this site is subject to; it simply has no slack to spare at 8GB the way it does at 48GB.
sysctl iogpu.wired_limit_mb # 0 = default policy, not "no limit"Check it actually ran on the GPU
On unified memory there is no separate VRAM figure to watch, so ask Ollama directly. If `ollama ps` reports anything other than 100% GPU on a 3B model, something else is holding memory — close browser tabs with hardware acceleration before assuming the model itself is the problem.
ollama ps
# NAME SIZE PROCESSOR UNTIL
# llama3.2:3b 2.9 GB 100% GPU 4 minutes from nowSettings worth changing on 8GB specifically
Keep one model loaded at a time and do not run parallel requests — both defaults already favour this, but it is worth being explicit on the tightest tier, where a second model loading while the first has not finished unloading is what causes real thrashing.
export OLLAMA_NUM_PARALLEL=1 # already the default
export OLLAMA_MAX_LOADED_MODELS=1
ollama run llama3.2:3bWhen it does not work
The whole machine slows to a crawl while a model is loaded: that is swapping, and it means the model plus everything else exceeded the practical wired limit — the fix is a smaller model, not a setting, since there is no headroom left to tune away. `ollama ps` shows a CPU share on a 3B model: something else is holding memory; check Activity Monitor before assuming the model is too big for its own numbers. An 8B model refuses to run well: this is expected at 8GB — the 3B tier is the honest ceiling here, not a limitation of this particular guide’s settings.
Common questions
Can an 8GB M1 or M2 Mac run an 8B model?
Poorly, if at all. Llama 3.1 8B at Q4_K_M needs 5.6 GB on its own, and macOS reserves part of the 8GB pool for the system while capping what one process may wire down — on the tightest tier that cap leaves little slack. A 3B-class model is the realistic ceiling for consistently usable performance on 8GB.
Does this guide’s data apply to the original M1 the same as an M2?
The capacity numbers do — 8GB is 8GB. Speed does not: this site’s calculator has no M1 or M2 base-tier entry and substitutes the Mac M3 8G row for capacity, which is rated at 100 GB/s. The original M1 base chip is meaningfully slower, around 68 GB/s, so expect generation speed below what the figures here imply; the M2 base chip is close to the M3 figure.
How do I stop Ollama from thrashing my 8GB Mac?
Keep one model loaded at a time (`OLLAMA_MAX_LOADED_MODELS=1`), avoid parallel requests (`OLLAMA_NUM_PARALLEL=1`, already the default), and pick a 3B-class model rather than pushing an 8B into a budget that has no slack for it. If the whole machine slows down while a model is loaded, that is swapping, and the fix is a smaller model, not a setting.
What this guide uses
- Hardware
- Mac M3 8G8GB
- Format
- GGUF
- Picks for it
- Best local LLM for Apple silicon
Next steps
See everything that fits 🍎 Mac M3 8GReverse lookup — 8GB at 4096 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.
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.
Docker Compose LLM Stack: Ollama + Open WebUI
A production-ready Docker Compose stack that gives you a local ChatGPT experience with one command.