【大规模训练】混合专家系统

0 概述

混合专家系统(Mixture of Experts, MoE)是在神经网络 (Neural Network, NN) 领域发展起来的一种集成学习(Ensemble Learning) 技术。传统的深度学习模型在训练时,对于每个输入样本,整个网络都会参与计算。随着模型越来越大,训练使用的样本数据越来越多,训练的开销越来越难以承受。而 MoE 可以动态激活部分神经网络,从而实现在不增加计算量的前提下大幅度增加模型参数量。MoE 技术目前是训练万亿参数量级模型的关键技术。MoE 将预测建模任务分解为若干子任务,在每个子任务上训练一个专家模型(Expert Model),开发一个门控模型(Gating Model),该模型根据要预测的输入来学习信任哪个专家,并组合预测结果。尽管该技术最初是使用神经网络专家和门控模型来描述的,但它可以推广到使用任何类型的模型。

1 子任务和专家

一些预测建模任务非常复杂,因此需要尽可能的把它们划分为子任务来处理。这是解决问题的一种分治方法,是许多预测建模自动化方法以及更广泛地解决问题的基础。例如,可以根据问题的一些领域知识将输入特征空间划分为子空间。然后可以在问题的每个子空间上训练模型,实际上是特定子问题的专家。然后,模型会学习调用哪个专家来预测未来的新示例。

2 混合专家系统

混合专家系统 (Mixture of Experts),简称 MoE 或 ME,是一种集成学习技术,它实现了在预测建模问题的子任务上培训专家的想法。在神经网络社区中,研究人员研究了分解输入空间的 MoE 方法,以便每个专家检查空间的不同部分,门控网络负责组合各种专家。下图描述了 MoE 的基础架构。

图片

在 MoE 架构中,一组专家和一个门控相互合作,通过将输入空间划分为一组嵌套的区域来解决非线性监督学习问题,如下图所示。门控对整体输入空间进行软分割,专家模型在这些区域的分区中学习特定的参数。可以使用期望最大化 (Expectation Maximization, EM) 算法来学习专家模型和门控模型中的这些参数。

图片

上图是 MoE 的简化非线性分类示例。蓝色圆圈和红色菱形分别属于第 1 类和第 2 类,它们呈现非线性分类示例。门控进行软划分,定义了各个专家意见可信的区域,即在门控线的右边,第一个专家负责,在门控线的左边,第二个专家负责。通过这种分治的方法,非线性分类问题已被简化为两个线性分类问题。

MoE 包含四个要素:

  1. 将任务划分为子任务
  2. 为每个子任务开发专家
  3. 使用门控模型来决定使用哪个专家
  4. 池化预测和门控模型输出以进行预测

子任务

第一步是将预测建模问题划分为子任务。这通常涉及使用领域知识。例如,可以将图像划分为单独的元素,例如背景、前景、对象、颜色、线条等。MoE 采用分治的策略,将一项复杂的任务分解为几个更简单、更小的子任务,并针对不同的子任务开发个体学习者(称为专家)进行训练。对于那些将任务划分为子任务不明显的问题,可以使用更简单、更通用的方法。例如,可以想象一种方法,将输入特征空间按列组划分,或者根据标准分布的距离度量、内点和异常点等来分离特征空间中的示例。在 MoE 系统中,一个关键问题是如何找到任务的自然划分,然后从子解决方案中得出整体解决方案。

专家模型

接下来,为每个子任务设计一个专家。MoE 方法最初是在人工神经网络领域开发和探索的,因此传统上,专家本身是用于预测回归情况下的数值或分类情况下的类别标签的神经网络模型。专家可以是任何模型,例如:支持向量机器 (Support Vector Machines, SVM)、高斯过程 (Gaussian processes, GP) 、隐藏马尔可夫模型(hidden Markov models, HMM)、卷积神经网络(Convolutional Neural Networks, CNN)、Transformer、ViT(Vision Transformer)。

门控模型

门控模型用于解释每个专家所做的预测,并帮助决定对给定输入信任哪个专家。这被称为门控模型或门控网络,因为它传统上是一个神经网络模型。门控网络将提供给专家模型的输入模式作为输入,并输出每个专家在对输入进行预测时应该做出的贡献。由门控网络确定的权重是根据给定的输入动态分配的,因为 MoE 系统有效地学习了每个集成成员学习了特征空间的哪一部分。门控网络是 MoE 的关键,并且门控模型有效地学习为给定输入选择类型子任务,反过来,专家可以信任以做出强有力的预测。MoE 也可以看作是一种分类器选择算法,其中单个分类器被训练成为特征空间某些部分的专家。当使用神经网络模型时,门控网络和专家一起训练,以便门控网络学习何时信任每个专家进行预测。这种训练过程传统上是使用期望最大化 (Expectation Maximization, EM) 来实现的。门控网络可能有一个 softmax 输出,它为每个专家提供类似概率的置信度分数。一般来说,训练过程试图实现两个目标:对于给定的专家,找到最优的门控函数;对于给定的门控函数,针对门控函数指定的分布训练专家。

