Yes — with 7.3 GB to spare
Qwen3.8 27B at Q4_K_M fits your M4 · 32 GB entirely in unified memory at 8K context, at an estimated 4.3 tokens per second. Past 124K the KV cache pushes it over — quantise the cache to q8_0, or step down a quantisation, to go longer.
The current default local Qwen: dense 27B, text + image + video, 262K context. Only 16 of its 64 blocks keep a KV cache, so long context is cheap.
The VRAM budget
Quantisation ladder
| Quant | Weights | Total @ 8K | Max context | Tok/s | Quality | Fit |
|---|---|---|---|---|---|---|
| Q8_0 | 27.5 GB | 28.6 GB | — | ~2.4 | −0.1% ppl | 4.6 GB over |
| Q6_K | 21.2 GB | 22.3 GB | 34K | 3.2 | −0.4% ppl | Long context |
| Q5_K_M | 18.4 GB | 19.5 GB | 80K | 3.7 | −0.8% ppl | Long context |
| Q4_K_M | 15.6 GB | 16.7 GB | 124K | 4.3 | −1.9% ppl | Recommended |
| Q3_K_M | 12.7 GB | 13.8 GB | 171K | 5.3 | −5.4% ppl | Long context |
| Q2_K | 10.8 GB | 11.9 GB | 200K | 6.2 | −15% ppl | Long context |
Quality is the published perplexity delta against f16 weights. Max context assumes an f16 KV cache; q8_0 roughly doubles it. Only 16 of its 64 blocks keep a per-token KV cache; the rest are linear-attention, Mamba or convolution blocks with a fixed-size state.
How to run it
$ pip install mlx-lm $ mlx_lm.generate --model mlx-community/Qwen3.8-27B-4bit \ --max-tokens 512 --prompt "Hello"
Apple's own array framework. The fastest path on Apple Silicon. More on MLX.