← 总目录 / 板块一 · 模型的范式变迁
板块一 · 模型的范式变迁

第8篇 · 稀疏门控 MoE 层

1370 亿参数、每个样本只唤醒几十亿——条件计算从"理论承诺"变成"工程现实"的那一夜
Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer · Shazeer, Mirhoseini et al., Google Brain · ICLR 2017 · 原文

本页基于 arXiv HTML 全文(已直接核验)撰写;所有数字均出自论文正文与附录,出处小节随文标注。

一、全局大图

1.1 摘要拆解对照表

摘要短语对应论文章节本页章节
"容量受参数量限制;条件计算可在不按比例增加计算的前提下大幅增加容量"§1.1二.1
"算法与性能层面的重大挑战"§1.1、§3、§4二.3、二.4
"容量提升超过 1000 倍,计算效率仅小幅损失"§1.2、§5.2(Table 8)二.5
"稀疏门控 MoE 层:多达数千个前馈子网络 + 可训练门控"§2二.2
"卷积式地插在堆叠 LSTM 层之间"§1.2、§3.1、附录C二.2、二.3
"语言建模与机器翻译上以更低计算成本显著超越 SOTA"§5.1–§5.4二.5

1.2 知识依赖图

条件计算的四大挑战(GPU 分支慢 / 批变小 / 带宽瓶颈 / 门控训练难)
  ↓ 全部必须解决,缺一则全盘失败
Noisy Top-K 门控 ←—— 枢纽节点
  ↓         ↘
负载均衡损失(L_importance+L_load) 混合数据/模型并行 + 卷积式批合并
  ↓
1B word 困惑度实验 → 100B 词料 → 137B 参数 → WMT'14 翻译

主干线:门控公式 → 负载均衡 → 系统并行方案 → 实验。枢纽节点是 Noisy Top-K Gating:它同时承担省算力(稀疏)、可反传(top-k 有梯度)、助均衡(噪声是 L_load 可导性的前提)三重角色——读懂它,§3、§4 的所有设计都顺理成章。

1.3 贡献与证据强度预评

#声称的贡献预评证据强度理由
1首次让条件计算兑现大规模收益(容量 >1000×,效率损失小)强实验支撑Table 7/8 多档专家数扫描 + 两个独立任务域
2Noisy Top-K 门控可用纯反传端到端训练强实验支撑全部主结果均由该机制训出;附录 A 消融了噪声的作用
3L_importance 与 L_load 对均衡与质量必要仅有消融Table 6 单一架构(MoE-256)上的权重扫描
4专家自发学出语法/语义特化定性展示附录 E Table 9 只展示了少数专家的样例上下文
5"加更多硬件就能训万亿参数模型"只是主张§3.1 明说"截至写作尚未做到"

1.4 推荐阅读路线

必读主线:二.2(门控公式手术)→ 二.4(两个辅助损失)→ 二.5(Table 7/8 的数字)。跳过二.4 会无法回答"为什么门控不塌缩到少数专家";跳过二.3 则看不懂为什么这需要 16–128 张 GPU。
可跳读支线:二.6(翻译实验细节),只需记住 BLEU 结论即可回头补。附录 F 的 strictly-balanced gating 属工程补丁,主线之外。

二、逐章精读

2.1 §1 动机:条件计算的四堵墙

来源:论文 §1.1(第 1–2 页)

失效模式先行。稠密模型想变强只有两条路同时走:加参数、加数据,而训练成本约按二者乘积近似二次膨胀(论文原话:roughly quadratic blow-up)。条件计算的想法——每个样本只激活网络一部分——理论上能解开这个死结,但此前二十年的尝试全部失败或收效甚微。论文把失败原因归为四条墙【§1.1 列表】:
分支代价:GPU 擅长算术、极不擅长分支判断,逐神经元开关得不偿失,只能整块开关;
批缩小问题:大 batch 是吞吐的前提,而条件激活恰好稀释每个子网络的 batch;
带宽瓶颈:集群的算力/互联带宽比可达数千比一,embedding 这类天然的条件计算正是被带宽卡死的先例;
训练信号:稀疏化往往需要额外的损失项才能维持期望的稀疏度与均衡。
另有一条隐性前提:容量红利只在超大数据集上才兑现——旧文献都在 ≤60 万张图的小数据上试,注定测不出差异。【解读者补充】这条其实是第五堵墙,也是最容易被忽视的一堵。

