1.1. MoE 并行
1.1.1. MoE的概念和作用
MoE(Mixture of Experts)是一种深度学习模型架构,它通过将大模型拆分成多个小模型(专家)来解决模型规模扩展导致的训练成本增加问题。
这种架构允许在每轮迭代中根据样本激活一部分专家进行计算,从而节省计算资源。
MoE 引入了可训练的门(gate
)机制,以确保计算能力的优化。
与传统的密集模型不同,MOE 通过门控网络决定哪些专家网络参与计算,实现了超大规模稀疏模型的训练。
1.1.2. MoE 层的计算过程
MoE 层的计算过程涉及对样本进行门控计算,然后通过 Softmax 处理获得样本被分配到各个专家的权重。 接着,只选择前 k 个最大权重的专家进行计算,最终的计算结果是这些选中专家网络输出的加权和。 这一过程不仅提高了模型的计算效率,还通过稀疏性减少了模型的计算负担。
1.1.3. MoE 分布式并行策略
在分布式训练中,MoE 架构可以通过数据并行和模型并行两种策略实现。 在数据并行策略中,门网络和专家网络被复制地放置在各个运算单元上,这种方式对现有代码的侵入性较小,但专家的数量受到单个计算单元内存大小的限制。 模型并行策略则是将门网络复制放置,而专家网络独立放置在各个计算单元上,这需要额外的通信操作,但可以支持更多的专家网络同时训练。 这两种策略各有优势,需要根据具体的模型和设备拓扑来选择最合适的并行策略。
1.1.4. 业界大模型的 MoE 并行方案
业界已经有一些大模型采用了 MoE 并行方案,如 GShard、Switch-Transformer 和 GLaM。 GShard 将 MoE 应用于 Transformer,并引入了 Expert capacity balancing 等设计来优化模型。 Switch-Transformer 简化了 MoE 的 routing 算法,提高了计算效率。 GLaM 是 Google 推出的超大模型,通过使用 Sparse MoE 设计,在不显著增加计算成本的情况下,实现了模型参数量的大幅增加。这些方案展示了MOE在构建大规模模型中的重要性和潜力。
1.1.5. AI 训练框架中的 MoE 并行训练
在 AI 训练框架中,MoE 并行训练也得到了广泛的应用。 例如,PaddlePaddle 框架提供了 MoE 并行的适配和训练示例,展示了如何在动态图模式下使用 PaddlePaddle 进行 MoE 架构的训练。 DeepSpeed 框架也支持 MoE 并行,并提供了多种并行形式,可以同时利用 GPU 和 CPU 内存。 这些框架的支持使得 MoE 并行训练变得更加便捷和高效。
Ref: 混合专家模型 (MoE) 详解