MoE
Mixture of Experts (MoE) 混合专家模型
1. 概述 (Overview)
Mixture of Experts (MoE) 是一种基于 条件计算 (Conditional Computation) 的稀疏模型架构。其核心思想是:在一个模型中集成多个“专家”网络,但在处理特定的输入(如一个 Token)时,只激活其中的一小部分专家,从而在保持计算开销(FLOPs)不变的情况下,极大地扩展模型的参数总量。
核心优势
- 规模扩展性:可以构建拥有数万亿参数的模型,而推理成本仅相当于小型稠密模型。
- 专业化:不同的专家可以学习处理不同类型的输入(虽然这更多是自动形成的涌现属性)。
2. 具体实现逻辑 (Implementation Logic)
MoE 层通常替换 Transformer 结构中的标准 前馈网络 (FFN/MLP) 层。一个标准的 MoE 层由两部分组成:
2.1 门控网络 / 路由 (Gating Network / Router)
门控网络决定了输入的 Token $x$ 应该发送给哪些专家。
- 计算公式: 设 $G(x)$ 为门控网络的输出,是一个 $n$ 维向量($n$ 为专家总数),$E_i(x)$ 为第 $i$ 个专家的输出。 $$ y = \sum_{i=1}^{n} G(x)_i E_i(x) $$
- 常用路由策略:
- Noisy Top-K Gating:为了引入探索性并防止过拟合,在计算路由得分前加入噪声。 $$ H(x)_i = (x \cdot W_{gate})_i + \text{StandardNormal}() \cdot \text{Softplus}((x \cdot W_{noise})_i) $$ 然后取前 $k$ 个最大值,其余设为 $-\infty$,最后经过 Softmax。
2.2 专家网络 (Experts)
每个专家通常是一个独立的 FFN 块。虽然理论上专家可以是任何结构,但在大模型中,它们通常是与原有 Transformer 层结构相同的 MLP 层。
3. 推理时的稀疏激活 (Sparse Activation during Inference)
这是 MoE 能够实现“大参数、快推理”的关键。
3.1 Top-K 路由机制
在推理阶段,路由只会选择评分最高的 $k$ 个专家(通常 $k=1$ 或 $k=2$)。
- 计算路径:
- 输入 $x$ 进入门控权重阵 $W_{gate}$。
- 计算每个专家的权重得分。
- 硬切分 (Hard Selection):只保留 Top-K 的索引,其余专家的权重直接忽略。
- 并行调度:仅将 $x$ 发送给被选中的 $k$ 个专家进行计算。
- 聚合:将 $k$ 个专家的输出按路由得分进行加权求和。
3.2 计算效率对比
| 特性 | 稠密模型 (Dense) | 稀疏模型 (Sparse MoE) |
|---|---|---|
| 总参数量 | $P$ | $N \times E$ (大幅提升) |
| 推理激活参数量 | $P$ | $k \times E$ (保持较小) |
| 计算量 (FLOPs) | 与参数量成正比 | 与激活专家数有关,远小于总参数量计算量 |
4. 训练挑战与优化
4.1 负载均衡 (Load Balancing)
如果门控网络总是偏向于少数几个“明星专家”,会导致其他专家得不到训练(Dead Experts),且计算会产生瓶颈。
辅助损失函数 (Auxiliary Loss)
通常引入 变异损失 (Importance Loss) 和 载荷损失 (Load Loss),强制令 Token 在所有专家之间均匀分布。
4.2 专家并行 (Expert Parallelism)
在分布式训练/推理中,不同的专家通常分布在不同的 GPU 上,这涉及复杂的 All-to-All 通信操作。
5. 典型案例
- Mixtral 8x7B:总参数约 47B,但每个 Token 仅激活 2 个专家(约 13B 活跃参数)。
- DeepSeek-V3:采用了更精细的 Multi-head Latent Attention (MLA) 配合 DeepSeekMoE,通过极高比例的稀疏度实现了极高性能。
- Grok-1:由 xAI 开发的大规模 MoE。