一句话蒸馏本节:条件计算不是新想法,新的是四堵墙被同时推倒这件事本身。

2.2 §2 层结构与 Noisy Top-K 门控:公式手术

来源:论文 §2、§2.1(公式 1–5)

学习目标:学完你应能默写公式 (1)–(5),说出 k 取多少、噪声从哪来、为什么 top-k 之后还能反传。

y = Σi=1..n G(x)i · Ei(x)  (1)
符号它是什么直觉
x输入向量(本文中为 LSTM 隐状态,512 维)一个 token 位置的表征
Ei第 i 个专家:同构前馈网(一层 ReLU 隐层)一位专科医生
G(x)门控输出:稀疏 n 维向量,多数分量为 0分诊台:只挂两三个号
y加权和输出会诊意见加权合成

张量形状流【解读者补充】:x∈R^512 → 每个专家 512→1024→512(两层权重各约 52 万参数,共约 100 万/专家,附录 C.1 原文给出 [512×1024]+[1024×512]=1M);门控矩阵 W_g 为 512×n。G(x)i=0 时 E_i 完全不必计算——这就是省算力的来源。注意 (1) 是逐位置施加的:语言模型在每个时间步各自做一次门控,同一序列不同位置可以选不同的专家组合("convolutionally"的含义)。

朴素 softmax 门控(公式 2)是稠密的,n 大时算不起。论文加入两件武器得到 Noisy Top-K:

H(x)i = (x·W_g)i + StandardNormal() · Softplus((x·W_noise)i)  (4)
G(x) = Softmax(KeepTopK(H(x), k)),KeepTopK 把非 top-k 位置置 −∞  (3)(5)
符号它是什么直觉
x·W_g确定性打分分诊台的第一印象
W_noise可训练噪声幅度矩阵每个专家配一个"抖动旋钮",大小可学
Softpluslog(1+e^t),保证幅度非负噪声标准差恒 ≥0
k保留的专家数(平铺 MoE 用 k=4,层级每级 k=2,合计仍 4)每次会诊请几位医生

三个关键点:① 置 −∞ 再 softmax 等价于概率精确为 0,梯度也精确为 0;② k≥1 时保留下来的位置对 W_g 有非零梯度,所以整个门控可以用普通反传训练,不需要 REINFORCE(论文明确与 Bengio et al. 2015 的布尔门+REINFORCE 路线划清界限);③ 噪声不是玄学——它是 §4 里 Load 估计器可导的前提,见 2.4。

常见误读:
① "top-k 造成的不连续会破坏训练"——论文自己承认这在理论上吓人(theoretically scary discontinuities),但实验中从未成为问题【§2.1 原话】;
② "MoE 是集成学习"——错。集成平均所有成员且推理成本翻倍;MoE 每个样本只走一小部分参数,且专家间通过门控形成分工而非投票。
③ "专家数 n 可以无限加大而不付出代价"——不行,见下一节的批缩小问题。

2.3 §3 系统挑战:批缩小与带宽

来源:论文 §3.1–§3.2

手算验证(批缩小问题):n 个专家、每个样本选 k 个,batch 为 b 时单个专家平均拿到 kb/n 个样本。取论文配置 n=4096(层级 MoE)、k 合计 4、单卡 batch 若只有 b=32:32×4/4096 = 0.031 个样本/专家——绝大多数专家在一个 batch 内颗粒无收,GPU 利用率趋近于零。【解读者补充的具体数字代入】论文的解法有三层:
混合并行:常规层走数据并行(d 台设备各处理 b 个样本),但专家只保留一份共享副本(模型并行);同步执行使 d 个数据并行的 batch 在 MoE 层汇合,专家实际拿到 kbd/n ≈ d 倍改善【§3.1】。
卷积式批合并:等上一层全部时间步算完,把所有时间步拼成一个大 batch 一次性过 MoE——batch 再乘以展开步数【§3.1】。
带宽账:通信主体是专家的输入/输出向量;单隐层专家的"计算量/IO 比"恰等于隐层宽度(两层各 input_size×hidden_size 与 hidden_size×output_size 次乘加,除以进出向量长度)【§3.2】。所以想要算得划算,就把隐层开大——1024 或 2048 的选择由此而来。
工程账单:混合并行缓解了算力利用率压力,新增了同步屏障(最慢设备拖累全局)和显存压力(每设备要装下自己那份专家);这笔债在 §5.2 的 64/128 卡实验里靠"专家隐层激活不存、反传时重算 + Adam 二阶矩分解存储"偿还【附录 D,解读者整理】。

