广哥在硅谷 · 用思考抵达清晰,用行动靠近自由
ICLR 2017 · GOOGLE BRAIN

Outrageously Large Neural Networks
稀疏门控 MoE 让 LSTM 涨到 137B 参数

The Sparsely-Gated Mixture-of-Experts Layer · Curated Chinese Edition
Shazeer · Hinton · Dean · Le et al. 中文精校版 8 章 · 约 25 分钟阅读
📋 内容摘要

2017 年 1 月,Noam Shazeer、Azalia Mirhoseini、Krzysztof Maziarz、Andy Davis、Quoc Le、Geoffrey Hinton、Jeff Dean ——Google Brain 半个团队——把 1991 年 Jacobs / Jordan / Hinton 的 MoE 思想从故纸堆里翻出来。他们提出 Sparsely-Gated Mixture-of-Experts Layer——嵌入到堆叠 LSTM 之间——加上 Noisy Top-K Gating(噪声门控保证稀疏性 + 负载平衡),实现了"模型容量提升 1000 倍 + 计算只增加微量"。最终模型——65,536 个专家、137 billion 参数——在 1B Word 和 100B Word Google News 语料上大幅超过 LSTM SOTA。这是 MoE 从"小众思想"变成"大模型必备"的转折点——8 年后 GPT-4、Mixtral、Switch 都在用这套机制。

章节目录
  1. 引言 · 条件计算的承诺
    The promise of conditional computation
  2. 五大工程挑战
    Five performance challenges
  3. Noisy Top-K Gating · 核心创新
    Noisy top-k gating
  4. 收缩批次问题与并行解法
    The shrinking batch problem
  5. 负载平衡 · L_importance + L_load
    Load balancing losses
  6. 1B Word 实验 · 24% perplexity 下降
    1B Word benchmark
  7. 100B Word · 137B 参数极限
    100B Word & 137B params
  8. 影响 · 大模型时代的种子
    The seed for the LLM era
CHAPTER 01 · INTRODUCTION

引言 · 条件计算的承诺

The promise of conditional computation
📌 本节核心要点

2017 年 1 月,Google Brain 7 个人——包括 HintonJeff DeanQuoc LeNoam Shazeer(同年是 Transformer 一作)——一起发表了这篇论文。核心问题——神经网络的容量被参数数量限制,但"条件计算"(每个样本只激活网络一部分)理论上能大幅提升容量而不成比例增加计算。但实践中有"显著的算法和性能挑战"。这篇论文第一次完整解决了这些挑战——"模型容量增加超过 1000 倍,计算效率只有轻微损失"

Shazeer 2017 Conditional Computation 1000x Capacity

2017 年 1 月 23 日,Noam Shazeer(一作,同年也是 Attention is All You Need 的核心作者之一)、Azalia MirhoseiniKrzysztof MaziarzAndy DavisQuoc LeGeoffrey HintonJeff Dean ——Google Brain 7 个人,在 ICLR 2017 提交了这篇论文。

论文标题的两个词都非常有意思——

· "Outrageously"(离谱地) — Shazeer 风格的幽默标题——"离谱地大的神经网络"
· "Sparsely-Gated Mixture-of-Experts Layer" — 这是技术名字——"稀疏门控的混合专家层"

论文摘要开门见山——

神经网络吸收信息的容量受限于参数数量

条件计算——网络部分在每个样本基础上激活——
理论上被提议为大幅增加模型容量而不成比例增加计算的途径。

实践中——存在显著的算法和性能挑战

这项工作里我们解决了这些挑战
最终实现了条件计算的承诺——
在现代 GPU 集群上实现超过 1000 倍模型容量改进
只有轻微的计算效率损失

— SHAZEER ET AL., ICLR 2017

这是整篇论文的承诺——1000 倍容量增加 + 几乎没多花计算。这听起来不真——但实验数据证明了它。

核心新组件——Sparsely-Gated MoE Layer——由多达数千个前馈子网络组成。可训练的门控网络为每个样本稀疏地组合这些专家。

