# 让 MoE 训得稳、又均衡

> MoE 的命门是负载均衡——路由器爱偏心，把 token 全塞给少数热门专家，其余饿死。传统靠「辅助损失」硬掰，但它会干扰主目标、伤性能。看 DeepSeek 的「无辅助损失均衡」如何用一个动态偏置优雅解决，以及为什么头几层要保持稠密。

- 作者：David（道雾轩）
- 专栏：AI 大模型解构（https://daiw.org/manual/llm-anatomy.md）
- 最后更新：2026-07-13
- 原文：https://daiw.org/manual/llm-anatomy/moe-stability
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

# 让 MoE 训得稳、又均衡

MoE 有个众所周知的老大难，不解决，几百个专家就是摆设。这一章讲这个命门——**负载均衡**——以及 DeepSeek 一个特别漂亮的解法。

## 命门：路由器天生爱偏心

MoE 靠路由器给每个 token 挑专家。问题是，**路由器会「马太效应」**：某个专家一开始碰巧表现好、被选得多，就练得更好，于是被选得更多……最后**少数几个热门专家垄断了几乎所有 token，剩下几百个专家门可罗雀、学不到东西**。

这叫**负载不均衡(load imbalance)**，后果很严重：

1. **容量浪费**：你设了 256 个专家，实际干活的没几个，等于白堆参数。
2. **训练不稳 / 设备闲忙不均**：大模型的专家是**分散在多张卡上**的（专家并行）。热门专家所在的卡被打爆、冷门专家的卡在摸鱼，整体吞吐被最忙的卡拖死。

所以**「让 token 尽量均匀地分给各专家」**，是 MoE 能不能训好的头等大事。

## 老办法：辅助损失（有副作用）

Switch Transformer、GShard 那代的标准解法，是加一个**辅助损失(auxiliary load-balancing loss)**：在主训练目标之外，额外加一个惩罚项，**谁分配不均就罚谁**，逼着路由器把 token 摊平。

管用，但有**副作用**。这个辅助损失会往模型里**注入额外的梯度**，而这些梯度的目标（「务必均匀」）**和主目标（「把话说好」）未必一致**——有时候某个 token 本该重点交给某个专家最合适，辅助损失却为了「均匀」硬把它匀走。于是**均衡是达到了，模型质量却被拖累了**。这是一种「按下葫芦浮起瓢」的妥协。

## DeepSeek 的巧劲：无辅助损失均衡

DeepSeek 在 **《Auxiliary-Loss-Free Load Balancing》(Wang et al.， 2024)** 里提出了一个漂亮得多的办法，并用在了 DeepSeek-V3 上。核心一句话：

> **不用「损失」去掰，而是给每个专家的路由得分加一个可动态调节的「偏置(bias)」——谁太闲就把它的偏置调高一点（更容易被选中），谁太忙就调低一点。均衡靠这个「调节旋钮」实现，完全不碰主损失。**

打个比方：老办法像是**给挑食的孩子立个规矩、写进考卷里扣分**（规矩会干扰他好好答题）；新办法像是**食堂根据排队长短，悄悄把冷清窗口的菜价调便宜一点**——顾客自然被引导着分流，而没人被扣分、没人被强迫。

好处是决定性的：

- **不注入干扰主目标的梯度** → 模型质量不受损；
- 偏置只影响「选谁」，不改专家算出来的值，所以**均衡和质量不再打架**。

DeepSeek 的实验显示：**无辅助损失均衡，既比辅助损失方案更均衡，模型还更好。** 这是个「既要又要」都拿到的少见案例，也难怪 GLM-4.5 等后来者纷纷跟进类似思路。

<Callout type="info">
  实践里还有些配套的稳定性细节，顺带一提：路由打分常用 **fp32 高精度**计算（路由对数值抖动敏感）；以及**专家容量**上限——当某个专家这一批收到的 token 超过容量，多出来的会被丢弃或改道，防止个别专家被瞬间打爆。这些都是让 MoE「训得动」的工程护栏。
</Callout>

## 另一个稳定性招：头几层保持稠密

还有一个各家不约而同的小设计：**模型最前面的几层不做 MoE，保持稠密**。

- **DeepSeek-V3**：前 3 层稠密，之后才上 MoE；
- **GLM-4.5**：同样借鉴了「前几层稠密」的做法。

为什么？**最靠近输入的那几层，处理的是最基础、最共性的特征（词形、局部搭配），这些「人人都要」的东西本就不该被路由分流**；而且训练早期路由器还很「懵」，让它在第一层就对着几百个专家瞎分，容易带偏整个训练。**先用稳定的稠密层把地基打牢，再在上面放稀疏的 MoE**，收敛更稳。这是个便宜又有效的「稳定器」。

## 小结：MoE 的两条主线到此收束

把 MoE 这三章连起来看：

- **稠密 vs 稀疏**（为什么用 MoE）：解耦「容量」和「算力」；
- **三个旋钮**（怎么设计 MoE）：专家多而小 / 少而大、激活几个、要不要共享；
- **稳定与均衡**（怎么训好 MoE）：从辅助损失到 DeepSeek 的无辅助损失，加上头几层稠密。

至此，这一代大模型的**两条主战场（省 KV 缓存、稀疏化 MoE）**都讲完了。它们决定了一个模型「推理烧多少显存、每步算多少」这两个最要命的数字。

接下来几章，是重要但不改大局的「配角维度」。第一个，是一个看似不起眼、却实实在在左右训练能不能稳住的选择——**归一化到底放哪儿**。👉 [归一化：RMSNorm、Pre / Post / 三明治、QK-Norm](https://daiw.org/manual/llm-anatomy/normalization)

## 参考文献

- [1] Wang et al. (DeepSeek). “Auxiliary-Loss-Free Load Balancing Strategy for Mixture-of-Experts.” 2024. arXiv:2408.15664. —— 无辅助损失均衡。
- [2] Fedus et al. “Switch Transformers.” JMLR 2022. arXiv:2101.03961. —— 辅助负载均衡损失。
- [3] Zoph et al. “ST-MoE: Designing Stable and Transferable Sparse Expert Models.” 2022. arXiv:2202.08906. —— MoE 训练稳定性的系统研究。
- [4] DeepSeek-AI. “DeepSeek-V3 Technical Report.” 2024. arXiv:2412.19437. —— 无辅助损失均衡 + 前几层稠密的实际应用。
