Skip to content

下面是 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 包含两个核心组件:

  1. Experts:多个子网络,通常是 FFN。
  2. 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 → FFN

Switch 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:

输出可以写成:

优点:

  1. 表达能力更强,因为每个 token 可以结合多个专家。
  2. 可以缓解 routing collapse,因为训练信号会分配给更多 experts。

缺点:

  1. 每个 token 激活两个 experts,FLOPs 增加。
  2. 分布式训练中,token 需要被发送到更多 devices,communication overhead 更大。

总结:

Routing每 token 激活专家数优点缺点
Top-11最省计算容易 routing collapse
Top-22表达力更强,负载更均衡计算和通信成本更高
Top-kk更灵活成本随 增加

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 的设计重点是区分:

  1. Shared experts
  2. 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 的优点是:

严格负载均衡。

缺点是:

  1. 需要求解 assignment problem,计算昂贵。
  2. 不适合 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 的优点是:可以直接建模离散选择。

缺点是:

  1. reward 通常稀疏。
  2. policy gradient 方差高。
  3. 训练不稳定。

因此 RL routing 在理论上更直接,但工程上不如 Top-k + auxiliary loss 常用。


13. Building MoE LLMs:如何从 Dense LLM 构造 MoE?【重要程度:★★★★★】

课件介绍两类方法:

text
Sparse transformation
        ├── Sparse Upcycling
        └── Sparse Splitting

13.1 Sparse Upcycling

Sparse Upcycling 的做法是:

也就是把 pretrained dense model 里的 FFN 复制多份,作为多个 experts。

优点:

  1. 可以复用 dense model 的 pretrained knowledge。
  2. 比从零开始训练 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

最高优先级需要掌握:

  1. MoE 的基本输出公式。
  2. Router / gating network 的作用。
  3. Top-1 与 Top-2 routing 的优缺点。
  4. Routing collapse 的含义。
  5. Auxiliary load balancing loss 中 的区别。
  6. Sparse Upcycling 与 Sparse Splitting 的区别。
  7. Shared experts 与 routed experts 的区别。

Static academic notes built with VitePress and KaTeX.