论文应用 MoE 到语言建模和机器翻译——这两个任务里模型容量对吸收训练语料里的大量知识至关重要。结果——137 billion 参数的 MoE 层夹在堆叠的 LSTM 之间——在公开语言建模和翻译基准上大幅超过 SOTA,同时计算成本更低

广哥在硅谷◆ ◆ ◆
CHAPTER 02 · CHALLENGES

五大工程挑战

Five performance challenges
📌 本节核心要点

2017 年之前的"条件计算"想法都没成功大规模化——Shazeer 团队归因为五大挑战——(1) GPU 算术快但分支慢——硬件不喜欢"if/else";(2) 大批量是高效的关键——但条件计算让"激活部分"批量变小;(3) 网络带宽是瓶颈——专家激活需要跨设备传;(4) 需要负载平衡损失——否则少数专家被滥用;(5) 模型容量对超大数据集最关键——小数据集证明不了 MoE 的价值。这篇论文"第一次"同时解决了这五个挑战。

论文指出——"尽管这些想法在理论上有前途,没有工作至今展示出模型容量、训练时间、模型质量上的巨大改进"。问题归因为五个挑战——

⚠️ 五大挑战

"在这项工作里,我们第一次解决了上述所有挑战,终于实现了条件计算的承诺。"

广哥在硅谷◆ ◆ ◆
CHAPTER 03 · GATING

Noisy Top-K Gating · 核心创新

Noisy Top-K Gating
📌 本节核心要点

2017 论文的核心算法创新就在门控网络。Jordan & Jacobs 1994 的"Softmax Gating" $G_\sigma(x) = \text{Softmax}(x \cdot W_g)$ 不稀疏。Shazeer 加了两个改进——稀疏性(softmax 前只保留 top-k logits,其他设为 $-\infty$)和噪声(加可训练的高斯噪声)。稀疏性节省计算——没被选的专家不需要算。噪声帮助负载平衡——避免门控网络陷在"总选少数几个专家"的局部最小。这两个修改让 MoE 可大规模实用化

Noisy Top-K Sparsity Load Balance

MoE 层由 $n$ 个"专家网络" $E_1, \ldots, E_n$ 和一个"门控网络" $G$ 组成。$G$ 的输出是一个稀疏 $n$ 维向量。MoE 模块对输入 $x$ 的输出是——

$$y = \sum_{i=1}^n G(x)_i E_i(x) \quad (1)$$

基于 $G(x)$ 的稀疏性节省计算——在 $G(x)_i = 0$ 的地方,我们不需要算 $E_i(x)$。"我们的实验里有多达数千个专家,但每个样本只需要评估其中几个"。

怎么生成稀疏的 $G(x)$?Shazeer 提出 Noisy Top-K Gating——

从 Jordan & Jacobs 1994 的简单 Softmax 门控开始——

$$G_\sigma(x) = \text{Softmax}(x \cdot W_g) \quad (2)$$

不稀疏。Shazeer 加两个东西——

第一——稀疏性。在做 softmax 之前,只保留 top-k logits,其余设为 $-\infty$(这让对应的门控值变成 0)。

第二——噪声。加可调高斯噪声,由另一个可训练权重矩阵 $W_{\text{noise}}$ 控制。"噪声项帮助负载平衡"。

$$G(x) = \text{Softmax}(\text{KeepTopK}(H(x), k)) \quad (3)$$ $$H(x)_i = (x \cdot W_g)_i + \text{StandardNormal}() \cdot \text{Softplus}((x \cdot W_{\text{noise}})_i) \quad (4)$$ $$\text{KeepTopK}(v, k)_i = \begin{cases} v_i & \text{if } v_i \text{ is in top-k elements} \\ -\infty & \text{otherwise} \end{cases} \quad (5)$$

这个 gating 看起来吓人,做的事其实很简单——

· 算每个专家的logits(线性变换)
· 加可学习的高斯噪声
· 只留 top-k 个最大的,其他变 $-\infty$
· softmax 归一化

结果——每个样本只激活 $k$ 个专家。Shazeer 论文里通常 $k = 4$(每个样本激活 4 个专家)。后来 Switch 简化到 $k = 1$,Mixtral 用 $k = 2$。

