目录
  1. 1. 目录
  2. 2. 一、为什么需要 MoE:Dense 模型的瓶颈
    1. 2.1. 1.1 Dense 模型的扩展成本
    2. 2.2. 1.2 Sparse 模型的思路:有选择地激活参数
  3. 3. 二、MoE 的早期历史
    1. 3.1. 2.1 Mixture of Experts 的起源(1991 年)
    2. 3.2. 2.2 Shazeer 2017:大规模 MoE 的第一次突破
  4. 4. 三、Switch Transformers:将 MoE 引入 Transformer 时代
    1. 4.1. 3.1 核心架构
    2. 4.2. 3.2 负载均衡问题(Load Balancing)
    3. 4.3. 3.3 训练稳定性技术
    4. 4.4. 3.4 Switch Transformers 的规模
  5. 5. 四、Mixtral 8x7B:第一个广泛使用的开源 MoE 模型
    1. 5.1. 4.1 架构
    2. 5.2. 4.2 性能
  6. 6. 五、DeepSeekMoE:细粒度专家的突破
    1. 6.1. 5.1 标准 MoE 的专家利用率问题
    2. 6.2. 5.2 DeepSeekMoE 的细粒度设计
  7. 7. 六、DeepSeek-V2/V3:最先进的 MoE 实现
    1. 7.1. 6.1 DeepSeek-V2(2024)
    2. 7.2. 6.2 DeepSeek-V3 的 MoE 配置
    3. 7.3. 6.3 Auxiliary-Loss-Free 负载均衡
    4. 7.4. 6.4 Multi-Token Prediction(多 Token 预测)
  8. 8. 七、MoE 的分布式训练挑战
    1. 8.1. 7.1 专家并行(Expert Parallelism)
    2. 8.2. 7.2 负载均衡与 GPU 利用率
  9. 9. 八、MoE vs Dense:工程权衡全面分析
  10. 10. 九、DeepSeek-V3 完整 MoE 架构参数总结
  11. 11. 十、MoE 专家的专业化:实验证据
    1. 11.1. 10.1 专家分工的实验研究
    2. 11.2. 10.2 DeepSeekMoE 的专业化分析
  12. 12. 十一、MoE 的未来方向
MoE 稀疏架构深度解析

核心论文:

  • Switch Transformers: Scaling to Trillion Parameter Models(Fedus, Zoph, Shazeer, Google, 2021)arXiv:2101.03961
  • GLaM: Efficient Scaling of Language Models with Mixture-of-Experts(Du et al., Google, 2021)arXiv:2112.06905
  • Mixtral of Experts(Jiang et al., Mistral AI, 2024)arXiv:2401.04088
  • DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts(Dai et al., DeepSeek, 2024)arXiv:2401.06066
  • DeepSeek-V2(Chen et al., DeepSeek, 2024)arXiv:2405.04434
  • DeepSeek-V3 Technical Report(DeepSeek-AI, 2024)arXiv:2412.19437
  • Outrageously Large Neural Networks: The Sparsely-Gated MoE Layer(Shazeer et al., Google Brain, 2017)arXiv:1701.06538

目录

  1. 一、为什么需要 MoE:Dense 模型的瓶颈
  2. 二、MoE 的早期历史
  3. 三、Switch Transformers:将 MoE 引入 Transformer 时代
  4. 四、Mixtral 8x7B:第一个广泛使用的开源 MoE 模型
  5. 五、DeepSeekMoE:细粒度专家的突破
  6. 六、DeepSeek-V2/V3:最先进的 MoE 实现
  7. 七、MoE 的分布式训练挑战
  8. 八、MoE vs Dense:工程权衡全面分析
  9. 九、DeepSeek-V3 完整 MoE 架构参数总结
  10. 十、MoE 专家的专业化:实验证据
  11. 十一、MoE 的未来方向

一、为什么需要 MoE:Dense 模型的瓶颈

1.1 Dense 模型的扩展成本

在标准(Dense)Transformer 中,每个 token 的前向传播都需要通过所有的参数。这意味着:

  • 模型参数量增加 $N$ 倍 → 每次推理的计算量(FLOPs)也增加约 $N$ 倍
  • 推理延迟与参数量线性相关