池化方法

最后,MoE 必须做出预测,这是通过池化或聚合机制实现的。这可能就像选择门控网络提供的具有最大输出或置信度的专家一样简单。或者,可以进行加权和预测,明确地结合每个专家的预测和门控网络估计的置信度。也可能存在其他有效利用预测和门控网络输出的方法。然后,池化/组合系统可以选择具有最高权重的单个分类器,或者计算每个类的分类器输出的加权和,并选择接收最高加权和的类。

下图是用于分类的 MoE 架构。在分类模型中,每个专家产生与分类一样多的输出。

图片

3 层级混合专家系统

层级混合专家系统 (Hierarchical Mixtures of Experts, HME) 包含多个层级的 MoE 系统。下图是两级 MoE,在这个例子中,图中两个 MoE 底部的组件与顶部的门控组合产生 HME 系统。底部的每个 MoE 由一个门控和两个专家组成。

图片

4 混合专家系统和决策树

决策树使用分治方法来拟合特征空间,每个子树都可以被认为是一个子模型。决策树具有计算可扩展性、处理混合类型数据、处理缺失值和处理不相关输入的潜在优势。然而,决策树的局限性是预测精度低和方差高。MoE 可以被视为决策树建模的统计方法,其中决策被视为隐藏的多项式随机变量。因此,MoE 具有决策树的优势,但通过其软边界、较低的方差和允许推理程序、不确定性度量和贝叶斯方法的概率框架对它们进行了改进。决策树可以通过组合形成随机森林,以提高单个决策树的性能并提高预测准确性,同时保持决策树的其他优势。类似地,MoE 可以集成门控函数(置信度函数),MoE 已经被证明可以为专家的输出提供有效的动态组合。在设计 MoE 系统时,可以采用类似的递归分解方法将预测建模任务分解为子问题,这通常被称为 HME。HME 过程可以看作是基于树的方法的一种变体,主要区别在于树分裂不是硬决策,而是软概率决策。与决策树不同,将任务划分为子任务通常是明确的和自上而下的。此外,与决策树不同,MoE 试图调查所有专家子模型,而不是单个模型。

5 业界研究进展

MMoE 在推荐领域中的应用

在推荐场景中,用户有点击、点赞、收藏、分享等一系列行为。单目标点击率(Click-Through-Rate,CTR)优化到一定程度之后,往往需要考虑通过多目标优化来进一步提升用户体验。因此将用户的多种行为归纳到一个模型里进行学习就是推荐领域研究的多任务学习。多任务学习中最经典的共享底部(Shared Bottom) 神经网络结构如下图所示:

图片

在多任务学习不断改进的过程中,推荐算法的研究人员发现将 MoE 中的多专家机制应用到多任务学习中,刚好可以解决多任务间的差异问题,而且不会增加很大的计算消耗。使用专家网络组成的神经网络结构替换掉 Shared Bottom 部分,再加上门控网络,就构成了 MoE 结构的多任务学习网络。

图片

MMoE(Multi-gate Mixture-of-Experts)其实是 MoE 针对多任务学习的变种和优化。不同任务可以通过调整专家网络的权重实现对专家网络的选择性利用,不同任务对应的门控网络可以学习到不同的专家组合模式,因此 MMoE 模型可以兼顾子任务间的差异性和相关性。在推荐场景中取得了较大的成功。

超大规模视觉模型 V-MoE

