Dense Transformer 有一个直接限制:参数越多,每个 token 通常要经过的计算也越多。MoE(Mixture of Experts)试图拆开这件事。模型可以有很多专家,总参数量很大;但每个 token 只路由到少数几个专家,因此每 token 计算量不必和总参数量同步增长。
这就是“稀疏激活”的含义。稀疏 attention 少算 token 之间的边,MoE 少激活参数路径。二者都在问同一个问题:能不能让模型容量变大,但每次计算只用其中一部分?
本篇能让你学会三件事:
- MoE 在 Transformer 中通常如何替换 FFN;
- router、expert、top-k routing、容量因子分别在做什么;
- 为什么 MoE 的难点不只是模型结构,还有负载均衡和分布式通信。
一、Dense 模型的绑定问题
在普通 Transformer 中,每个 token 都通过同一套 attention 和 FFN 参数。参数量越大,通常每个 token 的计算量也越大。扩大模型容量和控制推理成本之间存在紧张关系。
MoE 的想法是准备多个 FFN 专家。对每个 token,router 根据隐藏状态选择一个或几个专家执行。没有被选中的专家不参与当前 token 的计算。这样模型总参数量可以很大,但单 token 只走少数路径。
这不是简单 ensemble。Ensemble 通常多个模型都跑一遍再平均;MoE 是在一个模型内部做条件计算,token 级别动态选择专家。
二、为什么常替换 FFN
Transformer 的 FFN 层占据大量参数,并且对每个 token 独立执行。把 FFN 换成多个专家很自然:attention 负责 token 间通信,MoE-FFN 负责 token 内的非线性变换。
如果替换 attention,路由和通信会更复杂,因为 attention 本来就涉及 token 间关系。替换 FFN 则边界清楚:每个 token 被送到某个专家,专家输出再回到原位置。
所以许多 MoE Transformer 的基本形式是:attention 仍然 dense,部分或全部 FFN 层变成 MoE 层。
三、router 与 top-k routing
router 是一个小网络,输入 token 的隐藏状态,输出各专家的分数。top-k routing 选择分数最高的 k 个专家。Switch Transformer 使用 top-1 routing,把每个 token 送到一个专家,简化计算和通信。
top-1 简单高效,但更容易负载不均;top-2 或更多专家能增加冗余和表达能力,但计算与通信更贵。k 的选择就是质量、稳定和效率之间的权衡。
router 本身也要训练。它不是固定规则,而是和模型一起学习“什么 token 应该交给什么专家”。这带来能力,也带来不稳定。
四、负载均衡和容量因子
如果 router 总把 token 送到少数专家,热门专家会过载,其他专家闲置。这样既浪费参数,也会造成训练不稳定。MoE 训练通常需要 auxiliary loss 鼓励负载均衡。
容量因子(capacity factor)限制每个专家最多接收多少 token。超出容量的 token 可能被丢弃、跳过或走备用路径。容量太小,信息损失;容量太大,显存和通信成本上升。
这说明 MoE 不是“参数越多越好”。真正困难的是让 token 分配合理,让专家学到差异化能力,又不让系统被少数热点专家拖垮。
五、从 GShard 到 Switch Transformer、Mixtral
GShard 展示了大规模 MoE 在机器翻译等任务上的可行性。Switch Transformer 进一步简化路由,用 top-1 expert 让训练和扩展更容易。后来的 Mixtral 等开放模型让 MoE 在 LLM 社区更直观地进入公众视野。
这些工作共同说明,MoE 是扩大模型容量的重要路径。它让“总参数量”和“每 token 激活参数量”不再完全绑定。
但公开模型的成功不代表 MoE 简单。路由、并行、通信、专家分布、训练稳定和推理部署都很复杂。
六、MoE 的代价
MoE 的第一类代价是通信。不同 token 被送到不同专家,在分布式训练中往往需要 all-to-all 通信。通信一旦成为瓶颈,理论计算优势会被抵消。
第二类代价是训练稳定性。router 早期如果偏向某些专家,专家会强者恒强;如果路由抖动太大,专家又难以形成稳定专长。
第三类代价是部署复杂度。Dense 模型只要加载一套参数路径;MoE 需要处理专家分布、路由、batch 内 token 重排和不同专家负载。
七、关键概念回顾
- MoE:Mixture of Experts,条件激活少数专家的模型结构。
- router:决定 token 送往哪些专家的小网络。
- expert:通常是 FFN 子网络,处理被路由来的 token。
- top-k routing:选择分数最高的 k 个专家。
- 负载均衡:避免所有 token 挤向少数专家。
- 容量因子:限制每个专家可接收 token 数。
八、常见误解
8.1 “MoE 推理免费”
不免费。虽然每个 token 激活参数少,但路由、通信、专家调度和显存占用仍然昂贵。
8.2 “MoE 就是 ensemble”
MoE 是 token 级条件计算,不是把多个完整模型结果平均。
8.3 “专家会自动学成领域专家”
不一定。专家分化取决于训练数据、路由损失、容量和优化过程,不能简单按人类领域命名。
九、下一步
MoE 说明 Transformer 可以通过稀疏激活扩大容量。下一篇转向视觉:ViT 如何把图像切成 patch,让图片也变成 token 序列。
十、参考文献
- Shazeer, N. et al. “Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer.” ICLR 2017.
- Lepikhin, D. et al. “GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding.” ICLR 2021.
- Fedus, W. et al. “Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity.” JMLR 2022.
- Jiang, A. Q. et al. “Mixtral of Experts.” arXiv:2401.04088, 2024.
← 上一篇:43|稀疏与局部注意力 | 下一篇:45|ViT →
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Transformer 与注意力机制】26|前馈网络:那个看似平平无奇的两层 MLP,其实是「记忆」所在
把 Transformer block 里那个看起来最不起眼的两层 MLP 真正讲清楚——4 倍扩张比的来历、逐位置而不是跨位置的设计、Geva 等人 2021 年提出的「键值记忆」视角、SwiGLU/GLU/GeGLU 的现代变体、参数量分布、可解释性研究、量化时的瓶颈,以及它和 MoE 的关系。
【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
【Transformer 与注意力机制】39|T5:把所有 NLP 任务统一成 Text-to-Text
T5 的核心不是又发明了一种 Transformer,而是把翻译、摘要、分类、问答都改写成“输入文本到输出文本”的统一格式。本文解释 T5 为什么选择 Encoder-Decoder 架构,span corruption 和 BERT/GPT 的目标有什么差异,C4 和系统化消融实验为什么让 T5 成为迁移学习路线的重要基准。
【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only
Transformer 不是只有一种形态。Encoder-only、Encoder-Decoder、Decoder-only 分别对应理解、条件生成和自回归生成三类信息流。本文横向比较 BERT、T5、GPT 代表的三条路线,解释为什么通用大模型时代 Decoder-only 占主流,以及为什么这不意味着另外两条路线失去价值。