对于一个 175B 参数的 GPT-3 模型,在 A100 GPU(312 TFLOPs/s,BF16)上,单次推理一个 token 大约需要:

$$\text{FLOPs} \approx 2 \times N = 2 \times 175 \times 10^9 = 350 \text{ GFLOPs}$$

延迟约 1.1ms/token(不含 KV Cache 读写)。

随着模型规模扩展,这个成本对实际部署造成了巨大压力:

  • 训练成本:随参数量和训练 tokens 线性增长
  • 推理成本:对每次用户查询都产生
  • 内存成本:70B 模型仅参数就需要约 140GB 显存(BF16)

1.2 Sparse 模型的思路:有选择地激活参数

MoE(Mixture of Experts)的核心思想:

不是让所有参数处理所有 token,而是根据 token 的内容,动态选择一部分参数(”专家”)来处理它。

这样:

  • 总参数量(模型容量)可以很大
  • 每次推理时实际激活的参数量(计算量)可以相对较小

一个极端的例子: DeepSeek-V3 有 671B 总参数,但每个 token 只激活约 37B 参数(约 5.5%)。在相同的推理计算量下,它比 37B 的 Dense 模型有更大的”知识库”。

二、MoE 的早期历史

2.1 Mixture of Experts 的起源(1991 年)

MoE 的概念最早由 Jacobs, Jordan, Nowlan, Hinton 在 1991 年的论文中提出,用于回归和分类任务:不同的”专家”网络专门处理输入空间的不同区域,一个”门控网络”决定哪些专家处理当前输入。

这个思想在接下来的 20 年里在机器学习中有零散应用,但没有引起广泛关注。

2.2 Shazeer 2017:大规模 MoE 的第一次突破

论文: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer(Shazeer et al., Google Brain, 2017)arXiv:1701.06538

Noam Shazeer(同时也是 Transformer 的共同作者)等人首次将 MoE 应用于大规模语言模型(基于 LSTM):

  • 使用 Top-K 门控:每个 token 只路由到 K 个专家($K=2$),而不是让所有专家都处理
  • 引入了辅助损失(Auxiliary Loss)来维持负载均衡:防止所有 token 都路由到同几个”受欢迎”的专家,导致其他专家被闲置
  • 展示了在相同计算量下,MoE 模型的 perplexity 低于 Dense 模型

这篇论文奠定了后续所有 MoE 工作的基础,但当时影响有限,直到 Switch Transformers 才真正引起广泛关注。

三、Switch Transformers:将 MoE 引入 Transformer 时代

论文: Switch Transformers: Scaling to Trillion Parameter Models(Fedus, Zoph, Shazeer, Google, 2021)arXiv:2101.03961

3.1 核心架构

Switch Transformers 将标准 Transformer 中的 FFN(前馈网络)层替换为 MoE 层。其他组件(注意力层、归一化层)保持不变。

标准 Transformer FFN:

所有 token → 单一 FFN(W1, W2)→ 所有 token 的输出

Switch Transformer MoE FFN:

每个 token → Router(决定专家) → Expert_i(Wi_1, Wi_2)→ 该 token 的输出

Router 的工作机制:

对于输入 token 的表示 $x \in \mathbb{R}^{d_{model}}$,Router 计算每个专家的路由概率:

$$h(x) = W_r \cdot x \in \mathbb{R}^E \quad (E \text{ 是专家数量})$$

$$p_i = \text{softmax}(h(x))_i = \frac{e^{h_i(x)}}{\sum_{j=1}^E e^{h_j(x)}}$$

Switch Transformer 使用 Top-1 路由(每个 token 只去一个专家,$K=1$):

$$\text{Expert index} = \arg\max_i p_i$$

$$\text{token output} = p_{\text{selected}} \cdot \text{Expert}_{\text{selected}}(x)$$

为什么用 Top-1?作者发现 Top-1 路由比 Top-2 计算更简单,且在大规模时效果接近。

3.2 负载均衡问题(Load Balancing)