2.4 §4 负载均衡:重要性损失与负载损失

来源:论文 §4、附录 A(公式 6–11,Table 6)

失效模式先行。门控有正反馈自毁倾向:早期偶然偏爱的专家被训练得更强→更被偏爱→更强……最终塌缩到少数专家,其余成死参数。Eigen et al. 2013 用硬约束躲开局,本文用软约束正面解决。

Importance(X) = Σx∈X G(x);L_importance = w_importance · CV(Importance(X))²  (6)(7)

CV 即变异系数(标准差/均值)。Importance 只管"门控权重的总量均衡",管不住"样本个数均衡"——一个专家可能拿少量大权重样本、另一个拿海量小权重样本,分布式硬件照样被撑爆。于是定义 Load(X):借助噪声项,P(x,i)=Φ((x·W_g)_i − kth_excluding(H(x),k,i)) / Softplus((x·W_noise)_i) 是"重抽一次噪声时专家 i 被选中"的概率(Φ 为标准正态 CDF,公式 9),Load(X)i=Σ_x P(x,i),再同样惩罚 CV²【附录 A】。噪声在此刻显出真正用途:没有随机噪声,"是否被选中"是不可导的阶跃;有了噪声,选中概率变成了 Φ 的光滑函数,梯度得以流入门控

数字对账(Table 6):不加任何均衡损失时测试困惑度 39.8、max/mean load 高达 17.80(最忙专家承载均值 17.8 倍的负载);加上 w_importance=w_load=0.1 后困惑度 35.6、max/mean 降到 1.47;两者都用 1.0 时 35.7、1.07。注意一个反直觉事实:各种非零权重组合的质量几乎一样(35.6–35.7),但没有任何一项损失时质量崩到 39.8——说明这两个损失的贡献主要是"救活训练",而不是"锦上添花"。正式实验统一用 w_importance=w_load=0.1(LM,附录 C.1)或 0.01(MT,附录 E)。【解读者整理】

2.5 §5 实验:三个数字里程碑

来源:论文 §5.1–§5.4,Table 1–5、7、8

里程碑一:同算力下容量碾压(1B word 基准,§5.1)

固定约 8M ops/timestep(不含 softmax),扫专家数:4/32/256 平铺,256/1024/4096 层级,每专家约 100 万参数,每样本恰激活 4 位专家。结果 Table 7:MoE-4 得 45.0(与稠密基线持平,意料之中),MoE-4096-h 达 34.1——困惑度比同算力基线低 24%【§5.1 原文】。对照当时最优已发表结果(Jozefowicz et al. 2016 的 2×LSTM-8192-1024,34.7):最快的 4B 参数 MoE 模型(28.0)只用其约 6% 的计算就实现超越【Table 1】。

里程碑二:1370 亿参数(100B 词 Google News 语料,§5.2)

同样的 8M ops/timestep 预算,专家数一路加到 131072(层级),MoE 层参数达 1375.78 亿(Table 8:137,577.6M)。100B 词训练后:65536 专家(687.91 亿参数)最佳,困惑度比同算力稠密基线低 39%;131072 专家反而退化(29.2 vs 28.9),论文归因于过度稀疏【§5.2】。即使 99.994% 的层稀疏度,效率仍有 0.72 TFLOPS/GPU(对比 K40 理论峰值 4.29)。

里程碑三:机器翻译(§5.3–§5.4)

模型WMT'14 En→Fr BLEUWMT'14 En→De BLEUops/timestep总参数
MoE(2048 专家)40.56(长训版)26.0385M8.7B
GNMT(Wu et al. 2016)39.2224.91278M214M
GNMT+RL39.9224.66278M214M

多语种实验更点题:单一多语 MoE 模型(8.7B 参数,12 天/64 K40)对多语 GNMT(278M,21 天/96 K20),dev 困惑度低 19%,12 个语言对中 11 个 BLEU 更高(最高 +5.84),甚至 8 个语言对超过单语专用 GNMT;唯一失败是 En→Ko(−1.79),作者归因于稀有语对过采样导致的严重过训练【§5.4,Table 5】。这正是 MoE 叙事里最动人的一幕:容量换来了跨语言的参数复用

