All Posts
AI Infrastructure August 21, 2026

Running DeepSeek-V4-Pro Locally: 1.6T MoE Expert Offloading on Apple Silicon (2026)

DeepSeek-V4-Pro shipped on August 13 as a 1.6 trillion parameter Mixture of Experts model with 49 billion active parameters per token, MIT licensed, a 1M token context window, and up to 384K output tokens. The MIT license means it is legally yours to run, and that fact has a lot of people on Apple Silicon asking the obvious question: can I run this on my Mac? The answer is a careful no for the full model, and a useful yes for a version of the question worth asking. This post does the memory math honestly, because MoE models confuse the local inference conversation in a specific way. Active parameters set your compute per token, which is why a 49B active model feels fast, but total parameters set your memory footprint, and 1.6 trillion of them do not fit in unified memory no matter how you quantize. We walk through what that means in gigabytes, why expert offloading to SSD trades a memory wall for a bandwidth wall, what genuinely runs well on an M5 Max and an M5 Ultra Studio today, and the decision rule for when local is the wrong tool and the API is the right one.

Running DeepSeek-V4-Pro Locally: 1.6T MoE Expert Offloading on Apple Silicon

DeepSeek-V4-Pro is MIT licensed, so it is legally yours to run. That is not the same as it being physically possible to run on your Mac. The model is a 1.6 trillion parameter Mixture of Experts with 49 billion active parameters per token, and those two numbers pull in opposite directions when you try to serve it locally. This post does the arithmetic so you can stop guessing.

The two numbers that decide everything

A Mixture of Experts model has a total parameter count and an active parameter count, and they govern different resources. Active parameters, 49B here, determine how much compute runs per token, which is why a sparse model with 49B active feels roughly as fast to decode as a dense 49B model rather than a dense 1.6T one. Total parameters, 1.6T here, determine how much has to be in memory, because at any given step the router can select any expert, so all of them must be resident or reachable. We covered this split in depth in the total versus active parameter memory analysis, and DeepSeek-V4-Pro is the case that makes it concrete.

Do the memory math. At 4-bit quantization, a rough rule is half a byte per parameter plus overhead, so 1.6T parameters land somewhere near 800GB just for weights, before the KV cache for a long context. There is no single Apple Silicon machine with 800GB of unified memory. The M5 Max tops out well below that, and even an M5 Ultra Studio configured to its ceiling does not reach it. So the full model, at any quantization you would actually want to use, does not fit in unified memory on a Mac. That is the honest answer, and no amount of clever configuration changes the physics.

Model footprint (4-bit approx) Weights in memory Fits on M5 Max? Fits on M5 Ultra Studio?
DeepSeek-V4-Pro, full 1.6T ~800GB No No
235B class MoE ~120GB Marginal Yes
100B to 120B class MoE ~60GB Yes Yes
30B to 49B dense or small MoE ~20GB to 28GB Yes Yes

Expert offloading trades one wall for another

The standard escape hatch for a model too big for memory is offloading: keep the hot path in fast memory and push the rest to slower storage. For a dense model you offload layers. For an MoE you can offload experts, keeping the router and shared parameters resident and streaming individual expert weights from SSD as the router selects them. Both llama.cpp and MLX based stacks support variants of this.

It works, and it is slow, because you have swapped a memory wall for a bandwidth wall. Unified memory on an M5 Max delivers hundreds of gigabytes per second. A fast SSD delivers a few gigabytes per second, an order of magnitude or two less. Every token that routes to an expert not currently resident pays an SSD read on the critical path, and because routing changes token to token, the penalty is not a one time load, it recurs. The result is decode throughput that can drop from tens of tokens per second to low single digits, with a fat latency tail whenever a cold expert is selected. If you have read our work on inter token latency and tail jitter, this is the same problem in a crueler form: the tail is now set by disk, not by kernels.

A settings sketch for llama.cpp style expert offload looks like this, expressed as the server options you would set:

llama-server expert offload settings:
  model:           deepseek-v4-pro-Q4_K_M.gguf
  n_gpu_layers:    999
  override_tensor: "\.ffn_.*_exps\.=CPU"   # route expert FFN tensors off the GPU
  ctx_size:        8192
  threads:         12

That pattern keeps attention and shared weights on the GPU and routes the expert feed forward tensors to CPU or disk backed memory. It runs. Whether it runs fast enough to be useful depends entirely on how often your prompts hit cold experts, which you have to measure on your own traffic.

What actually runs well locally

The productive version of the question is not "can I run the 1.6T model" but "what is the largest capable model that fits in my memory budget and decodes at a usable speed." On an M5 Max that answer is typically a 100B to 120B class MoE at 4-bit, or a 30B to 49B dense model with room to spare for context. On an M5 Ultra Studio you can comfortably serve a 235B class MoE. Those fit fully in unified memory, so they get the full memory bandwidth and there is no SSD in the decode path.