核心挑战: 如果让路由自由发展,模型会形成”专家崩塌”(Expert Collapse)——所有 token 都路由到少数几个”受欢迎”的专家,大多数专家几乎不工作。这造成:

  • 计算资源浪费(大部分专家空转)
  • 专家没有机会学习(需要接受 token 才能通过梯度学习)
  • 最终性能下降(相当于回到了小模型)

辅助损失(Auxiliary/Load Balancing Loss):

为了鼓励均匀分配,Switch Transformers 加入辅助损失:

设 $f_i$ 是路由到专家 $i$ 的 token 比例(实际分布),$P_i$ 是模型认为应该路由到专家 $i$ 的概率均值,辅助损失为:

$$\mathcal{L}_{\text{aux}} = \alpha \cdot E \cdot \sum_{i=1}^E f_i \cdot P_i$$

这个损失在 $f_i = 1/E$(均匀分布)时最小,因此鼓励负载均衡。$\alpha$ 是平衡系数(通常取 $10^{-2}$)。

专家容量(Expert Capacity):

每个专家在一个 batch 中能处理的 token 数量有上限(容量 $C$):

$$C = \frac{\text{Tokens per batch}}{E} \times \text{capacity factor}$$

如果某个专家接收到超过 $C$ 个 token,多余的 token 会被跳过(overflow),直接通过残差连接传递。这是一个硬性工程约束,防止单个专家计算时间过长。

3.3 训练稳定性技术

MoE 模型的训练比 Dense 模型更不稳定(更容易出现 Loss Spike)。Switch Transformers 提出了几个解决方案:

  1. 专家 Dropout(Expert Dropout): 在训练时,对 FFN 内的参数使用更高的 dropout 率,提升正则化

  2. 初始化: Router 权重 $W_r$ 初始化时使用更小的方差($\sigma = 0.1$,而非标准的 $1/\sqrt{d_{model}}$),防止训练初期路由过于极端

  3. BFloat16 精度: 与 Dense 模型相比,MoE 中的路由计算对精度更敏感,使用 BFloat16 而非 Float16 可以减少上溢/下溢

3.4 Switch Transformers 的规模

Switch Transformers 训练了高达 1.6T 参数的模型(使用 2048 个专家),每次推理激活约 1/2048 的参数。在固定计算量下,比 Dense T5-11B 模型的 perplexity 低约 0.7 nats。

这证明了超大规模 MoE 的可行性,为后续工作奠定了基础。

四、Mixtral 8x7B:第一个广泛使用的开源 MoE 模型

论文: Mixtral of Experts(Jiang et al., Mistral AI, 2024)arXiv:2401.04088

4.1 架构

Mixtral 8x7B 是 Mistral 7B 的 MoE 扩展版本:

  • 8 个专家(Expert),每个专家是一个标准的 FFN 网络(与 Mistral 7B 同尺寸)
  • Top-2 路由:每个 token 路由到 2 个专家,两个专家的输出加权平均
  • 总参数:约 46.7B(8 × 7B,但各层共享注意力机制)
  • 每次激活参数:约 12.9B(2 × 7B,减去共享部分)

路由机制:

$$G(x) = \text{Softmax}(\text{TopK}(x \cdot W_g, 2))$$

其中 TopK 函数保留前 2 个最大值,其余置为 $-\infty$(softmax 后变为 0):

$$y = \sum_{i=1}^8 G_i(x) \cdot E_i(x)$$

只有 $G_i(x) > 0$ 的专家才实际执行计算,其余不参与。

4.2 性能

与 Llama 2 70B 的对比:

Benchmark Llama 2 70B Mixtral 8x7B
MMLU 68.9% 70.6%
HellaSwag 87.3% 86.7%
HumanEval 29.9% 40.2%
Math 11.1% 22.2%

Mixtral 8x7B 在相同推理计算量下(12.9B vs 70B 激活参数,推理快约 5.4 倍),在大多数 benchmark 上超越或持平 Llama 2 70B。

开源意义: Mixtral 8x7B 是第一个广泛开源且高性能的 MoE 模型,证明了 MoE 架构的实用性,推动了社区对 MoE 的深入研究。

五、DeepSeekMoE:细粒度专家的突破

论文: DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models(Dai et al., DeepSeek-AI, 2024)arXiv:2401.06066

