The failure mode you must understand
Expert collapse is the single biggest failure mode in MoE training. If routing is left unconstrained, the network rapidly converges to sending most tokens to a small subset of experts, which then improve fastest, which makes the router send even more tokens to them, which... you see the loop. The end state: a few experts handle everything, the rest are dead weight occupying memory for no benefit.
Why it happens
Routers are trained alongside experts. Whichever expert is best at the start of training gets more tokens, gets better, gets more tokens. Without an explicit pressure to spread load, the optimizer has no reason to keep underused experts alive. This is a self-reinforcing failure that can ruin a multi-million-dollar training run if you don't catch it.
Solutions
- Auxiliary load-balancing loss. Adds a penalty term that encourages roughly equal expert utilization across the batch. Standard since Switch Transformer; used by Mixtral and most early MoE.
- Auxiliary-loss-free balancing. DeepSeek-V3 introduced a clever alternative: add learnable per-expert bias terms to the router logits, and adjust them based on observed expert utilization during training. No extra loss term, no interference with the main objective.
- Expert capacity limits. Cap how many tokens any single expert can process per batch. Excess tokens get routed to second-choice experts or dropped. Common in production MoE training.
- Noise injection. Add noise to router scores during training to prevent fully deterministic routing patterns from forming too early.
Why this matters even at inference
Even after training, expert utilization is not perfectly uniform — some experts genuinely fire more than others depending on the workload. This shows up as load skew across GPUs in production: the GPU holding popular experts gets hammered, others sit half-idle. Production MoE serving stacks (vLLM, TensorRT-LLM) have to handle this dynamically.
Reading model cards for balancing strategy
If a model card mentions "auxiliary loss" or specifies a balancing coefficient, that's the standard route. If it mentions "auxiliary-loss-free" or "bias-based balancing", you're reading a DeepSeek-style design. If it doesn't mention balancing at all, either the model is dense or someone forgot a critical detail.