Theme
下面是 Lecture 22 的系统复习笔记。本讲核心主题是 Mixture of Experts, MoE:如何在模型总参数规模继续增大的同时,只激活少量参数,从而降低每个 token 的计算成本。课件来源:
Lecture 22:Mixture of Experts, MoE
0. 本章核心目标与进化树
本章要解决的问题是:
Dense model 越做越大时,每个 token 都要经过全部参数,计算成本、显存通信、推理延迟都急剧增加。MoE 的目标是在保持巨大模型容量的同时,让每个 token 只使用少数专家,从而实现“总参数大、激活参数少”。
可以把本讲的技术演进理解为:
text
Dense Transformer / LSTM
│
│ 问题:每次前向传播都激活全部参数,成本高
▼
Mixture of Experts
│
│ 用 router / gating network 为每个输入选择部分专家
▼
Sparse MoE
│
├── Top-1 Routing:最省算力,但容易 routing collapse
│
├── Top-2 / Top-k Routing:表达力更强,缓解 collapse,但成本更高
│
├── Auxiliary Loss:鼓励专家负载均衡
│
├── BASE Routing:强制均衡,但解 assignment 成本高,不适合自回归解码
│
└── RL Routing:直接学习离散路由,但高方差、reward 稀疏
▼
MoE LLM 构建方式
│
├── Sparse Upcycling:复制 dense FFN 变成专家,参数增加,继承预训练知识
└── Sparse Splitting:切分 dense FFN 变成专家,参数不变,但每个专家容量下降重要程度: MoE motivation、Top-k routing、load balancing loss、Sparse Upcycling / Splitting 是高频重点。BASE routing 和 RL routing 更偏理解型考点。
1. Motivation:为什么需要 MoE?【重要程度:★★★★★】
Dense model 的计算模式是:
也就是说,对每个输入 ,模型的所有层、所有参数都参与计算。问题是:随着模型规模指数级增长,每个 token 都激活全部参数会非常昂贵。
MoE 的核心思想是:
即:不是所有参数都对当前输入有用,所以只激活一小部分专家参数。
直觉上,dense model 像是每个问题都请全体教授开会;MoE 像是先由一个路由器判断问题类型,然后只请最相关的几个专家回答。
2. MoE 基本结构:Gating Network + Experts【重要程度:★★★★★】
MoE 包含两个核心组件:
- Experts:多个子网络,通常是 FFN。
- Gating network / Router:决定当前输入该交给哪些 experts。
课件中的基本公式是:
其中:
表示输入,可以是一个 token representation,也可以是 batch 中某个样本的表示。
表示第 个 expert 对输入 的输出。每个 expert 通常是一个 feed-forward network。
表示 gating network 给第 个 expert 的权重或概率。
表示被选中的 expert 集合。例如 Top-1 routing 时 ,Top-2 routing 时 。
表示 MoE 层输出。
如果 gating network 给出:
那么只有第二个 expert 被激活:
这就是 sparse activation 的本质:总专家很多,但每次只走一小部分。
3. MoE in LSTM:早期 Sparse-Gated MoE【重要程度:★★★★☆】
课件引用 Shazeer et al. 2017 的 sparsely-gated MoE。对于输入 ,gating network 先计算路由分数:
其中:
表示输入表示。
是 gating network 的可学习参数矩阵。
是所有 experts 的 softmax routing probability。
然后选择 Top- 个 experts:
其中:
是被选中的 expert index 集合。
分别表示 routing probability 最大的两个专家编号。
表示每个输入激活两个 experts。
选中 experts 后,对两个专家的概率重新归一化:
其中:
表示两个被选专家的最终 mixing weights。
最终输出为:
这个公式说明:MoE 不是简单“选一个专家”,也可以是多个专家加权组合。
4. MoE in Transformer:替换 FFN 层【重要程度:★★★★★】
Transformer 中最典型的 MoE 做法是:把标准 Transformer block 里的 FFN 替换成 MoE layer。
普通 Transformer block 中大致是:
text
Self-Attention → FFNSwitch Transformer / MoE Transformer 中变成:
text
Self-Attention → MoE FFN对于 token hidden state ,router 计算:
其中:
是当前 token 的 hidden representation。
是 router 的可学习参数。
是当前 token 分配给不同 experts 的概率分布。
如果选中第 个 expert,那么:
其中:
是第 个 expert 的 routing probability。
是第 个 expert 对 token representation 的 FFN 变换。
关键理解:MoE Transformer 通常是 token-level routing。不同 token 可以被送到不同 expert。例如句子中 “The” 和 “Dog” 可能路由到不同专家。
5. Routing Algorithm 1:Top-1 Routing【重要程度:★★★★★】
Top-1 routing 的规则是:
优点:
每个 token 只激活一个 expert,因此 forward FLOPs 最低。
缺点:
Routing collapse。
Routing collapse 指 router 过度偏好少数 experts,使得某些 experts 经常被使用,而其他 experts 几乎不被训练。结果是:
text
少数 expert 被过载 → 训练充分但拥挤
多数 expert 被闲置 → 梯度少、训练差
整体专家利用率下降课件中用 Maximum Routing Imbalance 衡量专家负载不均衡。值越高,说明 token 越集中到少数 experts,load balance 越差。
6. Routing Algorithm 2:Top-2 / Top-k Routing【重要程度:★★★★☆】
Top-2 routing 选择两个 experts:
输出可以写成:
优点:
- 表达能力更强,因为每个 token 可以结合多个专家。
- 可以缓解 routing collapse,因为训练信号会分配给更多 experts。
缺点:
- 每个 token 激活两个 experts,FLOPs 增加。
- 分布式训练中,token 需要被发送到更多 devices,communication overhead 更大。
总结:
| Routing | 每 token 激活专家数 | 优点 | 缺点 |
|---|---|---|---|
| Top-1 | 1 | 最省计算 | 容易 routing collapse |
| Top-2 | 2 | 表达力更强,负载更均衡 | 计算和通信成本更高 |
| Top-k | k | 更灵活 | 成本随 增加 |
7. Case Study:GLaM【重要程度:★★★☆☆】
GLaM 展示了 MoE 的核心优势:在相似 FLOPs per token 下,MoE 模型通常优于 dense variant。
课件给出的结论是:
GLaM 使用约 GPT-3 的 energy 和 serving cost,却能取得更好或相近的性能。
这体现了 MoE 的核心 trade-off:
text
总参数多 → 模型容量大
激活参数少 → 每 token 计算便宜8. Case Study:DeepSeek-MoE【重要程度:★★★★★】
DeepSeek-MoE 的设计重点是区分:
- Shared experts
- Routed experts
课件中写到:每个 MoE layer 包含:
每个 token 选择 6 个 routed experts。
8.1 Shared Experts
Shared experts 的特点是:
即所有 token 都会经过这些专家,不需要 router 选择。
作用:
学习通用知识,例如语法、常见语义、基础语言模式。
8.2 Routed Experts
Routed experts 的特点是:
作用:
学习更专门化、领域相关的知识。
直觉上:
text
Shared experts = 通识老师
Routed experts = 专科老师
Router = 分诊系统8.3 DeepSeek-MoE 性能意义
课件中提到:
总参数为 16B,但只有:
activated parameters。
它可以 match 甚至 surpass LLaMA2-7B,而 LLaMA2-7B 是 dense model,会激活全部 7B 参数。
所以 DeepSeek-MoE 的核心意义是:
不过课件也强调:MoE 并非所有任务都优于 dense model,仍有少数 case 中 MoE 更差。这说明 routing、专家分工、负载均衡并不总是完美。
9. MoE Training:离散专家选择如何反向传播?【重要程度:★★★★★】
这是本讲最关键的数学部分。
MoE 的难点在于:
也就是说,router 选择 expert 的动作类似:
或
这些操作不可微。因此梯度不能自然穿过“选哪个专家”这个离散节点。
课件中的训练目标是:
其中:
是主任务损失,比如 next-token prediction 的 cross-entropy。
是辅助负载均衡损失,用于鼓励 experts 被均匀使用。
是辅助损失的权重超参数。
9.1 Next-token prediction loss
给定 token 序列:
语言模型训练目标是预测下一个 token:
其中:
是序列长度。
是第 个 token。
表示第 个 token 之前的上下文。
表示模型参数 下,对真实 token 的预测概率。
9.2 MoE layer 输出公式
课件中的 MoE hidden state 形式可以写为:
其中:
是进入 MoE layer 前,第 个 token 的 hidden representation。
是经过 MoE layer 后的输出 representation。
是 expert 总数。
是第 个 expert。
是第 个 token 对第 个 expert 的实际 routing weight。
这里的残差结构:
说明 MoE layer 通常嵌在 Transformer block 的 residual path 中。
9.3 Top-k gating 权重
课件中 的定义是:
其中:
表示 router 对第 个 token 分配到第 个 expert 的 softmax probability。
是 router function。
是每个 token 选出的 expert 数量。
这个公式的核心意思是:
text
先算所有 experts 的 softmax score
只保留 Top-K experts 的 score
其他 experts 的 routing weight 设为 0问题在于:
是离散选择,不可微。
10. Auxiliary Load Balancing Loss【重要程度:★★★★★】
为了避免 routing collapse,MoE 使用辅助损失:
其中:
是辅助损失权重。
是 expert 数量。
表示实际被路由到 expert 的 token fraction。
表示 router 给 expert 的平均概率。
课件中:
其中:
是 indicator function。如果 token 选择 expert ,则为 1,否则为 0。
是每个 token 选中的 expert 数量。
是 token 总数。
依赖硬路由结果,因此不可微。
而:
其中 是 router softmax probability,因此 是可微的。
所以训练时:
直觉是:
如果某个 expert 已经被实际选得很多,即 大,那么辅助损失会惩罚 router 继续给它很高平均概率 。这样可以推动 router 把 token 分给其他 experts。
11. Routing Algorithm 3:BASE Routing【重要程度:★★★☆☆】
BASE routing 把 token-to-expert assignment 当成一个 linear assignment problem。
目标函数:
subject to:
其中:
是 token 的 representation。
是 token 被分配到的 expert 参数或 expert embedding。
表示 token 被分配到的 expert index。
是 batch 中 token 总数。
是 expert 总数。
是 indicator function,若 token 被分配给 expert ,则为 1,否则为 0。
这个约束要求:
所以 BASE routing 的优点是:
严格负载均衡。
缺点是:
- 需要求解 assignment problem,计算昂贵。
- 不适合 autoregressive decoding,因为自回归生成时 token 是一个一个产生的,无法提前对整个 batch 做全局分配。
12. Routing Algorithm 4:Reinforcement Learning Routing【重要程度:★★★☆☆】
Top-k routing 的问题是:实际 expert assignment 是离散动作,普通反向传播通常只更新 softmax gate values,而不是直接优化离散选择本身。
RL routing 把路由看作 policy learning:
text
router = agent
expert selection = action
task performance = reward可以写成:
其中:
是 router policy。
是为 token 选择的 expert。
是 token representation。
RL routing 的优点是:可以直接建模离散选择。
缺点是:
- reward 通常稀疏。
- policy gradient 方差高。
- 训练不稳定。
因此 RL routing 在理论上更直接,但工程上不如 Top-k + auxiliary loss 常用。
13. Building MoE LLMs:如何从 Dense LLM 构造 MoE?【重要程度:★★★★★】
课件介绍两类方法:
text
Sparse transformation
├── Sparse Upcycling
└── Sparse Splitting13.1 Sparse Upcycling
Sparse Upcycling 的做法是:
也就是把 pretrained dense model 里的 FFN 复制多份,作为多个 experts。
优点:
- 可以复用 dense model 的 pretrained knowledge。
- 比从零开始训练 MoE 更经济有效。
缺点:
即如果复制成 个 experts,总参数量显著增加,带来更高 storage 和 communication cost。
直觉:
text
原本一个 FFN 老师
复制成多个专家老师
每个专家从相同知识起步,再继续分化训练13.2 Sparse Splitting
Sparse Splitting 的做法是:
即把原来的 FFN 切成多个专家,而不是复制。
优点:
同时 inference 时只激活一部分 experts,因此 activated parameters 下降。
缺点:
每个 expert 只有原 FFN 的:
容量,所以单个 expert 表达能力有限。
对比:
| 方法 | 如何构造 experts | 总参数量 | 激活参数 | 优点 | 缺点 |
|---|---|---|---|---|---|
| Sparse Upcycling | 复制 FFN | 增加 | 减少 | 继承预训练知识,容量大 | 存储和通信成本高 |
| Sparse Splitting | 切分 FFN | 不变 | 减少 | 参数不增加,推理更省 | 每个 expert 容量下降 |
14. Case Study:Mixtral / Qwen-MoE / LLaMA-MoE【重要程度:★★★☆☆】
14.1 Mixtral
Mixtral 是 Sparse Upcycling 的代表。课件提到:
在多个任务上强于 LLaMA 2 70B。
只有约 39B active parameters,但在多个 benchmark 上超过更大的 dense models,例如 Command R+ 104B 和 LLaMA 2 70B。
重点不是背具体数字,而是理解:
MoE 的优势来自:
14.2 Qwen-MoE
课件提到 Qwen-MoE:
它从 Qwen-1.8B upcycled 而来,使用 shared experts 和 routed experts。
课件中还强调:
14.3 LLaMA-MoE / Sparse Splitting
LLaMA-MoE 从 LLaMA-2-7B 出发,将 FFN split into multiple experts。它的重点是:
text
总参数规模类似
但每次只激活部分专家这类方法更适合参数预算固定的场景。
15. Quiz 解析【重要程度:★★★★☆】
Q1
Creating multiple experts from an existing LLM can be done by copying the original feed-forward network several times.
答案:True。
这就是 Sparse Upcycling。
Q2
An MoE can select only 1 out of multiple experts per token.
课件答案处写成 F,但从技术事实上看,这句话本身应该是 True,因为 Top-1 routing / Switch Transformer 正是每个 token 只选一个 expert。
这里我认为课件 quiz 的答案可能有排版或题意问题。如果它想问的是 “MoE must select only 1 expert per token”,那答案才是 False。因为 MoE 也可以 Top-2 / Top-k。
所以考试时要看英文题干:
Q3
If an expert is not selected for generating token during training, that expert won’t be used in generating future tokens starting from .
答案:False。
原因是 routing 是 token-level、context-dependent 的。某个 expert 没有被当前 token 选中,不代表它未来不会被其他 token 选中。每一步 token 的 hidden state 不同,router 的选择也可能不同。
16. 总结:本讲最重要的考试抓手
MoE 的一句话定义:
最核心的矛盾:
方法演进主线:
text
Dense model 太贵
→ MoE 只激活部分专家
→ Top-1 最省但 collapse
→ Top-2/Top-k 缓解 collapse 但成本高
→ aux loss 鼓励负载均衡
→ BASE routing 强制均衡但计算贵
→ RL routing 直接优化离散选择但高方差
→ Sparse Upcycling / Splitting 解决如何构造 MoE LLM最高优先级需要掌握:
- MoE 的基本输出公式。
- Router / gating network 的作用。
- Top-1 与 Top-2 routing 的优缺点。
- Routing collapse 的含义。
- Auxiliary load balancing loss 中 和 的区别。
- Sparse Upcycling 与 Sparse Splitting 的区别。
- Shared experts 与 routed experts 的区别。