Can I run Qwen3.5-4B-SOMPOA-heresy-v2 on a Apple M3 Ultra?
Yes. The best fit is BF16 at 131,072 context with f16 KV — 13.59 GiB of 66.96 GiB usable, leaving 58.41 GiB headroom. Expect roughly 41 tokens/sec (modeled, ±8.3%).
Every quantization at every context
| Quant | Weights● | 4K◐ | 8K◐ | 16K◐ | 32K◐ | 64K◐ | 128K◐ |
|---|---|---|---|---|---|---|---|
| BF16 | 9.03 GiB | 9.7 | 9.8 | 10.1 | 10.6 | 11.6 | 13.6 |
| F16 | 7.85 GiB | 8.5 | 8.7 | 8.9 | 9.4 | 10.4 | 12.4 |
| Q8_0 | 4.80 GiB | 5.5 | 5.6 | 5.9 | 6.4 | 7.4 | 9.4 |
| I1-Q6_K | 3.23 GiB | 3.9 | 4.0 | 4.3 | 4.8 | 5.8 | 7.8 |
| Q6_K | 3.23 GiB | 3.9 | 4.0 | 4.3 | 4.8 | 5.8 | 7.8 |
| I1-Q5_K_M | 2.90 GiB | 3.6 | 3.7 | 4.0 | 4.5 | 5.5 | 7.5 |
| Q5_K_M | 2.90 GiB | 3.6 | 3.7 | 4.0 | 4.5 | 5.5 | 7.5 |
| I1-Q5_K_S | 2.78 GiB | 3.5 | 3.6 | 3.8 | 4.3 | 5.3 | 7.3 |
| Q5_K_S | 2.78 GiB | 3.5 | 3.6 | 3.8 | 4.3 | 5.3 | 7.3 |
| I1-Q4_1 | 2.58 GiB | 3.3 | 3.4 | 3.6 | 4.1 | 5.1 | 7.1 |
| I1-Q4_K_M | 2.52 GiB | 3.2 | 3.3 | 3.6 | 4.1 | 5.1 | 7.1 |
| Q4_K_M | 2.52 GiB | 3.2 | 3.3 | 3.6 | 4.1 | 5.1 | 7.1 |
| I1-Q4_K_S | 2.38 GiB | 3.1 | 3.2 | 3.4 | 3.9 | 4.9 | 6.9 |
| Q4_K_S | 2.38 GiB | 3.1 | 3.2 | 3.4 | 3.9 | 4.9 | 6.9 |
| I1-Q4_0 | 2.37 GiB | 3.1 | 3.2 | 3.4 | 3.9 | 4.9 | 6.9 |
| I1-IQ4_NL | 2.37 GiB | 3.1 | 3.2 | 3.4 | 3.9 | 4.9 | 6.9 |
| IQ4_XS | 2.28 GiB | 3.0 | 3.1 | 3.3 | 3.8 | 4.8 | 6.8 |
| I1-IQ4_XS | 2.27 GiB | 3.0 | 3.1 | 3.3 | 3.8 | 4.8 | 6.8 |
| I1-Q3_K_L | 2.20 GiB | 2.9 | 3.0 | 3.3 | 3.8 | 4.8 | 6.8 |
| Q3_K_L | 2.20 GiB | 2.9 | 3.0 | 3.3 | 3.8 | 4.8 | 6.8 |
| I1-Q3_K_M | 2.10 GiB | 2.8 | 2.9 | 3.2 | 3.7 | 4.7 | 6.7 |
| Q3_K_M | 2.10 GiB | 2.8 | 2.9 | 3.2 | 3.7 | 4.7 | 6.7 |
| I1-IQ3_M | 2.01 GiB | 2.7 | 2.8 | 3.1 | 3.6 | 4.6 | 6.6 |
| I1-IQ3_S | 1.93 GiB | 2.6 | 2.7 | 3.0 | 3.5 | 4.5 | 6.5 |
| I1-Q3_K_S | 1.93 GiB | 2.6 | 2.7 | 3.0 | 3.5 | 4.5 | 6.5 |
| Q3_K_S | 1.93 GiB | 2.6 | 2.7 | 3.0 | 3.5 | 4.5 | 6.5 |
| I1-IQ3_XS | 1.87 GiB | 2.6 | 2.7 | 2.9 | 3.4 | 4.4 | 6.4 |
| I1-IQ3_XXS | 1.69 GiB | 2.4 | 2.5 | 2.8 | 3.3 | 4.3 | 6.3 |
| I1-Q2_K | 1.67 GiB | 2.4 | 2.5 | 2.7 | 3.2 | 4.2 | 6.2 |
| Q2_K | 1.67 GiB | 2.4 | 2.5 | 2.7 | 3.2 | 4.2 | 6.2 |
| I1-Q2_K_S | 1.62 GiB | 2.3 | 2.4 | 2.7 | 3.2 | 4.2 | 6.2 |
| I1-IQ2_M | 1.51 GiB | 2.2 | 2.3 | 2.6 | 3.1 | 4.1 | 6.1 |
| I1-IQ2_S | 1.41 GiB | 2.1 | 2.2 | 2.5 | 3.0 | 4.0 | 6.0 |
| I1-IQ2_XS | 1.39 GiB | 2.1 | 2.2 | 2.5 | 3.0 | 4.0 | 6.0 |
| I1-IQ2_XXS | 1.29 GiB | 2.0 | 2.1 | 2.4 | 2.9 | 3.9 | 5.9 |
| I1-IQ1_M | 1.17 GiB | 1.9 | 2.0 | 2.2 | 2.7 | 3.7 | 5.7 |
| I1-IQ1_S | 1.09 GiB | 1.8 | 1.9 | 2.2 | 2.7 | 3.7 | 5.7 |
Figures are GiB of total memory: weights plus KV cache plus compute buffer and backend overhead. Weights and KV are near-exact; the overhead term is modeled. Hover any cell for the breakdown.
Run it
The best-fitting configuration above, as a command:
llama-cli -hf MuXodious/Qwen3.5-4B-SOMPOA-heresy-v2 \ --ctx-size 131072 \ -ngl auto
Recent llama.cpp defaults to --fit on with -ngl auto, so it will size the offload for you. The question worth your attention is not how many layers to offload but what context and quantization you are willing to live with — which is what the grid above is for.
Why other calculators disagree
A parameters × bits ÷ 8 estimate ignores two things that dominate at long context. First, the weights themselves are not the nominal rate — quantizations are mixtures, so the real file is consistently larger than the label implies. Second, the KV cache grows linearly with context and, past about 32K, becomes larger than the weights for many models.