Vision Transformers(ViT)是计算机视觉领域著名的模型之一,它使用从整体图片上切分出来的多个片段来作为 Transformer 的输入。稠密模型总是受计算量限制,网络规模难以大幅度提升,但增强模型的泛化能力和稳健性又离不开大模型的支持。谷歌大脑的研究者受 MoE 的启发,提出了一种基于稀疏专家网络的新视觉架构 V-MoE(Vision MoE),打开了视觉模型网络规模的天花板,开辟了新的研究方向。ViT 将整个图像分成大小相等的片段,这些片段被投影到 Transformer 的隐藏层,Transformer 主要由交替的自注意力和多层感知器(MultiLayer Perceptron,MLP)组成。MLP 有两层网络和一个激活函数 GeLU。为了扩展视觉模型的规模,V-MoE 将 ViT 架构中的一些密集前馈层(FFN)替换为独立的专家网络。路由层为图像中的每个片段选择对应的专家。一个图像中的不同片段既可能路由到不同的专家,每个片段也可能路由到多个专家。在实践中,由于硬件的限制,使用动态大小的缓冲区通常无法做到很高的使用效率,因此模型通常为每个专家预分配缓冲区容量。一旦缓冲区满,超出的图像片段会被丢弃。谷歌大脑的研究人员通过将总的缓冲区容量降低到要处理的图像片段数量以下,模型被迫跳过处理专家层中的一些图像片段。V-MoE 的创新之处在于,模型学习了图像片段的重要性分数,将之前随机丢弃图像片段的模式改造成了丢弃分数较低的图像片段。这样保证高质量的预测,同时节省了大量算力。谷歌大脑的研究者发现,在给定训练的计算量时,稀疏模型的效果显著优于稠密模型。为了探索V-MoE 的极限,他们在 JFT-300M 扩展数据集上训练了一个具有 150 亿参数、24 个 MoE 层的模型。这个迄今为止最大的视觉模型在 ImageNet 上实现了 90.35% 的 Top-1 准确率。

FastMoE

FastMoE 是智源研究院于 2020 年发起的超大规模预训练模型研发项目“悟道”的最新成果。它主要关注两方面的问题:(1)如何将MoE模型训练的更快;(2)如何使得 MoE 模型训练框架开箱即用。FastMoE 简单易用,它既可以作为 PyTorch 网络中的一个模块使用,也可以用来改造现有网络中的某些层:将选中的网络复制多份作为多个专家网络,然后再引入门网络,就变成了 MoE 网络。FastMoE 还非常灵活,既可以支持将任意的神经网络模块作为专家网络,也支持任意的神经网络模块作为门网络。在性能方面,一般来说若简单地使用 PyTorch 训练 MoE,门网络会使得批量样本被打散,GPU 算力不能被充分利用。为了提升训练性能,FastMoE 实现了以下几个策略:

  1. 对批量样本按照专家进行分类,使得属于每个专家的样本依然是批量的形式。
  2. 挖掘专家之间的并行性,使用不同的 cuda stream 来计算专家网络。
  3. 得益于 NCCL 支持了 p2p 和 all2all 通信,FastMoE 使用 scatter-expert-gather 模式实现多 GPU 之间并行计算不同的专家网络。FastMoE 是以 PyTorch 插件的方式实现的,Python 部分分为三层:(1)核心层是通用的 FMoE 模块,它实现了 scatter-expert-gather 的计算模式。专家网络由用户定义,支持任意的神经网络模块,它的输入是某个专家网络的整个批量数据,输出的整个批量数据经过专家网络后对应的输出。(2)模型层是 FMoETransformerMLP 模块,它利用线性层 FMoELinear 实现了一个 Transformer 中的两层MLP 模块。这里既支持自定义激活函数,也支持自定义中间隐层的大小。(3)支持 Megatron 的应用层是 MegatronMLP 和 fmoefy 函数。MegatronMLP 针对 Megatron 对于 mlp 层的接口进行了适配,而 fmoefy 函数实现了将 megatron 的 model 中的 MLP层用 MegatronMLP 进行替换。此外,为了定制化同步参数,FastMoE 提供了一个额外的 DistributedDataParallel(DDP)模块来代替Megatron 或 PyTorch 的 DDP,通过一些独特的 tag 来决定梯度同步的范围。

6 总结

本文介绍了集成学习的 MoE 方法。具体来说:(1)集成学习的一种直观方法包括将任务划分为子任务并在每个子任务上训练专家。(2)MoE 是一种集成学习方法,旨在使用专家模型在子任务方面明确解决预测建模问题。同时,本文还介绍了 MoE 的拓展,如:用于推荐场景的 MMoE,谷歌大脑提出的超大规模视觉模型 V-MoE,智源研究院提出的 FastMoE。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

资源分享

图片

大模型AGI学习包

图片

图片

资料目录

  1. 成长路线图&学习规划
  2. 配套视频教程
  3. 实战LLM
  4. 人工智能比赛资料
  5. AI人工智能必读书单
  6. 面试题合集

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

图片

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩

图片

3.LLM

大家最喜欢也是最关心的LLM(大语言模型)

图片

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值