门控网络用普通反向传播训练——和模型其他部分一起。如果 $k > 1$,top-k 专家的 gate values 对门控权重有非零导数

广哥在硅谷◆ ◆ ◆
CHAPTER 04 · BATCHING

收缩批次问题与并行解法

The shrinking batch problem
📌 本节核心要点

"收缩批次问题"——如果门控网络从 $n$ 个专家里选 $k$ 个,那一批 $b$ 个样本里每个专家平均只收到 $kb/n \ll b$ 个样本。专家越多,每个专家的批越小——GPU 效率暴跌。解法——把原始批量做得尽可能大。具体技巧——数据并行 + 模型并行的混合——所有数据并行副本共享一份专家。$d$ 设备时——每个专家收到的批是$kbd/n$——比单机大 $d$ 倍。"利用卷积性"——所有时间步的输入一起作为一个大批传给 MoE。

"收缩批次问题"——简单说——一批 $b$ 个样本,门控选 $k$ 个专家——每个专家平均只看到 $kb/n$ 个样本。专家越多,每个专家的批就越小——GPU 利用率暴跌

例如——$n = 1000$ 个专家,$b = 256$ 批量,$k = 4$——每个专家平均只看到 1 个样本。基本上等于没批量

Shazeer 团队的解法——

⚙️ 数据并行 + 模型并行混合

传统分布式训练——模型在多设备上复制,每个设备异步处理不同批量数据,参数通过 parameter server 同步。

Shazeer 的改进——这些不同批次同步运行,可以为 MoE 层组合在一起。普通层按数据并行方案分布,但 MoE 层只保留每个专家的一份共享副本。每个专家收到来自所有数据并行输入批次的相关样本的组合批次

同一组设备同时作为——数据并行副本(对普通层和门控)和模型并行分片(每个 host 一部分专家)。

结果——$d$ 设备,每设备批量 $b$——每个专家收到的批量是 $kbd/n$——比单机大 $d$ 倍。"专家批量的 $d$ 倍改进"。

论文还提了"利用卷积性"——在语言模型里,同一个 MoE 被应用到上一层的每个时间步。如果等上一层做完,可以把所有时间步的输入一起作为一个大批量传给 MoE——增加批量到"unrolled 时间步数"倍。

"我们的目标是用一万亿词的语料训练一万亿参数模型"——他们写于 2017 年。这个目标在 2021 年的 Switch Transformer 真的实现了。

广哥在硅谷◆ ◆ ◆
CHAPTER 05 · LOAD BALANCING

负载平衡 · L_importance + L_load

Balancing expert utilization
📌 本节核心要点

"我们观察到门控网络倾向收敛到一种状态——它总是给同样几个专家产出大权重"。这种不平衡自我强化——受偏爱的专家被训练得更快,于是被选得更多。Shazeer 团队的软约束方法——定义专家的"importance"为批量内门控值之和,加一个 $L_{\text{importance}}$ 损失 = importance 的变异系数(CV)的平方 × 缩放因子。这鼓励所有专家importance 相等第二个损失 $L_{\text{load}}$——保证负载(每个专家收到的样本数)也平衡,不只是 importance。

这是 MoE 系统最微妙的工程细节——负载平衡

"我们观察到门控网络倾向收敛到一种状态——它总是给同样几个专家产出大权重"。

这种不平衡是自我强化的——

· 一开始随机偏向几个专家
· 这几个专家被训练得快,所以变强
· 门控网络更倾向选它们
· 它们训练得更快⋯⋯恶性循环

结果——其他专家从来没被锻炼。MoE 退化成"只用几个专家的小模型"——失去了 MoE 的意义。

Shazeer 团队提出软约束法。定义专家相对于一个训练批量的"importance"批量内该专家门控值之和——

$$\text{Importance}(X) = \sum_{x \in X} G(x) \quad (6)$$

定义额外损失 $L_{\text{importance}}$——加到总损失里。它等于 importance 集合的变异系数(coefficient of variation)的平方乘以手调缩放因子 $w_{\text{importance}}$——