5.1 标准 MoE 的专家利用率问题

标准 Top-K MoE(如 Mixtral 8x7B)的一个潜在问题:每个专家负责处理种类繁多的 token,每个专家需要”同时擅长很多事”,难以真正专业化。

类比: 如果你需要解决各种复杂问题,与其使用 8 个”全能专家”,不如使用更多个各有专攻的”细分专家”——同样的总知识量,但每个专家可以更专注。

5.2 DeepSeekMoE 的细粒度设计

核心思路:将 $N$ 个大专家替换为 $mN$ 个小专家($m > 1$),同时激活 $mK$ 个小专家(总计算量相同,但专家更细化)。

数学上:

  • 标准 MoE:$N$ 个专家,每个维度 $d_{ff}$,激活 $K$ 个
  • DeepSeekMoE:$mN$ 个专家,每个维度 $d_{ff}/m$,激活 $mK$ 个

总计算量相同($K \times d_{ff} = mK \times d_{ff}/m$),但专家数量更多、每个更小、选择更多元。

额外创新:共享专家(Shared Expert)

DeepSeekMoE 发现,某些知识是所有 token 都需要的(如基本语法规则、通用世界知识),可以提取出来放在固定激活的”共享专家”中:

$$y = u \cdot \sum_{i=1}^{K_s} E_i^{shared}(x) + \sum_{j \in \text{Top-K}_r} g_j \cdot E_j^{routed}(x)$$

其中 $K_s$ 个共享专家始终激活,$K_r$ 个路由专家根据 token 内容选择。

效果:

  • 相同计算量下,DeepSeekMoE 的 perplexity 比标准 Top-2 MoE 低约 0.4 nats
  • 专家利用率(每个专家接收不同类型 token 的均匀性)显著提高,表明专家实现了更好的专业化

六、DeepSeek-V2/V3:最先进的 MoE 实现

6.1 DeepSeek-V2(2024)

论文: arXiv:2405.04434

DeepSeek-V2 首次提出了 MLA(Multi-head Latent Attention),与 DeepSeekMoE 结合,构成了 DeepSeek 系列的技术核心。

MoE 配置:

  • 总参数:236B
  • 每次激活:21B(约 8.9%)
  • 路由专家:每层 160 个,每 token 选 6 个(Top-6)
  • 共享专家:每层 2 个(始终激活)

6.2 DeepSeek-V3 的 MoE 配置

论文: arXiv:2412.19437

DeepSeek-V3 是目前公开的规模最大、技术细节最完整的顶级 MoE 模型。

MoE 配置:

  • 每层总专家数:256 个路由专家 + 1 个共享专家
  • 每 token 选择:Top-8 路由专家 + 1 共享专家 = 9 个专家
  • 专家 FFN 维度:$d_{ff}^{expert} = 2048$(较小)
  • 总激活参数:37B

架构公式:

$$y = E^{shared}(x) + \sum_{i \in \text{Top-8}} g_i \cdot E_i^{routed}(x)$$

其中 $g_i$ 是归一化后的路由权重:

$$g_i = \frac{s_i}{\sum_{j \in \text{Top-K}} s_j}, \quad s_i = \text{Sigmoid}(h_i(x))$$

注意:使用 Sigmoid 而非 Softmax 计算路由权重,然后对 Top-K 归一化。这个细节差异来自 DeepSeek 的实验发现:Sigmoid + 归一化比纯 Softmax 在深层 MoE 中更稳定。

6.3 Auxiliary-Loss-Free 负载均衡

DeepSeek-V3 最重要的创新之一: 去掉了辅助损失(Auxiliary Loss),改用 Bias 机制维持负载均衡。

背景: 辅助损失(Switch Transformer 提出)有一个已知问题——它与语言建模损失相互竞争,强化辅助损失会降低模型性能,而弱化它会导致负载不均衡,形成难以调节的权衡。

DeepSeek-V3 的 Bias 方法:

在路由逻辑分数 $h_i(x)$ 上加一个可调整的 bias 项 $b_i$:

$$\text{routing score}_i = h_i(x) + b_i$$