Apple Silicon has also gotten materially faster at this. Apple's January 2026 research on the M5 Neural Accelerators showed, for a Qwen3-14B 4-bit model in MLX, time to first token about 4.06 times faster than the M4 and token generation about 1.19 times faster. That helps the models that fit. It does nothing for a model that cannot fit, because you cannot accelerate a weight that is sitting on an SSD. Runtime choice matters here too, and our GGUF versus MLX quantization comparison covers which format to reach for on which size class.

When local is the wrong tool

Here is the decision rule. If you need DeepSeek-V4-Pro specifically, at its full capability, on long contexts, you want the hosted API, not your Mac. The five times cheaper output pricing relative to comparable models makes the API economically sensible for exactly the token heavy work the full model is best at, and you skip the entire offloading problem. Local inference earns its keep when the driver is privacy, offline operation, per token cost at high volume on a smaller model, or latency for short prompts, and when a 30B to 235B class model meets your quality bar. If the requirement is the frontier 1.6T model itself, unified memory is not the place for it yet.

When this applies to your stack

Teams reach for a giant open weights model because the license says they can, then discover the hardware says otherwise. The useful move is to separate the two questions. Decide what quality you actually need, find the smallest model that clears it, and size hardware to run that model fully in memory rather than heroically offloading a model that will never be fast. For most on device and edge workloads that lands you on a mid sized MoE that fits cleanly, with the frontier model called through an API for the rare tasks that genuinely need it.

Contra Collective builds this kind of hybrid AI infrastructure: local models where privacy and cost justify them, hosted frontier models where capability demands them, and a routing layer that sends each request to the cheapest tier that can serve it. If you are trying to figure out what belongs on your own silicon and what belongs in the cloud, that is the work we do.

FAQ

Can I run DeepSeek-V4-Pro on an M5 Max? Not the full model. At 4-bit it needs roughly 800GB of memory for weights alone, far beyond any single Apple Silicon machine. You can attempt expert offloading to SSD, but decode speed collapses to low single digit tokens per second with a heavy latency tail.

Why does a 49B active model still need so much memory? Because active parameters set compute per token, not memory. The router can select any of the 1.6T total parameters at any step, so all experts must be resident or reachable. Total parameters set the memory footprint, active parameters set the speed.

What is the largest model I should actually run on Apple Silicon? On an M5 Max, a 100B to 120B class MoE at 4-bit or a 30B to 49B dense model, both of which fit fully in unified memory. On an M5 Ultra Studio, a 235B class MoE. Keeping the whole model in memory avoids the SSD bandwidth wall entirely.

Does expert offloading make large MoE models practical locally? It makes them possible, not practical, for most workloads. Every token that routes to a non resident expert pays an SSD read on the critical path, and routing changes token to token, so the penalty recurs and the latency tail is wide.

When should I just use the API instead? When you need the full frontier model on long contexts. DeepSeek-V4-Pro is roughly five times cheaper per output token than comparable models, so hosting it via API is economical for the token heavy work it is best at, and you avoid the offloading problem completely.

[ 02 ] — Keep Reading

More from the lab.

Oct 6, 2026 AI Infrastructure

vLLM vs SGLang: Choosing a Production LLM Inference Engine in Late 2026

vLLM and SGLang are both open source, both built to serve LLMs at production scale, and both frequently recommended for the exact same job, which is exactly why teams keep picking the wrong one. The real difference is not a benchmark number. It is which attention and caching architecture matches your actual traffic pattern, and most teams never check that before they commit infrastructure budget to one or the other.

Oct 4, 2026 AI Infrastructure

Ollama's MLX Backend Beats Metal by 93 Percent: Apple Silicon Local Inference Tested (October 2026)

Ollama's 0.19 release notes say it plainly: on Apple Silicon, Ollama is now built on top of Apple's MLX framework to take advantage of its unified memory architecture, rather than the Metal backed llama.cpp path it shipped for years. On an M4 Max running Qwen3.5, that swap took decode speed from 57.8 tokens per second to 111.4, a 93 percent improvement, and prefill from 1,154 to 1,810 tokens per second. The catch is in the fine print: the MLX runner is in preview, it needs 32GB or more of unified memory to activate at all, and as of this release it only accelerates one model family. Here is what actually changed, what it costs to turn on, and where it still falls back silently to the slower path.

Oct 3, 2026 AI Infrastructure

DGX Spark vs Mac Studio M5 Ultra: Local LLM Inference Benchmarked (October 2026)

The M5 Ultra Mac Studio shipping in September 2026 is a quad die chip with 1.2 terabytes per second of memory bandwidth and up to 256GB of unified memory, with a 512GB configuration arriving in late October. Against a single NVIDIA DGX Spark, it is not close: on a 27B dense model, the Mac decodes at roughly four times the speed. Cluster two DGX Spark units together over NVIDIA's GX10 networking instead, and the comparison flips for a different workload entirely, concurrent multi user serving. Neither machine is the right answer for every workload, and the decision comes down to whether you are serving one user or several at once.

Ready when you are

Want to discuss this topic?

Start a Conversation