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 与注意力机制】58|后 Transformer 时代:架构会消失还是会进化
后 Transformer 时代不太可能是某个新架构一夜之间消灭 Transformer,更可能是 attention、SSM、MoE、检索、外部记忆、工具调用和多模态模块逐渐混合。本文回顾本系列主线,解释为什么 Transformer 很难突然消失,也为什么它不可能原样解决所有问题。
【Transformer 与注意力机制】59|推理退化:为什么大模型会输出乱码、死循环和无意义文本
大模型推理时偶尔会突然陷入死循环、输出乱码或连续无意义数字,这不是随机 bug,而是注意力机制、Causal Mask、解码策略和数值精度在自回归生成中共同作用的结果。本文从 QKV 计算坍塌出发,解释 Attention Sink、Softmax 马太效应、Causal Mask 的退路切断、FP16 溢出路径和 KV Cache 污染,并给出从架构到运行时的多层防线。
【Transformer 与注意力机制】系列总览
从《Attention Is All You Need》出发把 Transformer 注意力机制、Q/K/V、多头注意力、位置编码、Causal Mask、Softmax、FFN、训练范式、模型变体、推理工程、可解释性、未来架构以及推理退化防御串成 59 篇深度博客。