Lecture05
\makecscover
来源审计与核心问题:稀疏性究竟扩展了什么
本讲的标题很容易诱导出一个错误印象:仿佛只要把模型参数写成“万亿”,就等于让每个 token 都经过万亿参数计算。讲座真正讨论的是另一件事:让模型拥有很大的可选参数池,但每个 token 只激活其中少量专家,从而把总参数量与单 token 计算量部分解耦。理解这一点,是读懂后续所有速度、质量和硬件图表的前提。
本次重写使用 Stanford Online 官方录像、官方手动英文字幕、38 张从 1080p 录像中恢复并人工筛选的完整教学页,以及 Switch Transformer、GShard、T5、mT5 与 V-MoE 原始论文。录像没有公开独立 slide PDF,因此每张图都标注视频时间;重复动画、片头和 Q&A 中反复跳回的同一页不重复插入,但口头解释保留在正文中。
\lecturefigure{slide-01-title.jpg}{讲座主题:Scaling Transformers through Sparsity。}{Stanford Online 官方视频 00:00:06--00:01:41。}
这张标题页之后,讲者没有直接进入路由公式,而是先回到 dense scaling 的经验事实:语言模型的 loss 随参数、数据和计算预算呈现可预测的幂律趋势。MoE 的研究问题并不是否认 dense scaling,而是问:能否在保持每个样本计算近似不变的情况下,再增加一个“条件使用参数”的扩展维度?
\lecturefigure{slide-02-neural-scaling-laws.jpg}{Dense neural scaling laws:更大的模型具有更高样本效率,并存在随预算平滑变化的最优规模。}{Stanford Online 官方视频 00:01:42--00:02:35。}
可以用一个简化式表达 dense scaling 的经验形状:
其中,\(\mathcal{L}(N)\) 表示参数规模为 \(N\) 时的验证损失;\(\mathcal{L}_{\infty}\) 是在该数据分布与建模假设下的不可约下界;\(a\) 控制纵向尺度;\(\alpha\) 决定扩大模型带来的边际收益衰减速度。这个式子描述的是经验趋势,不是保证任意架构、数据或硬件上都沿同一曲线外推。
\teachervoice{老师先强调 scaling law 的意义:它给研究者一种“扩大规模仍可能获得收益”的信心,但原论文主要研究 dense model。于是本讲把 sparsity 作为新的结构轴,而不是把 MoE 讲成与 scaling 无关的局部模块。}
\lecturefigure{slide-03-new-axis-sparsity.jpg}{新的扩展轴:增加稀疏使用的参数,并尝试与每个样本的计算量解耦。}{Stanford Online 官方视频 00:02:36--00:03:05。}
资源核算的中心不变量
讨论 sparse model 时必须同时报告至少五个量:总参数量、每 token 激活参数量、每 token FLOPs、跨设备通信量与wall-clock 时间。只说“参数更多但计算不变”是不完整的,因为未激活参数仍占设备或主存,路由还会产生 all-to-all 通信与负载不均。
万亿参数不等于万亿参数都被执行
Switch-C 的 1.6T 是可用参数池的总规模,不是每个 token 的 active path。反过来,active FLOPs 较小也不代表系统免费:存储、通信、容量缓冲、编译形状和低吞吐推理都会暴露额外成本。
| 量 | 它回答的问题 | 常见误读 |
|---|---|---|
| 总参数量 | 模型一共存储多少可学习权重? | 把它当作每 token 计算量。 |
| 激活参数量 | 一个 token 实际经过哪些 expert 权重? | 忽略不同 token 的路径不同。 |
| FLOPs | 理论算术工作量是多少? | 用 FLOPs 直接替代真实延迟。 |
| 通信量 | token dispatch 与结果汇聚传输多少数据? | 忽略 all-to-all 成为瓶颈。 |
| wall-clock | 在指定硬件、batch 与实现下多久达到目标质量? | 脱离硬件和吞吐场景泛化。 |
本章小结
本讲扩展的是条件可用参数,不是无条件增加每个 token 的计算。后文所有结果都应在总参数、激活参数、FLOPs、通信和时间这五个坐标中解释。
MoE 基础:专家、路由器与条件参数
明确资源边界后,才能定义 Mixture of Experts(MoE,专家混合)。这里的“专家”不是人工指定的语言学角色,而是若干可学习的子网络;“混合”也不意味着每次都平均执行全部子网络,而是由 router 根据输入选择少量路径。这个思想早于 Transformer,1991 年的 Adaptive Mixtures of Local Experts 已经提出由 gating network 学习分工。
\lecturefigure{slide-04-adaptive-mixtures-history.jpg}{从 Adaptive Mixtures of Local Experts 到稀疏神经语言模型的历史线索。}{Stanford Online 官方视频 00:03:06--00:04:01。}
术语表:先把路由语言说清楚
| 术语 | 本讲中的精确定义 |
|---|---|
| MoE | 一组 expert 加一个 router;输入只激活少量 expert,因此参数条件使用。 |
| expert | 通常是独立的 feed-forward network(FFN)参数块,不等于人工可解释职业。 |
| router / gating | 从 token 表示计算 expert 分数或概率,并决定 dispatch 路径的轻量网络。 |
| top-1 / top-2 | 每个 token 分别选择一个或两个最高分 expert;后者通常增加计算与通信。 |
| sparse activation | 大部分 expert 对当前 token 不执行;它不同于把权重永久剪枝为零。 |
| load balance | 让各 expert 接收的 token 数接近,便于形成规则的批量矩阵乘法。 |
设 token 表示为 \(x\in\mathbb{R}^{d}\),有 \(E\) 个 experts,router 参数为 \(W_r\)。标准 gating 可以写为:
其中,\(p_i(x)\) 是 token 被分给第 \(i\) 个 expert 的 router 概率;\(\mathcal{S}(x)\) 是 top-\(k\) 选出的 expert 集合;\(g_i(x)\) 是选中后用于缩放输出的权重;\(E_i(x)\) 是第 \(i\) 个 expert 的 FFN 输出;\(y(x)\) 是稀疏层输出。只有 \(\mathcal{S}(x)\) 中的 experts 被执行。
\lecturefigure{slide-05-moe-gating-equations.jpg}{MoE 的 gating 概率、expert 选择与加权输出。}{Stanford Online 官方视频 00:04:02--00:04:25。}
MoE 的本质
MoE 不是“把多个完整模型投票平均”,而是对每个 token 运行一个很小的 router,再调用少量 FFN 参数块。它让不同 token 使用不同权重,却可以保持相近的 active compute。
\teachervoice{Irwan Bello 的口头定义很重要:每个输入大致接受相似数量的计算,但被应用的是不同权重。这个表述把 sparsity 与“简单减少计算步骤”区分开,也为后面的 adaptive computation 讨论埋下伏笔。}
早期稀疏 MoE 在机器翻译上取得明显成功,但实际使用需要解决三个系统问题。第一,路由让 token 数量随 expert 动态变化;第二,expert 跨设备放置时会产生通信;第三,router、低精度和负载波动会放大训练不稳定。Switch Transformer 的贡献不是首先提出 MoE,而是把这些障碍压缩成更简单、可训练、可扩展的方案。
\lecturefigure{slide-06-moe-success-and-challenges.jpg}{早期 MoE 的成功及其复杂度、通信与稳定性障碍。}{Stanford Online 官方视频 00:04:26--00:05:37。}
不要把 expert specialization 当作先验事实
router 可能形成主题、语言或句法上的分工,也可能只是学习到更难解释的数值分区。专家名字通常是分析结果,不是训练前约束;看到某个 token 更常去某 expert,也不能直接推出该 expert 具有稳定、因果的“技能”。
本章小结
MoE 由 expert 参数块和 router 组成,核心是按 token 条件选择参数。它扩大可用容量,却引入动态形状、通信、稳定性与负载均衡问题。
Switch Layer:为什么把 top-2 简化成 top-1
有了通用 MoE 定义,本节转向 Switch Transformer 的具体约束。它没有把所有 Transformer 操作都替换成专家,而是保留 self-attention,只在部分 FFN 位置插入 Switch layer。这样可以利用 FFN 在大模型中占据大量参数的特点,同时避免让注意力结构、残差路径和每一层都动态化。
\lecturefigure{slide-07-switch-transformer-layer.jpg}{Switch layer:router 为每个 token 选择一个 FFN expert。}{Stanford Online 官方视频 00:05:38--00:07:21。}
Switch 的 top-1 规则为:
其中,\(i^*(x)\) 是 router 概率最高的 expert 索引;\(p_{i^*}(x)\) 是保留的 gate 权重;\(E_{i^*}(x)\) 是唯一被执行的 expert;\(y(x)\) 是该层输出。与 top-2 相比,top-1 将每个 token 的 expert FFN 次数从两个降到一个,并减少 dispatch 数据量。
def switch_layer(tokens, router, experts):
logits = router(tokens)
probs = softmax(logits, axis=-1)
expert_id = argmax(probs, axis=-1)
gate = gather(probs, expert_id)
output = dispatch_to_one_expert(tokens, expert_id, experts)
return gate * output
top-1 是系统设计,不只是数学删项
减少一个 expert 路径会同时改变 FFN FLOPs、token 通信、capacity buffer、router 训练和溢出行为。因此 top-1 的价值应通过 time-to-quality 与硬件效率评估,而不能只比较同一步数下的 loss。
\teachervoice{Barret Zoph 特别说明,实际模型通常每两层或每四层才放一个 sparse layer。router 的 float32 计算也只占极小比例。换句话说,“Switch Transformer”仍然有大量普通 dense Transformer 结构。}
仅把 top-2 改为 top-1 还不够。讲座把可用系统总结为四个控制件:router selective precision、较小初始化尺度、expert 层更强的 fine-tuning regularization,以及可微负载均衡。这些控制件分别处理数值误差、初始激活幅度、下游过拟合和硬件利用率。
\lecturefigure{slide-08-improved-training-methodology.jpg}{Switch Transformer 的四类训练改进。}{Stanford Online 官方视频 00:07:22--00:08:49。}
读图:四个改进分别管什么
Selective precision 管 router 的数值稳定;reduced initialization scale 管训练初期的激活和梯度幅度;higher regularization 管高参数容量在小数据上的过拟合;load-balancing loss 管 token 是否能形成近似等大的 expert batch。它们不是四个同义技巧,而是覆盖数值、优化、泛化与系统四个层面。
本章小结
Switch layer 只替换部分 FFN,并采用 top-1 routing。真正可用的方案是“简单路由加四类控制件”,而不是一个孤立的 argmax。
稳定训练:精度、初始化、正则化与负载均衡
上一节列出了稳定性栈,本节逐一解释它们为什么必要。稀疏模型的不稳定并不只来自参数多,还来自一串离散路由决策:router logits 的微小数值变化可能改变 argmax,随后 token 会进入完全不同的 expert,误差因此不只是输出值轻微偏移,而是计算路径跳变。
Selective precision:只把敏感的小部分升到 float32
训练大模型通常使用 bfloat16 来降低显存和加速矩阵乘法,但 router 内部的 softmax 依赖指数函数。若 logits 的舍入改变概率排序,top-1 路径就会切换。Switch 的选择不是让整网回到 float32,而是仅把 router 的局部计算升精度,再把结果返回低精度主干。
\lecturefigure{slide-09-selective-precision.jpg}{Selective precision:router 使用 float32,主体仍保留 bfloat16 吞吐。}{Stanford Online 官方视频 00:08:50--00:10:21。}
其中,\(z_i\) 是第 \(i\) 个 expert 的 router logit;指数 \(e^{z_i}\) 会放大输入差异;分母把所有 expert 分数归一化。低精度误差若改变最大的 \(z_i\),就会改变离散 expert 选择,因此 router 比普通连续残差分支更需要局部精度保护。
\teachervoice{讲者给出的工程判断是:router float32 几乎是免费操作。它没有跨设备通信,计算量相对 FFN 矩阵乘极小,而且 sparse layer 并非每层都出现;因此表中吞吐差异落在测量噪声内。}
Selective precision 不是“混合精度自动安全”
低精度训练是否稳定取决于敏感操作。对 softmax、归一化、累加和路由排序,应检查溢出、下溢、tie 与 argmax 翻转;不能因为大矩阵乘适合 bfloat16,就假设所有控制路径也适合。
更小初始化:先控制路由与 expert 的动态范围
训练早期,expert 尚未形成稳定分工,router 也在快速变化。如果初始化让激活和 logits 过大,softmax 会过早饱和,少数 expert 获得更多 token 与梯度,进一步强化失衡。降低初始化尺度让网络从更平缓的区域开始,给负载均衡和主任务 loss 共同塑形的机会。
\lecturefigure{slide-10-reduced-initialization-scale.jpg}{降低初始化尺度可改善 sparse expert 模型的稳定性与质量。}{Stanford Online 官方视频 00:10:22--00:10:51。}
\teachervoice{这页保留了一个很有价值的实践经验:复杂系统的根因不一定需要复杂修复。作者观察到标准初始化对 sparse expert 更敏感,简单缩小尺度就显著改善质量;应先做幅度、饱和度和梯度分布诊断,再堆叠新算法。}
什么是“初始化尺度”
初始化尺度决定训练开始时权重的典型幅度,进而影响激活、router logits 与梯度。过小可能让信号弱,过大可能导致饱和、路径集中或梯度爆炸。这里的结论是对该架构与训练设置的经验校准,不是所有 MoE 都应无条件采用同一个缩放常数。
Expert dropout:参数容量越大,下游越容易过拟合
预训练数据巨大,但 SuperGLUE 等下游任务可能只有数万样本。Sparse model 的总参数池很大,即使每个 token 只走一个 expert,也可能在 fine-tuning 时快速记住小数据。讲座因此提高 expert 层 dropout,而不是简单把 dense T5 的正则化原样搬过来。
\lecturefigure{slide-11-higher-regularization-fine-tuning.jpg}{提高 expert 层 dropout,缓解 sparse model 在小下游数据上的过拟合。}{Stanford Online 官方视频 00:10:52--00:12:47。}
读图:不要只找一个“全局最佳 dropout”
表格比较多个下游任务,它们的数据规模与噪声不同。应先看 sparse model 相对 dense baseline 是否更需要正则,再看不同任务的最优点是否一致。若最优 dropout 随任务变化,结论应是“需要更强且需调参”,而不是宣布一个通用常数。
Load-balancing loss:把概率质量与真实 token 数对齐
只优化语言建模 loss 时,router 可能把大量 token 送入少数 experts。这样不仅降低分工,还会使某些设备过载、其他设备空闲。Switch 使用辅助 loss,让“实际送入比例”和“平均 router 概率”在 experts 间更均匀。
其中,\(\alpha\) 是辅助 loss 权重;\(E\) 是 expert 数;\(f_i\) 是 batch 中实际路由到第 \(i\) 个 expert 的 token 比例;\(P_i\) 是该 expert 的平均 router 概率。若流量与概率都集中在同一少数 experts,内积变大;联合优化会推动更均衡的使用。
\lecturefigure{slide-12-load-balance-loss.jpg}{可微负载均衡:同时约束离散 token 比例与平均 router 概率。}{Stanford Online 官方视频 00:12:48--00:13:29。}
负载均衡不是装饰性正则项
它连接了学习目标与硬件执行。均衡后,每个 expert 可以接收大小相近的 token batch,便于使用高效 dense matrix multiplication;失衡则会造成 overflow、padding、等待和设备利用率下降。
均衡不等于所有 experts 必须学成一样
目标是负载近似均匀,不是输出相同。过强的均衡权重可能压制有意义的 specialization;过弱又会导致热点 expert。实践中应同时监控主 loss、aux loss、expert token histogram、overflow rate 与 router entropy。
本章小结
Selective precision 保护离散路由,较小初始化避免早期饱和,更强 expert dropout 处理下游过拟合,load-balancing loss 将可学习路由约束成硬件可执行的近均衡批次。
静态编译遇上动态路由:Capacity Factor 与 Token Dropping
到目前为止,router 看起来可以任意决定每个 expert 接收多少 token;但 XLA、Mesh TensorFlow 与加速器内核偏好静态 tensor shape。系统必须在执行前为每个 expert 预留固定槽位,这就把动态路由转化为一个容量规划问题。
\lecturefigure{slide-13-static-graph-dynamic-architecture.jpg}{矛盾:静态编译图需要固定形状,而 router 产生动态 token 分配。}{Stanford Online 官方视频 00:13:30--00:14:37。}
若一个 routing group 有 \(T\) 个 tokens、\(E\) 个 experts,capacity factor 为 \(\gamma\),常用容量可写为:
其中,\(C\) 是每个 expert 预留的 token 槽位;\(T/E\) 是完全均衡时的平均 token 数;\(\gamma\) 是容量因子。\(\gamma=1\) 几乎没有额外缓冲;\(\gamma>1\) 降低 overflow,却增加 buffer、通信与可能的 padding 计算。
Capacity factor 的三方权衡
提高 \(\gamma\):token dropping 通常下降,但跨设备传输上限、接收缓冲和 FFN 批次上限上升。降低 \(\gamma\):系统更便宜,却要求 router 更均衡,并接受部分 token 跳过 expert 计算。
\lecturefigure{slide-14-expert-capacity-factor.jpg}{Capacity factor 1.0 与 1.5:额外槽位降低 overflow,但提高系统成本。}{Stanford Online 官方视频 00:14:38--00:15:55。}
读图:先数 token,再数槽位
左图每个 expert 的槽位只覆盖理想均分,热门 expert 超出的 token 被丢弃;右图增加约 50% 缓冲,更多 token 得到处理。比较时不要只看“是否丢 token”,还要问:为这些空槽位分配了多少显存、通信带宽和矩阵乘上限?
概念性的 capacity-aware dispatch 如下。真实实现会把 token 按设备重排并通过 collective communication 交换;这里仅显示容量控制逻辑。
def capacity_dispatch(tokens, expert_id, expert_count, capacity):
slots = [[] for _ in range(expert_count)]
residual = zeros_like(tokens)
for token, target in zip(tokens, expert_id):
if len(slots[target]) < capacity:
slots[target].append(token)
else:
residual[token.index] = token # expert path is skipped
expert_outputs = run_batched_experts(slots)
return combine(expert_outputs) + residual
“No Token Left Behind”为何没有成功
直觉上,丢 token 似乎一定伤害质量。作者尝试多阶段路由:若 top-1 expert 已满,就把 token 送到第二、第三选择,直到获得槽位。实验却没有提升,甚至可能变差。一个解释是,router 已经表达了“这个 token 最想去哪里”;强行使用低排名 expert 不一定比跳过该 expert 子层更好,因为残差路径仍然保留 token 表示。
\lecturefigure{slide-15-no-token-left-behind.jpg}{No Token Left Behind:把 overflow token 继续路由到次优 experts 的多阶段方案。}{Stanford Online 官方视频 00:15:56--00:18:18。}
\teachervoice{讲者明确把它称为令人意外的负结果:团队原本很乐观,以为“保证不丢 token”会更好,结果模型对 token dropping 相当稳健,次优 expert 的错误计算反而可能有害。高质量讲义应保留这种被实验否定的直觉,而不是只留下最终成功配方。}
Dropped token 不是从网络中消失
在 Switch block 中,overflow token 通常跳过 expert FFN,但仍可沿 residual connection 继续传播。把 dropping 理解成“删除输入 token”会严重误读实验;真正缺失的是该层的 expert 变换。
Sparsity 与 adaptive computation 不同
Q&A 中学生追问:既然不同 token 走不同 expert,这是否等于不同 token 使用不同计算量?两位讲者给出的区分是:本讲主要研究不同参数、相近计算量;adaptive computation 更强调不同 token 使用不同步数或不同 FLOPs。后者在 SPMD(Single Program Multiple Data)加速器上更难,因为设备希望批内样本执行规则相同的程序。
\teachervoice{Irwan Bello 说,sparsity 与 adaptive computation 相关但分离:前者主要是每个样本使用不同参数,后者是每个样本使用不同计算量。Barret Zoph 的研究策略则是先把已有 LSTM MoE 迁移到 Transformer 并做稳,再逐步走向更一般的动态计算。}
最终配方把 top-1、selective precision、较小初始化、expert dropout、load balance 与 capacity control 合并。任何只复现其中一个组件的实现,都不应声称复现了 Switch Transformer 的训练行为。
\lecturefigure{slide-16-putting-it-all-together.jpg}{完整 Switch 配方:top-1 routing 加稳定性、正则化与负载控制。}{Stanford Online 官方视频 00:25:32--00:27:07。}
实现审计清单
记录 sparse layer 频率、expert 数、capacity factor、overflow rate、aux-loss 权重、router precision、初始化缩放、expert dropout、dispatch 通信与每步耗时。缺少这些字段,单凭“top-1 MoE”无法解释结果差异。
本章小结
静态编译要求预先分配 expert capacity。Capacity factor 用系统成本换取更少 overflow;实验表明,合理 dropping 可能优于把 token 强制送往次优 expert。Sparsity 仍主要改变参数路径,不等于完全解决 adaptive computation。
如何读实验:Top-1、Top-2、步数、时间与 Scaling Law
架构和系统约束明确后,实验的关键不是寻找一张“Switch 胜利图”,而是按顺序区分 quality per step、quality per wall-clock、固定 FLOPs 下的参数收益,以及通信带来的边际递减。讲座中的部分纵轴是 negative log perplexity;普通 perplexity(PPL)是交叉熵的指数,越小越好,而 negative log PPL 越大越好。
若 token 平均交叉熵为 \(H\),则:
其中,\(H\) 是每 token 平均负对数似然;PPL 可粗略理解为模型面对的“有效选择数”,但它不直接等价于事实性、推理能力或下游任务质量;\(-\log(\operatorname{PPL})\) 只是符号翻转,因此越大代表 loss 越低。
Top-1 与 Top-2:容量因子改变 Pareto 前沿
Top-2 在高 capacity 下每个 token 使用两个 experts,单步质量可能更好;但它也增加 FFN 计算和通信。当 capacity factor 降低时,Switch top-1 能以更低成本达到目标质量。正确结论不是“top-1 数学上更强”,而是它在讲座的硬件与容量设置中形成更好的 time-to-quality Pareto 点。
\lecturefigure{slide-17-comparison-moe-switch.jpg}{MoE top-2 与 Switch top-1 在不同 capacity factor 下的质量、速度与 time-to-quality。}{Stanford Online 官方视频 00:27:08--00:28:57。}
读图:比较顺序决定结论
先看 capacity factor 是否相同,再看每步质量;随后看 speed 与达到同一质量阈值的时间。若 top-2 在 step 轴更好、top-1 在 time 轴更快,两者并不矛盾。最后检查低 capacity 是否造成更多 dropping,以及作者是否把省下的计算重新分配到 dense 层。
\teachervoice{讲者将结论表述为 Pareto efficiency:高 capacity 的 top-2 可能有更好 step quality,但低 capacity top-1 减少通信、计算和内存,因此更快到达质量阈值。这个限定比一句“Switch beats MoE”准确得多。}
不要跨硬件照搬 Pareto 结论
不同互连、batch size、expert placement、kernel 与编译器会改变通信占比。论文中的 time-to-quality 是特定系统的测量;迁移到 GPU 集群或低吞吐服务时必须重新 benchmark。
增加 experts:先看训练步,再看真实时间
本节把同一组扩展实验放到两个横轴上阅读。固定每 token 只激活少量 experts 时,增加 expert 数会增加总参数与可分配容量。按训练步看,更多 experts 通常更快降低 loss,并获得更好渐近值;但曲线逐渐靠近,说明参数扩展存在边际递减。
\lecturefigure{slide-18-scaling-experts-per-training-step.jpg}{按训练步比较:expert 数增加带来质量提升,但收益逐渐递减。}{Stanford Online 官方视频 00:28:58--00:29:43。}
读图:训练步不是统一成本单位
横轴每一步可能包含不同通信与 padding 开销。曲线向左或向上说明优化步效率更高,但不能直接推出训练更快。还应关注不同 expert 数下是否保持相同 batch、active FLOPs、capacity factor 与 sparse layer 频率。
把横轴换成 wall-clock 后,通信成本进入图中。若更多 experts 跨越更多设备,dispatch 与 combine 会拖慢每一步;因此“每步收益”必须足以覆盖“每步更慢”,才会变成真实时间收益。
\lecturefigure{slide-19-scaling-experts-per-time.jpg}{按 wall-clock 比较:通信成本进入后,专家数的收益重新排序。}{Stanford Online 官方视频 00:29:44--00:30:51。}
实验报告的最小二联图
至少同时报告 quality-versus-step 与 quality-versus-time。前者诊断优化和样本效率,后者回答系统是否真的更快。若再加 quality-versus-FLOPs 与成本,就能区分算法收益、硬件收益和资源转移。
Sparse scaling law:固定 FLOPs 增加参数仍有收益
讲座进一步将 dense scaling law 扩展到 sparse setting:在每 token FLOPs 近似固定时,增加 sparsely activated parameters 仍可改善 loss。图中曲线不是无限线性下降;随着 experts 增加,收益逐渐变小,说明可用容量、数据覆盖、路由学习和通信共同限制扩展。
\lecturefigure{slide-20-sparse-scaling-laws.jpg}{固定每 token FLOPs 时,增加稀疏参数的经验 scaling 曲线。}{Stanford Online 官方视频 00:30:52--00:31:29。}
读图:固定 FLOPs 不等于固定总成本
纵轴改善支持“条件参数有独立价值”,但横轴未完全包含参数存储、checkpoint、optimizer state、设备数量和通信。该图证明的是实验设置中的预测 loss 趋势,不证明无限加 experts 都具成本效益。
Expert parallelism、model parallelism 与小规模收益
Expert parallelism 将不同 experts 放到不同设备;model parallelism 则切分同一 dense 权重或张量维度。二者可以互补:前者扩展条件参数池,后者让单个 dense block 也能跨设备。图中对比说明,组合后仍可继续改善,而不是只能二选一。
这里的 sharding(分片)是指把参数或张量沿某个维度切到不同设备,使每张设备只保存或计算其中一部分,而不再完整复制全部权重。Expert parallelism 可以视为以 expert 为天然分片单元的一种特殊布局。
\lecturefigure{slide-21-expert-vs-model-parallelism.jpg}{Expert parallelism 与 model parallelism 的质量对比及互补关系。}{Stanford Online 官方视频 00:31:30--00:32:57。}
概念解释:parallelism 不是一个词
Data parallelism 复制模型、切分样本并同步梯度;model parallelism 切分同一层的参数或张量;expert parallelism 让不同设备拥有不同 experts,并通过 token all-to-all 调度。三者解决的内存和计算瓶颈不同。
稀疏性也不只在超大规模才有效。讲座展示较小模型上仍有一致收益,这意味着研究者可以先在可承受规模验证 router、capacity 与系统实现,而不必把“训练万亿模型”作为使用 MoE 的先决条件。
\lecturefigure{slide-22-effective-at-small-scale.jpg}{Switch Transformer 在较小规模与不同 expert 数下仍显示收益。}{Stanford Online 官方视频 00:32:58--00:34:03。}
\teachervoice{老师强调小规模结果的意义:如果方法只在极端规模有效,就很难迭代和复现;在较小模型上观察一致趋势,允许团队先验证实现与训练稳定,再扩大设备数。}
最后一张曲线提醒:固定计算预算不断增加参数,最终会出现明显边际递减。原因可能包括每个 expert 接收的有效训练样本变少、router 难以学习可靠分区、参数存储与通信上升,以及数据本身不足以训练更多自由度。
\lecturefigure{slide-23-parameters-fixed-compute-diminishing-returns.jpg}{固定计算预算只增加参数,最终出现边际收益递减。}{Stanford Online 官方视频 00:34:04--00:36:25。}
“更多参数更样本高效”也有条件
总数据固定时,专家越多,每个 expert 实际看到的 token 可能越少。若 router 分配极不均、某些专家长期冷启动,额外参数会变成未训练容量。应报告 expert utilization、每 expert token 数与长尾使用分布。
本章小结
读 MoE 实验必须区分 step、time、FLOPs 与总系统成本。Top-1 的优势来自特定 capacity 和硬件上的 Pareto 权衡;更多 experts 提升质量,但通信、数据覆盖与路由学习带来边际递减。
分布式执行:Data、Model 与 Expert Parallelism 如何组合
前面的曲线说明 expert parallelism 有效,本节进一步回答“权重究竟放在哪里”。MoE 的可扩展性来自把专家分散到设备,同时让 token 根据路由跨设备移动;这与 data parallel 的样本复制、model parallel 的张量切分可以叠加。真正的设计对象不是单个层,而是设备网格上的数据、权重和 token movement。
\lecturefigure{slide-24-contextualizing-parallelism.jpg}{Data、model 与 expert parallelism 在设备网格中的权重放置方式。}{Stanford Online 官方视频 00:36:26--00:41:35。}
读图:先问“复制什么、切开什么、移动什么”
Data parallelism 复制权重并移动梯度统计;model parallelism 切分同一权重并移动中间激活或部分和;expert parallelism 让每卡持有不同 experts,并移动 token 到其目标设备。图中的方格颜色表示权重归属,不表示 token 永远留在原卡。
| 方式 | 被切分或复制的对象 | 主要通信 | 主要目标 |
|---|---|---|---|
| Data parallel | 模型复制,batch 切分 | 梯度 all-reduce / reduce-scatter | 扩大吞吐与全局 batch |
| Model parallel | 单层参数或张量维度切分 | all-gather、reduce-scatter 或点对点激活 | 放下单个 dense 模型 |
| Expert parallel | experts 切分,token 动态 dispatch | token all-to-all 与结果 combine | 扩大条件参数池 |
什么是 collectives
Collectives 是多设备集合通信原语,例如 all-reduce、reduce-scatter、all-gather 与 all-to-all。MoE 的关键通常是 all-to-all:每个设备把本地 token 按 expert 目的地发送给其他设备,执行 expert 后再把结果送回原序列位置。
从 T5-Base 到 Switch-C:设计旋钮不只有 expert 数
模型设计表同时改变 dense hidden size、层数、heads、expert 数、sparse layer 频率与并行布局。总参数可以增长到万亿,但 active path 仍只包含被选 expert。比较模型时必须对齐 per-token FLOPs 和训练硬件,否则“同计算”可能只是理论算术相近,真实通信并不相同。
\lecturefigure{slide-25-design-choices-switch-models.jpg}{Switch 模型族的 dense 维度、expert 数、参数量与计算设计。}{Stanford Online 官方视频 00:41:36--00:43:21。}
可以用一个简化核算表达总参数与 active 参数的差异:
其中,\(P_{\text{shared}}\) 是 attention、embedding 与 dense 层等共享参数;\(P_{\text{expert}}\) 是单个 expert 参数;\(E\) 是 expert 总数;\(k\) 是每 token 选择的 expert 数,Switch 中通常为 1。增大 \(E\) 会快速增加总参数,但 active expert 部分只随 \(k\) 增长。
Optimizer state 仍随总参数增长
Adam/AdamW 为每个参数维护一阶动量 \(m\) 与二阶动量 \(v\),这些 optimizer state 连同权重、梯度和 checkpoint 都与总参数相关。即使每 token 只激活一个 expert,训练时仍要存储并更新被访问的庞大参数池。
“参数存知识、FLOPs 做推理”只是待检验假设
讲者提出一个直觉:更多参数可能更适合存储 knowledge,而更多 active compute 可能更适合 reasoning。关键是他立刻称其为“mostly unsubstantiated theory”。这句话应转化为实验问题:固定 upstream quality、active FLOPs 或数据后,额外稀疏参数是否独立改善事实型、组合型与推理型任务?
\lecturefigure{slide-26-parameters-knowledge-compute-reasoning.jpg}{讲者的限定性假设:参数可能更偏向知识容量,FLOPs 可能更偏向推理。}{Stanford Online 官方视频 00:43:22--00:43:57。}
\teachervoice{这里最值得保留的 teacher voice 不是口号,而是“不确定性标签”。讲者主动说这是 mostly unsubstantiated theory;因此讲义不能把它升级为已证实规律,更不能据此断言稀疏模型天然更会记忆、dense 模型天然更会推理。}
可证伪的实验设计
选择一组 knowledge-heavy、reasoning-heavy 与混合任务,分别控制 upstream loss、active FLOPs、总参数、训练 token 和检索增强;再比较 dense 与 sparse。只有在这些混杂因素被控制后,才可能讨论参数容量与计算深度的独立作用。
本章小结
MoE 通过 expert parallelism 分散条件参数,并与 data/model parallelism 组合。总参数与 active 参数必须分开核算;“参数用于知识、计算用于推理”在本讲中是研究假设,不是结论。
证据链:Upstream Quality 能否转化为 Downstream Quality
本节从系统设计转向证据。若 sparse model 只是用更多总参数获得更低 pretraining loss,那么下游提升可能只是 upstream quality 的结果,而非参数形式本身。讲者因此提出控制问题:在相同 upstream quality 下,额外 sparse parameters 是否仍能独立改善 downstream task?
\lecturefigure{slide-27-upstream-quality-research-question.jpg}{研究问题:固定 upstream pretraining quality 后,总参数形式是否仍影响下游?}{Stanford Online 官方视频 00:43:58--00:44:17。}
背景概念:upstream 与 downstream
Upstream task 是大规模预训练目标,例如 C4 上的 text-to-text denoising;downstream task 是 SuperGLUE、TriviaQA 等迁移评估。二者相关不意味着完全等价:同样 pretraining loss 的模型可能有不同表示、容量分配与 fine-tuning 行为。
SuperGLUE:相关性明显,但不是参数因果证明
图中 dense 与 Switch 模型的 upstream quality 均与 SuperGLUE 提升相关。若两类点大体落在同一趋势附近,说明大量 downstream 收益可由更好的 pretraining quality 解释;若 sparse 点在同一 upstream 水平系统性更高,才支持参数形式有额外贡献。
\lecturefigure{slide-28-upstream-vs-superglue.jpg}{Dense 与 Switch 的 upstream quality 对 SuperGLUE quality 关系。}{Stanford Online 官方视频 00:44:18--00:45:19。}
读图:横向比较,不要只沿曲线看
先在相近 upstream quality 的横坐标处比较 dense 与 sparse 点,再观察误差与模型规模。只看到两者都随 upstream 提升而上升,能说明相关性,却不能证明“更多稀疏参数在同质量下独立有效”。
Correlation 不是机制识别
模型族同时改变参数数、训练时间、正则化、路由与优化稳定性。散点趋势无法单独识别哪一项造成下游差异;需要 matched-quality、matched-compute 和多随机种子实验。
Switch-C 将总参数推到约 1.6T,并在图中作为新的极端点。它的重要性是展示系统可训练性与 scaling 延续,而不是宣告所有任务都因“万亿”这个数字获得同比提升。极端点也可能对回归趋势产生很强杠杆作用,应与中等规模结果一起看。
\lecturefigure{slide-29-switch-c-trillion-parameter.jpg}{加入约 1.6T 参数的 Switch-C 后,观察 upstream 与 SuperGLUE 的扩展趋势。}{Stanford Online 官方视频 00:45:20--00:46:01。}
\teachervoice{讲者没有把 Switch-C 当作唯一卖点,而是用它测试趋势是否继续。工程上更重要的问题是:在相同设备时间、active compute 与服务约束下,它是否比更小的 sparse 或 dense 配置值得。}
TriviaQA:knowledge-heavy 任务提供另一种观察
TriviaQA 更偏向知识问答,因此适合检验“更多参数可能承载知识”的直觉。图中 upstream quality 与 TriviaQA 分数仍呈正相关,但一张相关图不足以把提升归因于存储容量;训练语料覆盖、tokenization、fine-tuning 与答案匹配规则都会影响结果。
\lecturefigure{slide-30-upstream-vs-triviaqa.jpg}{Upstream quality 与 TriviaQA 质量的关系。}{Stanford Online 官方视频 00:46:02--00:46:27。}
读图:这张图支持什么、不支持什么
它支持“更好的预训练通常伴随更好的 TriviaQA”,并为 sparse capacity 值得继续研究提供证据;它不证明模型在内部以可定位方式存储事实,也不证明参数量比数据覆盖、检索或 active compute 更重要。
Base/Large fine-tuning 与 101 语言训练
本节把证据从最大模型移回更常用规模与多语言分布。如果 sparse 方法只在最大模型上有效,它的工程价值会很窄。讲座展示 Base 与 Large 级别的 fine-tuning 结果,说明在更常见规模上也能获得收益;同时,多语言实验以 mT5 为 dense baseline,在 101 种语言上观察到整体优势。
\lecturefigure{slide-31-fine-tuning-base-and-large.jpg}{Base 与 Large 规模下的 fine-tuning 结果。}{Stanford Online 官方视频 00:46:28--00:47:07。}
读表:平均分之外还要找失败任务
先比较同规模 dense 与 sparse 的平均质量和 FLOPs,再检查是否存在某些任务退化。平均提升可能掩盖对小数据、长序列或类别不平衡任务的敏感性;部署时应保留 per-task 结果,而不是只报 aggregate score。
多语言环境天然具有异质输入,router 可能按语言、词形或主题形成路径分工;但这不意味着每种语言自动获得独立 expert。真正应检查的是高低资源语言的分布、tokenizer 覆盖、expert utilization 与是否出现某些语言被 overflow 系统性丢弃。
\lecturefigure{slide-32-multilingual-training.jpg}{以 mT5 为基线的 101 语言训练与质量趋势。}{Stanford Online 官方视频 00:47:08--00:47:41。}
\teachervoice{讲者把“所有 101 种语言都有改善”作为重要结果,但工程复现仍应分语言报告。宏平均改善不等于低资源语言、公平性和路由覆盖都已解决。}
语言分工可能制造新的长尾
若 router 把高资源语言集中到稳定 experts,低资源语言可能得到更少训练或更高 dropping。应按语言统计 expert entropy、overflow、token 数和 downstream quality,避免总体吞吐掩盖局部退化。
本章小结
Upstream quality 是 downstream quality 的重要解释变量,但相关图不自动证明额外稀疏参数的独立因果作用。Base/Large 与多语言结果扩大了适用范围,同时要求更细粒度的任务和语言审计。
蒸馏:把稀疏 teacher 转换为更易部署的 student
MoE 的训练优势不等于所有部署都适合保留专家分布。低 batch、边缘设备或参数存储受限场景可能更需要一个较小 dense student。Distillation(知识蒸馏)让 student 学习 teacher 的软分布、隐藏表示或任务输出,但它会把“巨大条件参数池”压缩回更小容量,因此必然是质量、参数、延迟与实现复杂度之间的转换。
\lecturefigure{slide-33-distillation-techniques.jpg}{Switch Transformer 的蒸馏技术与 DistilBERT 风格基线。}{Stanford Online 官方视频 00:47:42--00:48:23。}
一个常见蒸馏目标可写为:
其中,\(\mathcal{L}_{\text{hard}}\) 是 student 对真实标签或原始预训练目标的 loss;\(p_T^{(\tau)}\) 与 \(p_S^{(\tau)}\) 分别是 teacher 和 student 在温度 \(\tau\) 下的软分布;KL 是分布差异;\(\lambda\) 平衡硬目标与 teacher 信号。不同蒸馏方案还可加入 hidden-state matching 或仅使用 teacher 生成数据。
术语消化:蒸馏不是量化
Distillation 训练一个新 student 去逼近 teacher 行为;quantization 则降低同一模型权重或激活的数值位宽。前者改变参数结构和容量,后者主要改变表示精度。两者可以组合,但失败模式不同。
蒸馏预训练模型:压缩参数,也压缩条件容量
预训练蒸馏比较 dense、sparse teacher 与不同 student。读表时应同时看参数、训练或推理 FLOPs、上游质量和恢复比例。若 student 参数大幅下降但只保留部分 teacher 质量,这不是蒸馏失败,而是明确的 Pareto 交易;真正问题是它是否比直接训练同规模 dense model 更好。
\lecturefigure{slide-34-distilling-pretrained-model.jpg}{预训练阶段的 sparse teacher 蒸馏与参数/质量权衡。}{Stanford Online 官方视频 00:48:24--00:50:58。}
读表:必须加入“直接训练同规模 student”基线
只比较 teacher 与 distilled student,会把“容量变小后的必然下降”误当作蒸馏结论。应加入从头训练的同结构 student,判断 teacher 信号究竟恢复了多少质量,以及额外蒸馏成本是否值得。
\teachervoice{Q&A 中的实质问题是部署目标:若最终必须得到小 dense model,为什么不一开始就训练它?蒸馏只有在 sparse teacher 能提供更好的软目标、数据扩增或表示监督,并且这些收益超过 teacher 训练成本时才成立。}
蒸馏 fine-tuned SuperGLUE 模型
另一条路线是先让 Switch teacher 在 SuperGLUE 上完成 fine-tuning,再蒸馏任务行为。它更贴近特定产品,但泛化范围更窄:student 可能保留任务分数,却不再拥有 teacher 的通用预训练能力。部署前应决定需要“通用 student”还是“任务专用 student”。
\lecturefigure{slide-35-distilling-finetuned-superglue.jpg}{蒸馏已 fine-tune 的 SuperGLUE teacher:任务质量与模型规模的转换。}{Stanford Online 官方视频 00:50:59--00:57:07。}
蒸馏验收的四个维度
同时报告:相对 teacher 的质量保留、相对同规模 scratch baseline 的增益、端到端训练成本、以及目标硬件上的延迟/吞吐。若只报告参数压缩比,就无法判断部署是否真的更优。
蒸馏不能消除 teacher 的偏差
Student 会学习 teacher 的分布与错误。若 sparse router 对语言、主题或群体存在不均衡,蒸馏可能把这种行为固化进 dense student,而不是自动平均掉。
本章小结
蒸馏是从高容量 sparse teacher 到小型部署模型的有损转换。正确基线是同规模直接训练 student,正确指标同时包含质量、训练成本和真实硬件性能。
收束与扩展:从语言 MoE 到 Vision MoE
讲座最后先总结 Switch 的语言建模结果,再展示视觉领域的新工作。两部分共同说明:稀疏专家的核心接口可以跨模态复用,但 token 的含义、冗余结构和重要性排序会改变 routing 策略。文本通常希望每个 token 接受类似计算;图像 patch 则可能允许更激进的选择性处理。
\lecturefigure{slide-36-wrapping-up.jpg}{讲座总结:简单路由、稳定训练、预训练加速、多语言与万亿参数规模。}{Stanford Online 官方视频 00:57:08--01:00:43。}
读图:把“结果”还原成条件句
Switch 简化了 MoE,并在给定 T5 基线、C4/mT5 数据、TPU 与 Mesh TensorFlow 实现中取得速度和质量收益;它训练了万亿参数模型,但每 token 只激活少量 experts;它改善多语言平均表现,但仍需检查 per-language 路由与部署成本。
视觉 MoE 将 image patches 当作 tokens,在 Transformer 中插入 sparse expert layers。图像存在大量局部冗余,因此 router 不仅可以决定“使用哪个 expert”,还可能决定“哪些 patches 值得占用有限 capacity”。这使 sparsity 开始接近 adaptive computation。
\lecturefigure{slide-37-sparse-models-computer-vision.jpg}{V-MoE:将 sparse expert scaling 扩展到图像分类。}{Stanford Online 官方视频 01:00:44--01:01:15。}
什么是视觉 token
Vision Transformer 将图像切成 patches,并把每个 patch 投影为 token。V-MoE 的 expert 处理对象是 patch 表示;它不是为每张完整图片只选一个 expert。不同 patch 可被路由到不同 experts。
Priority routing 在 capacity factor 小于 1 时先为 token 估计重要性,再让高优先级 patches 获得 expert 槽位。若 \(\gamma=0.5\),容量只够处理理想均分的一半 token;这不再只是意外 overflow,而是有意进行计算预算分配。图像背景或重复区域可能被跳过,关键物体 patch 获得更多稀疏层计算。
\lecturefigure{slide-38-priority-routing-vision-moe.jpg}{Vision MoE 的 priority routing:在容量不足时优先处理重要 patches。}{Stanford Online 官方视频 01:01:16--01:02:10。}
\teachervoice{讲者把 capacity factor 降到 1 以下视为很有前景的方向:在图像中,甚至只让约十分之一 patch 经过 sparse layer 仍可能保持良好质量。这时 sparsity 开始同时改变“参数选择”和“计算量分配”。}
Priority score 也是一个学习到的假设
被跳过的 patch 不一定真的“不重要”。若 priority router 对小物体、文字、边缘区域或少数类产生系统性低分,平均准确率可能掩盖脆弱性。应做遮挡、分群、校准与分布外测试。
Q&A 给出的部署边界
结尾 Q&A 补充了三条 slide 上没有完整写出的边界。第一,在当时的 C4、SuperGLUE 和常见序列长度下,attention map 不是主要内存成本,权重更突出,因此线性 attention 不一定先解决瓶颈。第二,继续扩大 experts 的直接限制之一是参数必须存放在某处。第三,sparse model 每个存储参数的效率通常低于 dense model,因此它更适合预训练和中高吞吐服务,不一定适合最小设备上的单请求低延迟。
| 场景 | 可能收益 | 主要风险 |
|---|---|---|
| 大规模预训练 | 条件参数扩大容量,data/expert parallel 吞吐高 | all-to-all、存储、checkpoint 与稳定性 |
| 中高吞吐服务 | batch 能聚合 expert token,摊薄通信 | 热点 expert、路由漂移与跨机延迟 |
| 单请求低延迟/边缘设备 | 可能减少 active FLOPs | 总权重难放下,低 batch 无法形成高效 expert GEMM |
| 超长上下文 | MoE 扩大 FFN 容量 | attention/KV 成本可能成为另一独立瓶颈 |
\teachervoice{Barret Zoph 的最终判断很克制:如果目标是“在尽可能小的设备上放下最强模型”,dense model 的 per-weight efficiency 可能更好;如果是大量预训练和中高吞吐服务,sparsity 更可能成为大收益。应用场景决定结论。}
本章小结
Switch 的语言结果说明条件参数可以规模化;V-MoE 进一步用 priority routing 分配有限计算。Q&A 则提醒,存储、batch、互连、上下文长度和每权重效率决定 sparse deployment 是否真正占优。
总结与延伸
Switch Transformer 的核心不是“用一个 router 魔法般获得万亿模型”,而是把条件参数扩展写成一套端到端系统:router 决定路径,capacity 把动态路径约束成静态批次,load balance 提高硬件利用率,selective precision 与初始化保护训练,expert dropout 处理下游过拟合,expert parallelism 承担参数分布,实验则必须把 step、time、FLOPs 与总成本分开。
- 稀疏扩展的是可选参数池:总参数可随 expert 数增长,每 token active experts 仍由 top-\(k\) 控制;
- Top-1 是 Pareto 选择:它减少 expert FFN、通信与容量需求,但是否胜出取决于硬件和目标质量;
- Router 是数值控制路径:softmax 与 argmax 对舍入敏感,局部 float32 可以用极小成本避免路径翻转;
- Load balance 是算法与系统的接口:辅助 loss 把可学习概率变成近似规则的 expert batch;
- Capacity factor 是显式成本旋钮:更高容量减少 dropping,却扩大 buffer、通信和潜在计算;
- 负结果同样重要:把 overflow token 送往次优 experts 并不必然优于跳过 expert 子层;
- Scaling 必须按多个横轴验证:step、wall-clock、FLOPs、参数存储与成本回答不同问题;
- Parallelism 可以组合:data、model 与 expert parallelism 分别切分样本、张量与条件参数;
- 下游相关性不等于机制证明:upstream loss、总参数、active compute 与数据覆盖需要匹配控制;
- 蒸馏是有损部署转换:应比较同规模 scratch student,并核算 teacher 训练成本;
- Vision priority routing 走向自适应计算:capacity 小于 1 时,模型主动决定哪些 patches 获得 expert 计算;
- 适用场景决定价值:MoE 更偏向大规模训练与中高吞吐,不自动适合低 batch、边缘设备或极长上下文。
课程作业:做一次 matched-resource MoE 审计
实现一个小型 dense Transformer 与 top-1 MoE,匹配训练 token、active FLOPs 与总 wall-clock。至少扫描 expert 数、capacity factor 和 aux-loss 权重;报告 PPL、time-to-quality、overflow、expert entropy、all-to-all 时间、峰值显存与 per-task fine-tuning。再加入一个同参数量 dense baseline 和一个同 active-FLOPs dense baseline,回答收益来自容量、计算、正则还是系统实现。
最终自检:六个不能混为一谈的概念
总参数不等于激活参数;FLOPs不等于延迟;负载均衡不等于专家相同;token dropping不等于删除 token;upstream correlation不等于参数因果作用;sparsity不等于任意 adaptive computation。
拓展阅读
建议按“历史机制—系统扩展—Switch 配方—多语言/视觉扩展”的顺序阅读原始材料:
{
- Adaptive Mixtures of Local Experts:gating 与局部专家的早期形式化。
- Sparsely-Gated MoE:大规模条件计算、路由与负载均衡的关键前身。
- Scaling Laws for Neural Language Models:dense scaling 的经验背景。
- GShard:自动 sharding 与大规模条件计算系统。
- Switch Transformers:top-1 routing、selective precision、capacity、实验与蒸馏主来源。
- T5 与 mT5:dense text-to-text 与 101 语言基线。
- V-MoE:视觉 sparse experts、priority routing 与容量小于 1 的自适应分配。
- Mesh TensorFlow:原始工作所处的分布式实现与 sharding 代码背景。
}