数字对账:① 专家参数一致性:单语 MT 专家 [512×2048]+[2048×512]=2M【附录 E】,2048 专家 ×2 层(编码器+解码器各一)×2M = 8.2B ≈ 论文的"约 8B/8.7B 总参数",自洽;② 100B 语料的层级结构:65536 = 一级分支×二级分支的组合(如 256×256),Table 8 给出 68791.0M = 65536×~1.05M,自洽;③ "39% lower than baseline":baseline 54.5 → 68B 模型 .1 epoch 栏 38.2?核对 Table 8 的 1 epoch 栏:4×LSTM-512 为 47.0,MoE-65536-h 为 28.9,降幅 (47.0−28.9)/47.0 = 38.5% ≈ 39%,自洽。

直觉与类比:MoE 像大型医院的分诊系统——病人(token)经分诊台(门控)挂号,只见两三位专科医生(专家),医院总雇员数(参数)再多,单个病人的等待成本不变。类比在哪里失效:医院的医生是预先分配好科室的,而这里的"专科"完全由梯度涌现,事先无人知道第 381 号专家擅长什么(附录 E 显示有的专家对应"动词短语表重要/领导地位的 a"这种诡异语法语义模式);且分诊台自身也在学习中,可能出现 2.4 描述的塌缩——医院不会,因为医院有人事制度,这里只有两个 CV² 损失充当人事制度。

2.6 附录拾遗与主张甄别

来源:附录 B、F、E

层级 MoE(附录 B):一级门控选组、二级门控组内选人,把分支因子从 n 降到 √n 量级,n 上万时的必需品。Strictly-balanced gating(附录 F):因当时基础设施要求每个专家收到严格等大的 batch,改用"按 batch 维度给每个专家保 m=k|X|/n 个最高分样本"的掩码 + 推理期可学习的阈值 T 替代——这是纯粹的工程妥协,论文也注明相关基础设施问题"事后已修复"。
主张 vs 事实:"专家高度特化"定性支持(仅 Table 9 少数样例);"万亿参数可行"明示未验证的主张(§3.1 原话承认尚未 scale 到那一步);"容量提升 >1000× 且效率损失小"实验支持:137B/85M ops 的 MT 模型 vs 214M 参数 GNMT,容量比 ~400×?——注意摘要的 1000× 指 LM 任务中 MoE 层相对稠密层的参数倍率(如 Table 8 中 137.7B vs 同算力稠密模型的 ~10M 级),口径不同勿混用。【解读者辨析】

一句话记住本篇:Noisy Top-K 门控 + 两个 CV² 辅助损失 + 数据/模型混合并行,三者合体让"千倍容量、近常数算力"从 PPT 走进了训练日志。

三、批判性阅读

3.1 benchmark 到底测什么、比较公平吗

1B word 基准测的是含 softmax 的词级语言建模困惑度,softmax 层用重要性采样训练【附录 C.1】——这意味着困惑度数字建立在采样估计之上,与全 softmax 的可比性存在折扣(论文沿用 Jozefowicz et al. 的协议,属于"圈内可比")。翻译比较的对象 GNMT 是 9+8 层的大模型,而 MoE 版砍到 3+2 层再插 MoE——这是同实验室自家新旧对比,对手 DeepAtt、ConvS2S 等外部 SOTA 只列数字、并未在同一代码库内调参,配置不对称的可能性无法排除。

3.2 第二坐标轴

论文诚实地报告了效率:无 MoE 基线 1.07–1.29 TFLOPS/GPU,低算力 MoE 掉到 0.74–0.90,最大 131072 专家模型掉到 0.30(因 batch 未随 GPU 数同比放大)【§5.1、附录 D】。"只小幅损失效率"成立的前提是专家隐层足够宽、batch 足够大——小规模部署场景下这两条都不满足,结论不能外推。另外全文没有报告推理延迟显存占用的绝对值:训练时每 GPU 要装下至多 10 亿参数(附录 D 的显存优化技巧恰恰暴露了这个痛点),推理时专家分布带来的跨设备路由开销只字未提。【解读者补充】

3.3 证据分级

