Skip to content
C.W.K.
Stream
Lesson 03 of 06 · published

Capacity Is Chosen Once

~15 min · memory, capacity, soldered, configuration, dram-shortage, fit

Level 0Spec-Sheet Skimmer
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"On a Mac, the memory question is asked exactly once, by the configurator, and answered for the life of the machine."

The Configurator Is the Only Slot

Apple's tech-specs page for the 2025 Mac Studio reads, for the M3 Ultra: "96GB unified memory. Configurable to: 256GB." In March 2025 the same chip launched with a 512 GB option, and the household bought two. By 2026 the 512 GB line has gone from the page — Apple made no announcement; press coverage in March 2026 attributed the withdrawal to the DRAM shortage, which is a press explanation, not a vendor one. The M5 Ultra Mac Studio announced in August 2026 lists 512 GB again, with a footnote: "Mac Studio with 512GB of unified memory is coming in late October." So the ceiling is 512 GB, it has been 512 GB for eighteen months, and for part of that time it was not for sale.

That is what "chosen once" means at the industry level: not only can you not add memory to a Mac after purchase, you cannot always buy the configuration you want when you want it, because the memory is a soldered component sourced on the same market as everyone else's. The 2026 memory market is the context, not the cause, and it deserves its own labelled row: TrendForce forecast LPDDR4X and LPDDR5X contract prices to "surge by around 90% QoQ in 1Q26" and LPDDR5X to rise "78-83%" again in the second quarter; Apple's chief executive called it "a hundred-year flood on the memory pricing" on the July 2026 earnings call; NVIDIA raised the DGX Spark's price by $700 "due to the constrained memory supplies worldwide". Everyone who solders memory is paying; Apple withdrew a configuration while the price flood ran.

What Fits, Measured Rather Than Estimated

The mlx quest teaches the napkin arithmetic for whether a model fits — parameters times bytes per weight times an overhead factor — and this quest links it rather than repeating it. What this lesson adds is measurement: the lab track recorded peak memory for each model at a short prompt and, on office, at 10, 50 and 90% of a 32K context. Those are the numbers a configurator decision should be made on, because the KV cache and the runtime's working buffers are real memory the napkin forgets.

Model (4-bit)On diskPeak, 209-token promptPeak, 3.2K contextPeak, 16K contextPeak, 29K contextEvidence
Qwen3.5-9B5.95 GB5.56 GB6.77 GB8.13 GB9.39 GBmeasured, office, 2026-09-15
Qwen3.5-27B16.05 GB15.85 GB18.21 GB20.46 GB22.57 GBmeasured
Qwen3.5-35B-A3B (MoE)20.39 GB19.90 GBmeasured (ladder only)
Llama-3.2-1B0.70 GB0.95 GB1.63 GB1.97 GB2.38 GBmeasured

Two things the table says that the napkin does not. First, the 27B model that "fits" a 24 GB Air by its disk size — and did run there at a short prompt, at 15.78 GB peak — needs 22.6 GB at 29K tokens of context, which is above the Air's 17.8 GiB GPU working set: the same model fits or does not depending on how long the conversation is. Second, the growth is not proportional to the model: from a 209-token prompt to 29K the 1B model grows by 1.4 GB and the 27B by 6.7, because the cache depends on the architecture's KV bytes per token, not on the weight count. The physics track measures that slope; here it is enough that capacity has to be chosen for the longest context you intend to hold, not for the file on disk.

The Rule the Household Uses

Buy the pool for the model you expect to run in two years at the context you actually use, then add the operating system's reserve (the next lesson) and a margin for whatever else the machine does. The founder's version is blunter and appears in the modular track: a sealed package charges full price for being wrong about the future, so guess high. Two of the household's Macs sit at the ceiling because the ceiling is where the largest open checkpoints begin to fit at four bits — and the big-models track does that arithmetic on real files.

Code

fits_at_context.py — fit against measured peaks, not disk size·python
#!/usr/bin/env python3
"""Which fleet Mac can hold which model at which context, judged against the
measured peak memory (office, 2026-09-15) and each Mac's recommended GPU
working set (read from mx.device_info() on the machine)."""

GIB = 2**30
WORKING_SET_GIB = {"office": 464.0, "music": 161.3, "pro2023": 107.5, "air": 17.8}   # measured

# peak GB observed: (short prompt, 3.2K, 16K, 29K tokens of a 32K window)
PEAK_GB = {
    "Qwen3.5-9B-4bit":  (5.56, 6.77, 8.13, 9.39),
    "Qwen3.5-27B-4bit": (15.85, 18.21, 20.46, 22.57),
    "Llama-3.2-1B-4bit": (0.95, 1.63, 1.97, 2.38),
}
CONTEXT = ("209 tok", "3.2K", "16K", "29K")

for model, peaks in PEAK_GB.items():
    print(model)
    for alias, ws in WORKING_SET_GIB.items():
        verdict = ["fits" if p * 1e9 / GIB <= ws else "NO" for p in peaks]
        print(f"  {alias:8} ws {ws:6.1f} GiB  " + "  ".join(f"{c}:{v}" for c, v in zip(CONTEXT, verdict)))

# air: the 27B fits at a short prompt (it ran: 6.09 tok/s) and does not at 16K or 29K.

External links

Exercise

Run fits_at_context.py with your Mac's working set added. Then take the model you most want to run and, using the measured peaks as a scale, estimate its peak at the longest context you actually use. Write down the answer to one question: at the configurator, would you have chosen the same memory size you have?
Hint
Scale by architecture, not by parameter count: a pure-attention model's cache grows several times faster per token than a hybrid's. If you do not know your model's KV bytes per token, the physics track shows how to read it from the config file; until then, the 27B row is a conservative proxy.

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.