$$L_{\text{importance}}(X) = w_{\text{importance}} \cdot \text{CV}(\text{Importance}(X))^2 \quad (7)$$

"这个额外损失鼓励所有专家有相等的 importance"。

但 importance 相等不代表实际负载相等——一个专家可能用大权重收几个样本,另一个用小权重收很多样本。Shazeer 团队引入第二个损失 $L_{\text{load}}$——保证负载平衡。具体定义在 Appendix A 里。

这两个损失加上 noisy gating 一起——保证了所有专家被充分使用,让 MoE 真正能扩展到上千专家

广哥在硅谷◆ ◆ ◆
CHAPTER 06 · 1B WORD

1B Word 实验 · 24% perplexity 下降

1 Billion Word benchmark
📌 本节核心要点

论文先在 1 Billion Word 语料上做语言建模——这是当时最大公开语言建模 benchmark,由 Chelba 2013 提出——8.29 亿词、793,471 词汇。模型——两层堆叠 LSTM 之间嵌入 MoE 层"低计算高容量"实验——所有模型相同计算预算(~8M ops/timestep),变化的是专家数——4 → 32 → 256(扁平 MoE),256 → 1024 → 4096(分层 MoE)。最大模型——4096 个专家 → test perplexity 比同等计算预算 baseline 低 24%

1B Word 4096 Experts 24% Drop

Shazeer 团队在两个公开 benchmark 上做实验。第一个——1 Billion Word Language Modeling Benchmark——Chelba 2013 提出。这个数据集——8.29 亿词、793,471 词汇——是当时最大的公开语言建模基准。

之前的 SOTA 是 Jozefowicz 2016 的 LSTM 模型——参数从 200 万到 1.51 亿不等。质量随参数增加而提升——但计算成本也快速增加。

Shazeer 团队的模型——两层堆叠 LSTM 之间嵌入 MoE 层。"低计算高容量"实验——所有模型大约相同计算预算(~8M ops/timestep),变化的是专家数——

· 扁平 MoE——4 个、32 个、256 个专家
· 分层 MoE——256 个、1024 个、4096 个专家

每个专家约 100 万参数。每个 MoE 层,每个输入激活 4 个专家

结果——4 个 always-active 专家的模型表现和 baseline 相似(不意外,因为容量和计算几乎一样)。但最大模型——4096 个专家——test perplexity 比同等计算预算的 baseline 低 24%

"高计算高容量"实验——再训两个 MoE 模型,容量同样高(4 billion 参数),但计算预算更高。结果——

28.0
High-Budget MoE
test perplexity (100 epochs)
30.6
Best Published Result
(Jozefowicz 2016 LSTM)
4 B
MoE 模型总参数
vs 151M baseline
6%
最快 MoE 模型的计算
vs 最佳 baseline

"即使最快的 MoE 模型也击败了最佳已发表结果(在控制训练 epoch 数量时),尽管只需要 6% 的计算"。

这是 MoE 在大规模语言建模上第一次显示出"容量增大十倍 + 计算几乎不变 + 质量大幅提升"——这就是条件计算的承诺第一次被实现

广哥在硅谷◆ ◆ ◆
CHAPTER 07 · 100B WORD

100B Word · 137B 参数极限

100B Word Google News & 137B params
📌 本节核心要点

团队接着在 Google 内部 1000 亿词新闻语料上测试——这是 1B Word 的 100 倍大。猜想——更大的训练集应该让更高容量产生显著质量改进。结果完全符合预期——专家数32, 256, 1024, 4096, 16384, 65536, 131072——对应到 MoE 层 137 billion 参数。在完整 1000 亿词训练后,测试 perplexity 持续改善到 65,536 个专家(68 billion 参数)比同等计算 baseline 低 39%65,536 个专家时(99.994% 层稀疏度)——计算效率仍然 0.72 TFLOPS/GPU

100B Words 137B Params 99.994% Sparse

