稠密模型有一道残酷的算术:参数翻倍,每个 token 的计算量也翻倍。混合专家(MoE)是当前大模型对这道算术唯一的规模化答案——2024 年底 DeepSeek-V3 用 671B 总参数只激活 37B 拿到旗舰级质量,2025 年 Kimi K2、GLM-4.5、Qwen3 旗舰全面跟进,MoE 已从研究玩具变成旗舰标配。但 MoE 引入了一个训练时最容易翻车的部件:路由器。token 涌向少数热门专家、其他专家饿死,模型质量就崩了。这篇深度解析沿负载均衡的演进主线,拆解 MoE 的路由与均衡设计。
一、解耦的代价:一个会翻车的路由器
MoE 的结构改动极其克制:把 Transformer 的 FFN 子层替换成多个并行的「专家」FFN,加一个路由器为每个 token 挑选少数几个专家。参数量涨在专家数量上,计算量涨在激活的少数专家上——这就是「参数与计算解耦」。Switch Transformer 论文的口号是「疯狂的参数量、恒定的计算成本」;ST-MoE 的 269B 参数只有约 32B 稠密模型的计算成本。
替换策略各家不同:GShard 只替换每隔一个 FFN 块,Mixtral 替换每一层,DeepSeek-V3 除前三层外全部替换。路由器本身是个线性层加选择逻辑——但恰恰是这个最简单的部件,成了 MoE 训练的头号难题,后面几节全是围绕它展开的补救史。
小结:MoE 用「多备几套 FFN、每 token 只用一套」实现解耦;所有麻烦都源于「谁来决定用哪套」。
二、路由的形式:softmax 派与 sigmoid 派
路由器的基本动作是:对每个 token 算一遍所有专家的亲和度分数,取分数最高的 k 个专家,把 token 交给它们按权重处理。2024 年之前的主流写法是 softmax top-k,Mixtral 的公式最有代表性:G(x) = Softmax(TopK(x·W_g))——先取 top-2,再在两个选中专家之间做 softmax 归一化,输出是两个专家 FFN 的加权和。
2024 年之后出现了一个安静的转向:DeepSeek-V3 改用 sigmoid 计算亲和度,再只在被选中的专家之间归一化门控值。sigmoid 不做全局竞争,每个专家独立打分,这个细节与 DeepSeek 的免辅助损失均衡(见下节)是配套的。到 2025 年,Kimi K2 与 GLM-4.5 的技术报告都明确写下「sigmoid gates + loss-free balancing」——sigmoid 派成了开源 MoE 的事实标准。
选几个专家也有讲究。GShard 用 top-2 并带随机性(按门控概率把 token 派给第二选专家,为梯度探索留通道);Switch Transformer 反其道用 top-1,实验显示质量不掉、路由计算减半、专家批量(capacity)反而翻倍,直接反驳了此前「k 必须大于 1」的共识;Mixtral 回到 top-2,用克制配置(8 专家)换取单卡可部署性。
小结:路由公式从 softmax 演进到 sigmoid,选择数在 top-1 与 top-2 之间摇摆——都是为后面的均衡问题服务的工程选择。
三、负载均衡演进线:从辅助损失到免辅助损失
路由器有个天生的正反馈回路,研究者称为「rich-get-richer」:某专家拿到的 token 多,训练更新就多,分数就更高,下一轮拿到的 token 更多——少数专家赢家通吃,其余饿死,专家并行时各 GPU 负载极度不均。八年来的负载均衡方案,就是对这个回路的三代压制。
**第一代:辅助损失(GShard / Switch)。**在主损失外加一项均衡惩罚:loss = α·N·Σ f_i·P_i——f_i 是实际分给专家 i 的 token 比例,P_i 是路由器给它的平均概率,两者越不均匀惩罚越大;乘专家数 N 是为了让损失量级不随专家数变化(Switch 的 α 取 0.01)。配套的工程机制是专家容量:给每个专家设一个 token 配额(按容量因子放大),超配额的 token 被「丢弃」——不经过专家、经残差连接直通下一层。Switch 实测丢弃率通常小于 1%,且低容量因子(1.0–1.25)下表现更好。辅助损失有效,但它是个临时工:为了均衡而施加的梯度会干扰主目标,均衡越用力,语言建模损失被拖累得越明显。
**第二代:z-loss 稳数值(ST-MoE)。**ST-MoE 发现稀疏模型训练不稳定的另一个源头是路由 logits 数值过大:bfloat16 的舍入误差在指数运算下被放大——论文举的例子是,路由 logit 从 128 涨到 128.5,softmax 输出就能变化 36%。router z-loss 对 logits 的对数和求平方惩罚(系数 0.001),把数值压在安全区,三次运行全部稳定且质量无损。这是与负载均衡正交的「数值稳定」补丁。
第三代:免辅助损失的偏置调节(DeepSeek)。DeepSeek-V3 的思路是把「均衡」从损失函数里彻底拿出来:给每个专家一个偏置 b_i,加在亲和度分数上参与 top-k 选择,但门控权重仍用原始分数——偏置只影响「谁被选中」,不影响「选中后算多少」。每个训练步结束时按专家负载更新偏置:过载就减、欠载就加,步长因子 γ 取 0.001(在 14.3T token 后归零,路由格局冻结)。这相当于用一个只对路由器生效的控制器替代了会污染主模型的辅助损失。为防极端情况,V3 仍保留了一个权重极小(0.0001)的序列级均衡损失,只为避免单条序列内部的不平衡。结果是不均衡被控制住的同时,模型质量不再为均衡买单。
timeline
title 负载均衡三代演进
2020 : GShard 辅助损失加专家容量
2021 : Switch 简化 top-1,验证损失公式
2022 : ST-MoE 补 router z-loss 稳数值
2024 : DeepSeek 免辅助损失的偏置调节
2025 : Kimi K2、GLM-4.5 跟进 sigmoid 加免损失方案
小结:均衡方案的演进方向是「离模型越来越远」——从污染梯度的辅助损失,到只动路由选择的偏置项;均衡这个目标本身从没变,变的是实现它时不伤主目标的程度。
四、DeepSeekMoE:把专家切碎,再留一个公共通道
DeepSeek 系在路由之外还有两个结构创新。其一,细粒度专家:把每个 FFN 专家切得更小、数量更多(V3 每层 256 个路由专家、每 token 激活 8 个),专家切得碎,组合数指数级增长,同样的激活预算下表达的知识组合更灵活。其二,共享专家隔离:每层留 1 个常驻专家,每个 token 必经——通用知识沉淀在共享专家里,路由专家不必各自重复学一遍公共模式,冗余降低。两者合起来,就是 2025 年开源 MoE 的标准形态。
工程上还有一条容易被忽略的约束:node-limited routing。每 token 的 8 个专家最多分布在 4 个节点内——专家并行下 token 要在 GPU 间 all-to-all 通信,不限制节点数,通信开销会吃掉稀疏化省下的算力。V3 的训练框架靠这条约束实现了计算与通信近乎完全重叠。配套的还有 MTP(多 token 预测):每个位置额外预测 1 个未来 token 的轻量模块,训练信号更密,推理时可丢弃或改造成投机解码。
小结:细粒度与共享专家解决「专家怎么设计」,偏置均衡解决「路由怎么稳」,节点限制解决「通信怎么省」——V3 的 MoE 是一组环环相扣的工程决策,不是单点创新。
五、2025 年:开源 MoE 收敛到 DeepSeek 范式
把 2025 年的主流开源模型摊开,能看到罕见的收敛——各家在 MoE 设计上几乎抄了同一份作业,差异化竞争转移到了注意力侧:
| 模型(时间) | 路由专家 / 激活 / 共享 | 总参 / 激活 | 注意力差异化 |
|---|---|---|---|
| DeepSeek-V3(2024-12) | 256 / 8 / 1 | 671B / 37B | MLA |
| Kimi K2(2025-07) | 384 / 8 / 1 | 1T / 32B | MLA(64 头) |
| GLM-4.5(2025-08) | 160 / 8 / 1 | 355B / 32B | 更窄更深的形状 |
| Qwen3-235B(2025) | 128 / 8 / 无共享 | 235B / 22B | GQA + QK-Norm |
| Qwen3-Next(2025-09) | 512 / 10 / 1 | 80B / 3B | 3:1 线性注意力混合 |
| MiniMax-01(2025-01) | 32 / 2 / 无共享 | 456B / 45.9B | 7:1 lightning attention 混合 |
前四行是标准的 DeepSeek 范式(细粒度 + 共享 + sigmoid + 免损失均衡);后两行代表另一条分化路线——既然 MoE 已经把 FFN 成本压到位,就把注意力也换成线性注意力(Gated DeltaNet / lightning attention),搏更高的长上下文吞吐:Qwen3-Next 官方称以 Qwen3-32B 约 10% 的训练成本超过之、32K 以上推理吞吐约 10 倍。支撑这套玩法的底层设施也已开源——DeepSeek 在 2025 年 2 月开源周放出的 DeepEP 是首个开源的 MoE 专家并行通信库(all-to-all 高吞吐 kernel)。
Mixtral 论文里那个有趣的观察值得记一笔:专家的分化不是按主题的(科技文档与生物医学文档的专家分配分布几乎相同),而是按句法与位置——连续 token 倾向走同一专家(最高约 24–28%,随机基线只有 12.5%),代码缩进、Python 的 self 这类结构符号常固定路由到同一专家。「专家 = 领域专家」的直觉图景是错的,它们更像语法功能的分工。
小结:2025 年开源 MoE 的竞争格局是「FFN 层共享 DeepSeek 范式,注意力层各自押注」——稀疏化的下半场比的是注意力侧的路线选择。
六、争议与代价:MoE 不是免费的午餐
**质量之争没有完全终结。**主流共识是「算力对齐时 MoE 占优」;但总参数对齐时证据有争议——每个专家只见到部分 token,权重更新稀疏,有分析认为 MoE 需要多一个数量级的总参数才能匹配同参数量的稠密模型。月之暗面的「Dense Training, Sparse Inference」论文给了一个机制解释:MoE 会过拟合到自身的稀疏路由模式(sparse overfitting)。反面证据同样存在, scaling law 研究也发现大模型规模下 MoE 在总参数对齐时仍能领先——争论仍在进行。
**微调容易过拟合。**ST-MoE 的实验:小数据集上稠密反超稀疏,大数据集稀疏才领先;稀疏模型微调偏好小批量加更大学习率,只更新非 MoE 参数的效果接近全参数微调、只更新 MoE 参数反而严重掉点。Hugging Face 对 MoE 的官方概括很直白:易过拟合、难部署、对硬件不友好。
部署的隐性账单。「激活 37B」听着便宜,但 671B 参数全部要驻留在显存或显存池里——单卡根本装不下,必须专家并行加多卡;路由引入打分、排序、token 搬运与 all-to-all 通信,这些开销在训练与推理时间里占比可观。Raschka 的概括是:激活 22B 的 MoE,延迟未必等于稠密 22B。MoE 省的是计算,花的是显存持有与系统复杂度——它天然是大规模服务商的技术,不是端侧技术。
小结:MoE 用系统复杂度换计算成本,用参数冗余换激活稀疏——算力账单变便宜的同时,显存与工程的账单变贵了;值不值,取决于你在什么规模上跑模型。
参考资料
- Switch Transformers: Simple and Efficient Sparsity(arXiv 2021-01) — top-1 路由、辅助损失公式与专家容量机制的一手出处。
- ST-MoE: Designing Stable and Transferable Sparse Expert Models(arXiv 2022-02) — router z-loss 与稀疏模型微调行为的系统研究。
- Mixtral of Experts(arXiv 2024-01) — Softmax(TopK) 路由与专家句法分化的观察。
- DeepSeek-V3 Technical Report(arXiv 2024-12) — 细粒度专家、共享专家、免辅助损失均衡、MTP 与节点限制路由的全部细节。
- Auxiliary-Loss-Free Load Balancing Strategy for MoE(arXiv 2024-08) — 偏置调节方法的原始论文。
- Kimi K2: Open Agentic Intelligence(arXiv 2025-07) — 1T/32B、384 专家与 sigmoid gates 的确认。
- Qwen3-Next 模型卡(Hugging Face 2025-09) — 512 专家超稀疏配置与 3:1 混合注意力布局。
- DeepEP(GitHub 2025-02) — DeepSeek 开源的专家并行 all-to-all 通信库。
读者留言
COMMENTS 暂无还没有留言,来说第一句?