Can It Run?
Home โ€บ gpt-oss-120b โ€บ M3 Ultra 96GB

Can an M3 Ultra 96GB Mac run gpt-oss-120b?

M3 Ultra ยท 96 GB unified memory ยท 819 GB/s ยท Mac Studio (M3 Ultra)

Just barely โ€” and you will feel it.

gpt-oss-120b at Q4_K_M needs about 71.3 GiB against roughly 81.6 GiB usable โ€” that is 87% of your budget. It will load, but close your browser first, keep the context short, and expect memory pressure. Around 131 tokens/sec.

Weights
66.6 GiB
116.8B params @ Q4_K_M
KV cache
0.6 GiB
8K context, FP16
Overhead
4.1 GiB
runtime + activations
Total needed
71.3 GiB
of ~81.6 GiB usable
Est. speed
131 tok/s
819 GB/s bandwidth
Max context
64K tokens
at Q4_K_M

Where the memory goes

Three things occupy memory when a model is loaded: the weights themselves, the KV cache that holds the conversation, and the runtime's own working buffers. Only the first is fixed โ€” the KV cache grows with every token in your context.

QuantisationWeightsTotalTok/sFits?
FP16217.6 GiB229.8 GiB40No
Q8_0115.6 GiB122.7 GiB76No
Q6_K89.7 GiB95.6 GiB97No
Q5_K_M77.5 GiB82.7 GiB113No
Q4_K_M66.6 GiB71.3 GiB131Yes, but tight
Q3_K_M53.0 GiB57.0 GiB165Yes, comfortably
Q2_K40.8 GiB44.2 GiB214Yes, comfortably

The default. Best quality-per-gigabyte for most people.

How long a context fits

The KV cache is often what breaks a setup that looked fine at load time. Quantising it to 8-bit roughly halves its footprint with little measurable quality cost.

ContextKV cacheTotalFP16 KVQ8 KV
2K0.1 GiB70.7 GiBYes, but tightYes, but tight
4K0.3 GiB70.9 GiBYes, but tightYes, but tight
8K0.6 GiB71.3 GiBYes, but tightYes, but tight
16K1.1 GiB72.2 GiBYes, but tightYes, but tight
32K2.3 GiB73.9 GiBYes, but tightYes, but tight
128K9.0 GiB84.3 GiBNoYes, but tight

What to run instead on an M3 Ultra 96GB Mac

These are the largest models that fit comfortably on this machine at Q4_K_M with an 8K context.

ModelSizeTotalTok/s
Qwen2.5 72B72.7B46.8 GiB15Yes, comfortably
DeepSeek-R1-Distill-Llama-70B70.6B45.6 GiB15Yes, comfortably
Llama 3.3 70B70.6B45.6 GiB15Yes, comfortably
Mixtral 8x7B46.7B29.8 GiB52Yes, comfortably
DeepSeek-R1-Distill-Qwen-32B32.8B22.4 GiB33Yes, comfortably
Qwen2.5 32B32.8B22.4 GiB33Yes, comfortably

How to run it

Ollama is the shortest path. It picks a quantisation automatically โ€” usually Q4_K_M, which is what the numbers above assume.

brew install ollama
ollama serve &
ollama run gpt-oss:120b

For MLX โ€” Apple's own array framework, typically a little faster than llama.cpp on Apple Silicon:

pip install mlx-lm
mlx_lm.generate --model mlx-community/gpt-oss-120b-4bit --prompt "Hello"
You are close to the limitIf it stutters or gets killed, raise the Metal memory cap before loading: sudo sysctl iogpu.wired_limit_mb=83558. This resets on reboot. Quantising the KV cache (--kv-cache-type q8_0 in llama.cpp) buys back 0.3 GiB.

Macs that run gpt-oss-120b comfortably

The smallest configuration that handles it is the M3 Max 128GB (MacBook Pro 16" (M3 Max)).

MacMemoryBandwidthTok/s
M3 Max 128GB128 GB400 GB/s64
M4 Max 128GB128 GB546 GB/s87
M2 Ultra 192GB192 GB800 GB/s128
M3 Ultra 256GB256 GB819 GB/s131
M3 Ultra 512GB512 GB819 GB/s131

Common questions

Can an M3 Ultra 96GB Mac run gpt-oss-120b?
Yes. At Q4_K_M it needs about 71.3 GiB of the roughly 81.6 GiB available, generating around 131 tokens per second.
How fast is gpt-oss-120b on an Mac?
Around 131 tokens per second. Token generation on Apple Silicon is limited by memory bandwidth, and this machine has 819 GB/s. Because this is a mixture-of-experts model only 5.1B of its 116.8B parameters are read per token, which is why it is faster than its size suggests.
How much memory does gpt-oss-120b need?
66.6 GiB for the weights at Q4_K_M, plus 0.6 GiB for an 8K-token KV cache and about 4.1 GiB of runtime overhead โ€” 71.3 GiB in total.