但 Top-K 选择后,实际使用的门控权重仍然基于原始 $s_i = \text{Sigmoid}(h_i(x))$(不含 bias)。

Bias 的更新规则(非梯度):

  • 如果专家 $i$ 在最近的训练步骤中过载(接收 token 太多):$b_i \leftarrow b_i - \gamma$
  • 如果专家 $i$ 在最近的训练步骤中欠载(接收 token 太少):$b_i \leftarrow b_i + \gamma$

这相当于一个简单的负反馈控制器,动态调整每个专家的”吸引力”,而不干扰语言建模损失的优化。

效果: 相比辅助损失方法,perplexity 提升约 0.3 nats(相同计算量下)。

6.4 Multi-Token Prediction(多 Token 预测)

DeepSeek-V3 引入了 Multi-Token Prediction(MTP) 训练目标:在预测下一个 token 的同时,也预测后续 2 个 token。

架构:

在标准的 Next Token Prediction 损失之外,DeepSeek-V3 使用了额外的预测头来预测位置 $t+1$ 和 $t+2$ 的 token:

$$\mathcal{L}_{\text{MTP}} = \mathcal{L}_1 + \lambda (\mathcal{L}_2 + \mathcal{L}_3)$$

其中 $\mathcal{L}_1$ 是标准 NTP 损失,$\mathcal{L}_2, \mathcal{L}_3$ 是预测后续 token 的损失,$\lambda$ 是权重系数(DeepSeek-V3 使用 $\lambda = 0.3$)。

动机(来自论文):

  1. 迫使模型”向前看”更多 token,学习更长期的依赖关系
  2. 额外的预测头在推理时可以用于推测解码(Speculative Decoding)——用额外预测头的输出作为”草稿 token”,然后让主模型验证,加速推理

训练效果: 在固定计算量下,MTP 训练使验证集 perplexity 降低约 0.5%。

七、MoE 的分布式训练挑战

7.1 专家并行(Expert Parallelism)

在分布式训练中,MoE 引入了一种特殊的并行策略:专家并行

将不同的专家分配到不同的 GPU 上:

GPU 0: Expert 0, 32, 64, ...
GPU 1: Expert 1, 33, 65, ...
...
GPU 31: Expert 31, 63, 95, ...

All-to-All 通信: 每个 token 需要路由到特定专家的 GPU,这需要全局的 All-to-All 通信,每层都需要两次(输入数据分发 + 输出数据聚合)。

通信瓶颈: All-to-All 通信的量与 token 数量和专家数量成正比。DeepSeek-V3 使用 256 个专家,All-to-All 通信成为训练效率的主要瓶颈之一。

DeepSeek-V3 的优化(Node-Limited Routing): 为减少跨节点通信(跨节点带宽远低于节点内带宽),DeepSeek-V3 设计了一个约束:每个 token 最多路由到 $M$ 个不同的节点($M=4$)。这减少了跨节点流量,同时通过足够多的专家总数(256 个)保持了足够的选择多样性。

7.2 负载均衡与 GPU 利用率

在 MoE 的批量推理中,不同专家接收到的 token 数量不均匀,导致部分 GPU 繁忙(处理热门专家),部分 GPU 空闲(处理冷门专家),GPU 利用率下降。

Expert Capacity 机制(见第三节)部分缓解了这个问题,但会导致溢出 token 信息损失。

DeepSeek-V3 的解决方案: 将负载均衡设计为训练时优化目标的一部分(通过 Auxiliary-Loss-Free 方法),同时在推理框架中实现动态调度,减少等待时间。

八、MoE vs Dense:工程权衡全面分析

维度 Dense 模型 MoE 模型
推理计算量(FLOPs/token) 高(与总参数量正比) 低(只激活部分专家)
推理内存带宽 较低(所有参数都被使用) 较高(需要加载所有专家,但只计算部分)
训练效率 高(无路由开销) 略低(额外的路由计算和通信)
模型容量(参数量) 受显存限制 可以更大(分布在多 GPU)
训练稳定性 较低(路由崩塌风险)
推理延迟(单次) 较低(无 All-to-All) 较高(专家并行通信开销)
推理吞吐量(批量) 受计算量限制 更高(相同计算量,更大容量)
参数效率 高(每个参数都用到) 较低(稀疏激活,部分参数利用率低)
工程复杂度 高(路由、负载均衡、专家并行)

