C.W.K.
Stream
Lesson 03 of 06 · published

Which Macs Earn the MLX Stripes

~10 min · hardware, apple-silicon, macos

Level 0Curious
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

Hardware honesty up front

MLX runs on every M-series Mac. That's the technical answer. The honest answer is that "runs" covers a lot of ground — from "you can do the 51 lessons of this quest" to "you can fine-tune a 70B model and serve it from your desk." Same framework, very different practical experiences.

This lesson is the practical compatibility map: what the minimum requirements actually are, what each tier of Mac can realistically do, and how to confirm in two terminal commands what you're sitting in front of.

The minimum bar

  • An Apple Silicon Mac — any M-series chip. Intel Macs are out. (MLX has a partial CUDA backend on Linux now, but that's a different story; on Mac, it's M-series only.)
  • macOS ≥ 14.0 (Sonoma) — earlier macOS versions don't ship the Metal features MLX depends on. macOS 15 (Sequoia) and 16 (Tahoe) are fine.
  • Python ≥ 3.10, running natively as ARM (not under Rosetta x86 emulation). The next track's lesson 1 walks you through verifying this.

If you fail any of these, you don't get an error about MLX — you get a confusing pip install error or, worse, a successful install that segfaults on first import. The check below catches all three failure modes in three commands.

The two-minute compatibility check

Run this in any terminal. The expected outputs below are from my office Mac (an M3 Ultra Studio); your numbers will be different but the shape of the output should match.

What each tier of Mac can do

Here's a rough capability map as of 2026-05. The key variable is unified memory size, because models live in it. Actual fit also depends on quantization and KV-cache size — see lesson 4 for the napkin math.

  • 8 GB MacBook Air (base M-series) — small models only (3B–4B params, Q4). Quest material works; Track 2's mlx-lm experiments need a smaller model.
  • 16 GB — comfortable for 7B Q4, tight for 7B fp16, no shot at 70B. Most of this quest runs cleanly here.
  • 32 GB — 7B fp16 fits with room. 13B Q4 fits. Fine-tuning a 7B with LoRA fits.
  • 64 GB — 13B fp16, 70B Q4 (just barely). End-to-end fine-tune walkthrough in Track 4 fits comfortably.
  • 96 GB — first tier where 70B Q4 has breathing room.
  • 128 GB — 70B fp16 within reach.
  • 192 GB — 180B-class Q4 fits. You're now competing with 8-GPU NVIDIA racks for inference.
  • 512 GB (M3 Ultra Studio) — 405B Q4 fits with overhead. This tier is what changes the conversation about "where do you run frontier-size models." Lesson 4 has the napkin math.

The Rosetta trap (preview)

If your Python is under Rosetta x86 emulation, MLX pip install may quietly succeed (because there's an x86 wheel for one of the dependencies) and then segfault or report "no matching wheel" on first import. The next track's first lesson is dedicated to this — for now, just know that uname -m printing arm64 is a load-bearing line.

Code

Two-minute compatibility check (run in any terminal)·bash
# 1. What chip and how much unified memory?
system_profiler SPHardwareDataType | grep -E "Chip|Memory"
# Sample (M3 Ultra Studio):
#   Chip: Apple M3 Ultra
#   Memory: 512 GB

# 2. Native ARM, not Rosetta?
uname -m
# Must print: arm64

sysctl -n hw.optional.arm64
# Must print: 1

# 3. macOS version (need ≥ 14.0)
sw_vers -productVersion
# Sample: 15.7.5  (anything 14.x, 15.x, 16.x is fine)
Memory pressure right now (good baseline before any MLX work)·bash
# How much of your unified memory is currently free?
# Multiply free pages by page size (16384 bytes on Apple Silicon).
vm_stat | awk '/Pages free/ {gsub("\\.", "", $3); print "Free pages :", $3}
                /Pages active/ {gsub("\\.", "", $3); print "Active pages:", $3}'

# Quick GB summary:
memory_pressure | head -3 || true

External links

Exercise

Run the two-minute compatibility check on your Mac. Write down (in your head or a sticky note) three numbers: chip name, unified memory size in GB, macOS version. Now look at the capability tier list in the body — which row are you in? Pick one model size from the next row up that you'd love to run but won't fit, and one from your row that should fit comfortably. We'll use both numbers when you get to Track 2 (mlx-lm).

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.