主结果表(Table 1/2/3/5/7/8)均为作者自训自评;无第三方复现在文内;Kneser-Ney 5-gram 基线在 100B 语料上还享受了"用满 130B 词训练、神经网络只用 100B"的口径差(附录 D 注 4,论文自己标注了这一不公平方向相反的细节——值得表扬的自我披露)。

3.4 论文没有告诉你什么

四、综合考核

4.1 重建因果链

仅从摘要三个短语——"数千个专家"、"稀疏组合"、"1000× 容量"——预测论文的系统章节必须解决哪几类工程问题?(L4)

参考答案与评分要点

① 数千个专家 ⇒ 显存放不下 ⇒ 需要模型并行/专家分布存储与激活重算、优化器状态压缩;② 稀疏组合 ⇒ 每专家 batch 缩水 ⇒ 需要跨设备批合并(数据并行+模型并行混血、卷积式时间步合并);③ 1000× 容量 ⇒ 训练信号极易失衡(塌缩)⇒ 需要可导的均衡损失与初始化策略。三类问题分别由 §3.1/附录D、§3.1、§4 解决。评分:每链路 3 分。

4.2 数字总对账

(a) 验证 65536 专家模型"99.994% 层稀疏度"的说法;(b) 用 Table 8 数字复核"39% 困惑度下降";(c) 单语 MT 的 8.7B 总参数与"每专家 2M × 2048 × 2 层"是否一致?误差来自哪?(L2/L1)

标准答案

(a) 1 − 4/65536 = 99.9939% ≈ 99.994%,成立。(b) (47.0 − 28.9)/47.0 ≈ 38.5% ≈ 39%,成立(注意须用同为 1 epoch 口径的行)。(c) 2M × 2048 × 2 = 8.19B,与 8.7B 差约 6%;差额来自 LSTM 主干(编码器 2048 隐层×投影)、attention、embedding 等非专家参数,论文的 8.7B 是全模型计数。

4.3 设计决策答辩

答辩四题:(1) 为什么给 H(x) 加噪声而不是直接对 logits 加噪?(2) 为什么 k=4(或层级 2×2)而不是 k=1?(3) 为什么惩罚 CV² 而不是 max−min?(4) 为什么专家放在 LSTM 层之间而不是替换 LSTM 权重矩阵?(L3/L4)

参考答案与评分要点

(1) 噪声必须进入"是否入选 top-k"的比较才有均衡意义;对最终门控值加噪不改变入选集合。且噪声幅度 Softplus((x·W_noise)_i) 可导可学,使 Load 的 Φ 估计有梯度通路。(2) k=1 时入选与否的梯度信号极度稀疏尖锐、训练不稳;k=4 让 top-k 内部有连续竞争,门控可平滑学习(论文 §2.1 引 Bengio 2013 的 noisy rectifier 行为)。代价是计算×4。(3) CV² 光滑、处处可导,对全向量同时施压;max 类算子在非最大处梯度为零,优化信号稀疏。(4) 卷积式插入保留了"所有时间步合并成大 batch"的吞吐技巧;若把 LSTM 权重换成 MoE(循环式),时间步之间产生串行依赖,批合并失效(§3.1 原文明说 sadly)。评分:每题"理由"+"反面后果"各 2 分。

4.4 证据审计

回看 1.3 五条预评,逐条给出读后修正。(L4)

参考答案

贡献1 维持强支撑:两个域、多档专家数、效率数据齐全。贡献2 维持强支撑,且附录 A 补充了"无噪声则 Load 不可估"的机制证据。贡献3 上调信心:Table 6 显示去掉损失后质量从 35.6 崩到 39.8,作用远超"消融级"。贡献4 下调为轶事证据:无定量指标,样本由作者挑选。贡献5 维持主张,且应指出 2017 年后社区确实兑现了(GShard/Switch/MegaScale),但这属于事后信息,不能计入本文证据分。评分:每条修正+理由 2 分。

4.5 分级自测题

4.6 闭卷自检清单

不看材料,我能——写出 y=Σ G(x)ᵢEᵢ(x) 并说明稀疏性如何省算力?默写 H(x) 的两项构成及噪声的两个用途?算出 kb/n 并解释混合并行带来 d 倍改善的原因?复述 34.1 / 28.9 / 40.56 / 26.03 各自出自哪个实验?指出"医院分诊"类比失效的两点?