结论: MoE 的核心优势是在相同推理计算量下提供更大的模型容量,代价是工程复杂度大幅提升。对于需要广博知识(多语言、多领域)同时要保持推理效率的场景,MoE 是理想选择。

九、DeepSeek-V3 完整 MoE 架构参数总结

以下数据来自 DeepSeek-V3 技术报告(arXiv:2412.19437):

整体架构:

  • Transformer 层数:61 层(其中前 3 层用 Dense FFN,后 58 层用 MoE FFN)
  • 总参数量:671B
  • 每次激活参数量:37B
  • 上下文长度:128K tokens

注意力层(使用 MLA):

  • Query 头数:128
  • 每头 Query 维度:128
  • KV 压缩维度(低秩):512(相比展开后的 16384 大幅压缩)

MoE 层(每层):

  • 共享专家数:1
  • 路由专家总数:256
  • 每 token 选择路由专家数:8
  • 每个专家的 FFN 维度($d_{ff}^{expert}$):2048
  • 负载均衡:Auxiliary-Loss-Free + Bias 机制

训练配置:

  • 训练数据:14.8T tokens
  • 批次大小:15,360 sequences × 4096 tokens = 62.9M tokens/step
  • 峰值学习率:$2.2 \times 10^{-4}$,余弦衰减
  • 优化器:AdamW,$\beta_1 = 0.9$,$\beta_2 = 0.95$,$\epsilon = 10^{-8}$
  • 精度:FP8(主要计算),BF16(梯度累加)
  • 训练硬件:2048 张 H800 GPU
  • 训练时长:约 2.788M GPU 小时

训练成本估算: 按 H800 GPU 租金约 $2/小时,约 550 万美元——远低于 GPT-4 等级模型的估计(数亿美元量级),主要归功于:

  1. MoE 架构减少了每步计算量
  2. FP8 精度将计算效率提升 1.5-2 倍
  3. DeepSeek 的工程优化(Auxiliary-Loss-Free 减少训练不稳定)

十、MoE 专家的专业化:实验证据

10.1 专家分工的实验研究

Mixtral 的技术报告分析了不同专家的激活分布,发现:

  • 语言专业化: 在处理不同语言(英语、法语、德语、中文)时,激活的专家集合有显著差异
  • 任务专业化: 处理代码和处理自然语言时,激活不同的专家组合
  • 层次专业化: 靠近输入的层(低层)的专家更关注语法/表层特征;靠近输出的层(高层)更关注语义/任务特征

10.2 DeepSeekMoE 的专业化分析

DeepSeekMoE 论文(arXiv:2401.06066)对专家专业化进行了定量分析:

专家专业化指数(Expert Specialization Index): 定义为某专家的 token 分布的 KL 散度,衡量该专家与均匀分布的偏差程度。指数越高,说明专家越专注于特定类型的 token。

实验发现:使用细粒度专家(更多、更小的专家)后,平均专业化指数提高了约 40%,说明专家确实实现了更精细的分工。

十一、MoE 的未来方向

稀疏度提升: 从目前的 “256 个专家,每次选 8 个”(3%)向更稀疏的方向探索,理论上允许更大的模型容量。

Mixture of Depths(MoD): 不只是在专家层面稀疏,在层(Layer)层面也稀疏——不是每个 token 都需要经过所有层,复杂的 token 经过更多层。这与 MoE 可以结合(MoE + MoD),进一步提高参数效率。

可解释的专家结构: 目前 MoE 的路由是”黑盒”的,研究人员正在尝试引导专家学习人类可理解的分工(如语言、领域、任务类型),提高可解释性。

专家通信(Expert Communication): 当前 MoE 的专家之间是独立的,但某些任务可能需要多个专家合作。允许专家之间信息交换可能进一步提升能力。

文章作者: Leo·Cheung
文章链接: http://tufusi.com/2025/05/20/MoE%E7%A8%80%E7%96%8F%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ONE·PIECE
打赏
  • 微信
  • 支付宝

评论