让 MoE 训得稳、又均衡
MoE 的命门是负载均衡——路由器爱偏心,把 token 全塞给少数热门专家,其余饿死。传统靠「辅助损失」硬掰,但它会干扰主目标、伤性能。看 DeepSeek 的「无辅助损失均衡」如何用一个动态偏置优雅解决,以及为什么头几层要保持稠密。
让 MoE 训得稳、又均衡
MoE 有个众所周知的老大难,不解决,几百个专家就是摆设。这一章讲这个命门——负载均衡——以及 DeepSeek 一个特别漂亮的解法。
命门:路由器天生爱偏心
MoE 靠路由器给每个 token 挑专家。问题是,路由器会「马太效应」:某个专家一开始碰巧表现好、被选得多,就练得更好,于是被选得更多……最后少数几个热门专家垄断了几乎所有 token,剩下几百个专家门可罗雀、学不到东西。
这叫负载不均衡(load imbalance),后果很严重:
- 容量浪费:你设了 256 个专家,实际干活的没几个,等于白堆参数。
- 训练不稳 / 设备闲忙不均:大模型的专家是分散在多张卡上的(专家并行)。热门专家所在的卡被打爆、冷门专家的卡在摸鱼,整体吞吐被最忙的卡拖死。
所以**「让 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 等后来者纷纷跟进类似思路。
实践里还有些配套的稳定性细节,顺带一提:路由打分常用 fp32 高精度计算(路由对数值抖动敏感);以及专家容量上限——当某个专家这一批收到的 token 超过容量,多出来的会被丢弃或改道,防止个别专家被瞬间打爆。这些都是让 MoE「训得动」的工程护栏。
另一个稳定性招:头几层保持稠密
还有一个各家不约而同的小设计:模型最前面的几层不做 MoE,保持稠密。
- DeepSeek-V3:前 3 层稠密,之后才上 MoE;
- GLM-4.5:同样借鉴了「前几层稠密」的做法。
为什么?最靠近输入的那几层,处理的是最基础、最共性的特征(词形、局部搭配),这些「人人都要」的东西本就不该被路由分流;而且训练早期路由器还很「懵」,让它在第一层就对着几百个专家瞎分,容易带偏整个训练。先用稳定的稠密层把地基打牢,再在上面放稀疏的 MoE,收敛更稳。这是个便宜又有效的「稳定器」。
小结:MoE 的两条主线到此收束
把 MoE 这三章连起来看:
- 稠密 vs 稀疏(为什么用 MoE):解耦「容量」和「算力」;
- 三个旋钮(怎么设计 MoE):专家多而小 / 少而大、激活几个、要不要共享;
- 稳定与均衡(怎么训好 MoE):从辅助损失到 DeepSeek 的无辅助损失,加上头几层稠密。
至此,这一代大模型的**两条主战场(省 KV 缓存、稀疏化 MoE)**都讲完了。它们决定了一个模型「推理烧多少显存、每步算多少」这两个最要命的数字。
接下来几章,是重要但不改大局的「配角维度」。第一个,是一个看似不起眼、却实实在在左右训练能不能稳住的选择——归一化到底放哪儿。👉 归一化:RMSNorm、Pre / Post / 三明治、QK-Norm
参考文献
- [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. —— 无辅助损失均衡 + 前几层稠密的实际应用。