Skip to content

混合专家模型MoE架构详解

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. 为什么需要 MOE(Mixture-of-Experts)?

问题说明
训练成本平方级增长模型和训练样本的增加,导致了训练成本的平方级增长
规模扩展瓶颈如何在牺牲极少的计算效率的情况下,把模型规模提升上百倍、千倍?

2. MOE 的思路是什么样的?

MOE(Mixture-of-Experts)作为一种基于稀疏 MoE 层的深度学习模型架构,能够将大模型拆分成多个小模型(专家,expert),然后在每轮迭代过程中,根据样本数量决定激活一定量的专家用于计算,实现节省计算资源的目的。

核心机制:MOE 引入可训练并确保稀疏性的门(gate)机制,以保证计算能力的优化。

密集模型 vs MoE

与密集模型不同,MoE 将模型的某一层扩展为多个具有相同结构的专家网络(expert),并由门(gate)网络决定激活哪些 expert 用于计算,从而实现超大规模稀疏模型的训练。

MoE 计算过程

MoE 层的计算过程如下:

  1. 首先对样本 x 进行门控计算,W 表示权重矩阵
  2. 由 Softmax 处理后获得样本 x 被分配到各个 expert 的权重
  3. 然后只取前 k(通常取 1 或者 2)个最大权重
  4. 最终,整个 MoE Layer 的计算结果就是选中的 k 个专家网络输出的加权和

结构说明:以下图为例,模型包含 3 个模型层,将中间层扩展为具有 n 个 expert 的 MoE 结构,并引入 Gating network 和 Top-k 机制。

3. MOE 分布式并行策略

3.1 MOE + 数据并行

在数据并行模式下包含 MOE 架构,门网络(gate)和专家网络都被复制地放置在各个运算单元上。

特点说明
优点对现有的代码侵入性较小
缺点专家的数量受到单个计算单元(如 GPU)的内存大小限制

3.2 MOE + 模型并行

该策略中门网络依然是复制地被放置在每个计算单元上,但专家网络被独立地分别放置在各个计算单元上。

特点说明
优点可以允许更多的专家网络同时被训练,数量限制与计算单元的数量(如 GPU 数量)正相关
缺点需引入额外的通信操作,针对不同模型和设备拓扑需要专门的并行策略,侵入性更强

其他并行方案:除了上述两种方案,还可以使用 MOE + 数据并行 + 模型并行、MOE + ZeRO 增强的数据并行等。

4. MoE 大模型具备哪些优势?

序号优势说明
1训练速度更快,效果更好稀疏激活机制使得训练效率大幅提升
2相同参数,推理成本低每个 token 只激活部分专家,推理时计算量更小
3扩展性好允许模型在保持计算成本不变的情况下增加参数数量,能够扩展到万亿参数模型
4多任务学习能力强如 Switch Transformer 在所有 101 种语言上都显示出了性能提升

5. MoE 大模型具备哪些缺点?

序号缺点说明
1训练稳定性MoE 在训练过程中可能会遇到稳定性问题
2通信成本在分布式训练环境中,专家路由机制可能会增加通信成本,尤其是在模型规模较大时
3模型复杂性MoE 的设计相对复杂,可能需要更多的工程努力来实现和优化
4下游任务性能由于稀疏性,使得在 Fine-tuning 过程中容易出现过拟合

6. MoE 为什么可以实现更大模型参数、更低训练成本?

原因说明
稀疏路由每个 token 只会选择 top-k 个专家进行计算,而非全部专家参与
混合精度训练使用 bfloat16 精度训练专家,同时对其余计算使用全精度,降低通信成本、计算成本和存储 tensor 的内存
多种并行策略可以使用模型并行、专家并行和数据并行,优化 MoE 的训练效率
负载均衡损失可提升每个 device 的利用率

7. MoE 如何解决训练稳定性问题?

可以通过以下方法提升训练稳定性:

  • 混合精度训练:如使用 bfloat16 精度
  • 更小的参数初始化:降低初始权重幅度
  • Router z-loss:专门针对路由器的损失函数

8. MoE 如何解决 Fine-Tuning 过程中的过拟合问题?

可以通过以下方法缓解过拟合:

方法说明
更大的 dropout主要针对 expert
更大的学习率加速收敛,减少过拟合风险
更小的 batch size增加训练随机性

现状:目前看到的主要是预训练的优化,针对 Fine-Tuning 的优化主要是一些常规的手段。