Can I run DeepSeek-V3.1 on a Apple M3 Ultra?
Not at these settings. No indexed quantization of DeepSeek-V3.1 fits Apple M3 Ultra at any context we compute, with q4_0 KV. The smallest shipped quantization is 137.32 GiB in weights alone, against 66.96 GiB usable. CPU offload can still run it, slowly.
Every quantization at every context
| Quant | Weights● | 4K◐ | 8K◐ | 16K◐ | 32K◐ | 64K◐ | 128K◐ |
|---|---|---|---|---|---|---|---|
| F16 | 1250.09 GiB | 1250.8 | 1250.9 | 1251.0 | 1251.3 | 1251.9 | 1253.1 |
| BF16 | 1250.09 GiB | 1250.8 | 1250.9 | 1251.0 | 1251.3 | 1251.9 | 1253.1 |
| Q8_0 | 664.30 GiB | 665.0 | 665.1 | 665.2 | 665.5 | 666.1 | 667.3 |
| Q6_K | 514.51 GiB | 515.2 | 515.3 | 515.4 | 515.7 | 516.3 | 517.5 |
| Q5_K_M | 445.49 GiB | 446.2 | 446.3 | 446.4 | 446.7 | 447.3 | 448.5 |
| Q5_K_S | 430.86 GiB | 431.6 | 431.6 | 431.8 | 432.1 | 432.7 | 433.9 |
| Q4_1 | 392.12 GiB | 392.8 | 392.9 | 393.0 | 393.4 | 394.0 | 395.2 |
| Q4_K_M | 381.12 GiB | 381.8 | 381.9 | 382.1 | 382.4 | 383.0 | 384.2 |
| Q4_K_S | 367.08 GiB | 367.8 | 367.9 | 368.0 | 368.3 | 368.9 | 370.1 |
| Q4_0 | 359.88 GiB | 360.6 | 360.7 | 360.8 | 361.1 | 361.7 | 362.9 |
| IQ4_NL | 354.35 GiB | 355.1 | 355.1 | 355.3 | 355.6 | 356.2 | 357.4 |
| IQ4_XS | 335.26 GiB | 336.0 | 336.0 | 336.2 | 336.5 | 337.1 | 338.3 |
| Q3_K_M | 298.44 GiB | 299.1 | 299.2 | 299.4 | 299.7 | 300.3 | 301.5 |
| Q3_K_L | 297.75 GiB | 298.5 | 298.5 | 298.7 | 299.0 | 299.6 | 300.8 |
| IQ3_M | 286.74 GiB | 287.4 | 287.5 | 287.7 | 288.0 | 288.6 | 289.8 |
| Q3_K_S | 273.21 GiB | 273.9 | 274.0 | 274.1 | 274.4 | 275.0 | 276.2 |
| UD-IQ3_XXS | 260.49 GiB | 261.2 | 261.3 | 261.4 | 261.7 | 262.3 | 263.5 |
| IQ3_XS | 258.11 GiB | 258.8 | 258.9 | 259.0 | 259.3 | 259.9 | 261.2 |
| IQ3_XXS | 249.25 GiB | 250.0 | 250.0 | 250.2 | 250.5 | 251.1 | 252.3 |
| Q2_K_L | 229.03 GiB | 229.7 | 229.8 | 230.0 | 230.3 | 230.9 | 232.1 |
| Q2_K | 228.82 GiB | 229.5 | 229.6 | 229.8 | 230.1 | 230.7 | 231.9 |
| UD-IQ2_M | 219.34 GiB | 220.0 | 220.1 | 220.3 | 220.6 | 221.2 | 222.4 |
| UD-IQ2_XXS | 210.37 GiB | 211.1 | 211.1 | 211.3 | 211.6 | 212.2 | 213.4 |
| IQ2_M | 200.27 GiB | 201.0 | 201.0 | 201.2 | 201.5 | 202.1 | 203.3 |
| UD-IQ1_M | 192.62 GiB | 193.3 | 193.4 | 193.6 | 193.9 | 194.5 | 195.7 |
| UD-IQ1_S | 179.11 GiB | 179.8 | 179.9 | 180.0 | 180.3 | 180.9 | 182.1 |
| IQ2_S | 176.61 GiB | 177.3 | 177.4 | 177.5 | 177.8 | 178.4 | 179.6 |
| IQ2_XS | 175.47 GiB | 176.2 | 176.2 | 176.4 | 176.7 | 177.3 | 178.5 |
| UD-TQ1_0 | 158.79 GiB | 159.5 | 159.6 | 159.7 | 160.0 | 160.6 | 161.8 |
| IQ2_XXS | 152.79 GiB | 153.5 | 153.6 | 153.7 | 154.0 | 154.6 | 155.8 |
| IQ1_M | 137.32 GiB | 138.0 | 138.1 | 138.3 | 138.6 | 139.2 | 140.4 |
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.
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, this model uses latent attention and allocates no V cache at all, so any formula reading num_key_value_heads overstates its cache by more than an order of magnitude.