"在 1 billion 词语料上,添加更多容量似乎在 MoE 层参数超过 1 billion 后产生收益递减"。团队猜想——更大的训练集应该让更高容量产生显著质量改进

他们用 Google 内部新闻语料——总共大约 1000 亿词——做了类似实验。同样约 8M ops/timestep——但专家数32, 256, 1024, 4096, 16384, 65536, 131072。最高对应——137 billion 参数

结果——训练完整 1000 亿词后,test perplexity 显著改善到 65,536 个专家(68 billion 参数)比同等计算 baseline 低 39%。但131,072 个专家时降级——"可能由于稀疏性过度"。

更让人惊讶的是计算效率——

即使是 65,536 个专家的模型——
对应层稀疏度 99.994%——

计算效率依然停留在合理的 0.72 TFLOPS/GPU

— SHAZEER ET AL., 2017

"99.994% 稀疏度" 这个数字让我读完后久久不能忘。意思是——每次只有 0.006% 的专家被用到99.994% 的参数在每次推理时是"睡着"的——但整个模型仍然学会了世界级的语言建模

这是MoE 的真正魔力——把"模型总知识量"和"每次推理算力"解耦。你可以有无限大的容量,但每次推理只激活其中一小块

论文还把 MoE 应用到机器翻译(单语言对和多语言对)——结果同样显著超过当时的 GNMT SOTA。

广哥在硅谷◆ ◆ ◆
CHAPTER 08 · LEGACY

影响 · 大模型时代的种子

The seed for the LLM era
📌 本节核心要点

2017 年这篇论文正好赶上 Transformer——同一个 Shazeer 同年是 Attention is All You Need 的核心作者之一。但 MoE 当时主要在 LSTM 里用真正的爆发在 2020 年后——Google 的 GShard(2020)把 MoE 引入 Transformer,Switch Transformer(2021)简化到 top-1 + 万亿参数,GLaM(2021)做 1.2T MoE,Mixtral 8x7B(2024)成为第一个流行的开源 MoE LLMGPT-4被广泛认为是 MoE。这篇 2017 论文奠定了所有人都在用的工程范式——稀疏门控、负载平衡、并行架构

GShard 2020 Switch 2021 GPT-4 (rumored MoE) Mixtral 2024

2017 年 1 月这篇论文发出来时,正好是深度学习历史上最神奇的几个月——

· 2017 年 1 月——这篇 Sparsely-Gated MoE
· 2017 年 6 月——Vaswani 等人的 Transformer("Attention is All You Need")——同一个 Noam Shazeer 是核心作者之一

但 MoE 当时主要在 LSTM 里用——而 Transformer 没有它也已经在占领 NLP。所以 MoE 从 2017 到 2020 又"沉寂"了 3 年

真正的爆发是2020 年——Google 的 GShard(Lepikhin 等)把 MoE 第一次引入 Transformer。然后——

· 2021 Switch Transformer(Fedus, Zoph, Shazeer)——简化到 top-1 路由,万亿参数
· 2021 GLaM(Du 等)——1.2 trillion MoE,比 GPT-3 强还更便宜
· 2022 ST-MoE——稳定 MoE 训练的更多技巧
· 2023 GPT-4——广泛认为是 MoE(OpenAI 没明确说但大量泄露表明是)
· 2024 Mixtral 8x7B——第一个流行的开源 MoE LLM,47B 总参数 / 13B 激活
· 2024 DeepSeek MoE / DBRX / Grok-1——其他开源 MoE 大量涌现

每一个都建立在这篇 2017 论文奠定的工程范式上——稀疏门控、负载平衡、专家+数据并行架构

更让我感慨的是——这篇论文的一作 Noam Shazeer 是同年 Transformer 的核心作者。一个人在同一年共同发明了两个深度学习历史上最重要的架构。后来他离开 Google 创办了 Character.AI,2024 年被 Google 以 27 亿美元收购,Shazeer 重新回到 Google 做 Gemini

1991 年的 Jacobs/Jordan/Hinton 写下的骨架——经过 26 年——在 2017 年被这位天才工程师第一次完全实现这就是好想法的力量——它可以等