混合专家模型(MoE)成为最近关注的热点。
先是 Reddit 上一篇关于 GPT-4 结构的猜测帖,暗示了 GPT-4 可能是由 16 个子模块组成的专家模型(MoE)的混合体。据说,这 16 个子模块中的每一个 MoE 都有 1110 亿个参数(作为参考,GPT-3 有 1750 亿个参数)。尽管不能 100% 确定,但 GPT-4 是一个 MoE 组成的集群这个事很可能是真的。
然后是法国 AI 公司 MistralAI 发布了全球首个基于混合专家技术的大模型 Mistral-8x7B-MoE,是 8 个 70 亿参数规模大模型的混合。
主要特点如下:
- 它可以非常优雅地处理 32K 上下文数据;
- 除了英语外,在法语、德语、意大利语和西班牙语表现也很好;
- 在代码能力上表现很强;
- 指令微调后 MT-Bench 的得分 8.3 分(GPT-3.5 是 8.32、LLaMA2 70B 是 6.86);
Mistral-7B×8-MoE 是首个被证明有效的开源的 MoE LLM,相比于早期的 Switch Transformer、GLaM 等研究,Mistral-7B×8-MoE 证明了 MoE 真的可以落地,且效果远好于相同激活值的 Dense 模型。
而在最近的一个评测中,Mistral-8x7B-MoE 经过微调后的表现超过了 Llama2-65B。
到底什么是 MoE,它会是未来大模型训练的新方向吗?
Founder Park 整理了公众号「HsuDan」、「深度人工智能」对于 MOE 的介绍。更详细的技术解读,可以参见 Hugging Face 官方对 MoE 的详细技术解读。
01
MoE 的前世今生
混合专家模型(MixtureofExperts:MoE)的思想可以追溯到集成学习,集成学习是通过训练多个模型(基学习器)来解决同一问题,并且将它们的预测结果简单组合(例如投票或平均)。集成学习的主要目标是通过减少过拟合,提高泛化能力,以提高预测性能。常见的集成学习方法包括 Bagging,Boosting 和 Stacking。
集成学习在训练过程中,利用训练数据集训练基学习器,基学习器的算法可以是决策树、SVM、线性回归、KNN 等,在推理过程中对于输入的 X,在每个基学习器得到相应的答案后将所有结果有机统一起来,例如通过求均值的方法解决数值类问题,通过投票方式解决分类问题。
MoE 和集成学习的思想异曲同工,都是集成了多个模型的方法,但它们的实现方式有很大不同。与 MoE 的最大不同的地方是集成学习不需要将任务分解为子任务,而是将多个基础学习器组合起来。这些基础学习器可以使用相同或不同的算法,并且可以使用相同或不同的训练数据。
MoE 模型本身也并不是一个全新的概念,它的理论基础可以追溯到 1991 年由 MichaelJordan 和 GeoffreyHinton 等人提出的论文,距今已经有 30 多年的历史,但至今依然在被广泛应用的技术。这一理念在被提出来后经常被应用到各类模型的实际场景中,在 2017 年得到了更进一步的发展,当时,一个由 QuocLe,GeoffreyHinton 和 JeffDean 领衔的团队提出了一种新型的 MoE 层,它通过引入稀疏性来大幅提高模型的规模和效率。
大模型结合混合专家模型的方法属于老树发新芽,随着应用场景的复杂化和细分化,大模型越来越大,垂直领域应用更加碎片化,想要一个模型既能回答通识问题,又能解决专业领域问题,似乎 MoE 是一种性价比更高的选择。在多模态大模型的发展浪潮之下,MoE 大有可能成为 2024 年大模型研究的新方向之一,而大模型也会带着 MoE,让其再次伟大。
下面是近些年一部分 MoE 的应用发展事件,可以看出早期 MoE 的应用和 Transformer 的发展时间节点差不多,都是在 2017 年左右。
2017 年,谷歌首次将 MoE 引入自然语言处理领域,通过在 LSTM 层之间增加 MoE 实现了机器翻译方面的性能提升;
2020 年,Gshard 首次将 MoE 技术引入 Transformer 架构中,并提供了高效的分布式并行计算架构,而后谷歌的 Swtich Transformer 和 GLaM 则进一步挖掘 MoE 技术在自然语言处理领域中的应用潜力,实现了优秀的性能表现;
2021 年的 V-MoE 将 MoE 架构应用在计算机视觉领域的 Transformer 架构模型中,同时通过路由算法的改进在相关任务中实现了更高的训练效率和更优秀的性能表现;
2022 年的 LIMoE 是首个应用了稀疏混合专家模型技术的多模态模型,模型性能相较于 CLIP 也有所提升。
近期 Mistral AI 发布的 Mistral 8x7B 模型是由 70 亿参数的小模型组合起来的 MoE 模型,直接在多个跑分上超过了多达 700 亿参数的 Llama 2。
将混合专家模型(Mixture of Experts:MoE)应用于大模型中似乎是不一个不错的想法,Mistral AI 发布的 Mistral 8x7B 模型在各项性能和参数上证明了这一点,使用了更少的参数却获得了远超于 Llama 2 的效果,这为大模型的发展提供了一种新的思路。
02
MoE 的核心思想:术有专攻
「学有所长,术有专攻」,古人早已将告诉过我们如何将复杂的事物简单化处理。大模型从早期只处理文本数据,到后来需要同时处理图像数据和语音数据的发展过程中,其参数量和模型结构设计也越来复杂和庞大。
如果说单模态大模型是一个「特长生」,那么多模态大模型就是一个「全能天才」,想要让这个「全能天才」学习的更好,那么就需要对其学习任务分类,安排不同科目的老师进行学习任务的辅导,这样才能让其高效快速的学习到各科的知识,在考试的时候才有可能在各科成绩上有优异的表现。
混合专家模型(MixtureofExperts:MoE)正是这样一个培养「全能天才」的方法,其核心思想就是先把任务分门别类,然后分给各个「专家模型」进行解决。混合专家模型(MoE)是一种稀疏门控制的深度学习模型,它主要由一组专家模型和一个门控模型组成。MoE 的基本理念是将输入数据根据任务类型分割成多个区域,并将每个区域的数据分配一个或多个专家模型。每个专家模型可以专注于处理输入这部分数据,从而提高模型的整体性能。
MoE 架构的基本原理非常简单明了,它主要包括两个核心组件:GateNet 和 Experts。GateNet 的作用在于判定输入样本应该由哪个专家模型接管处理。而 Experts 则构成了一组相对独立的专家模型,每个专家负责处理特定的输入子空间。
门控模型(GateNet):混合专家模型中「门」是一种稀疏门网络,它接收单个数据元素作为输入,然后输出一个权重,这些权重表示每个专家模型对处理输入数据的贡献。一般是通过 softmax 门控函数通过专家或 token 对概率分布进行建模,并选择前 K 个。例如,如果模型有三个专家,输出的概率可能为 0.5 和 0.4、0.1,这意味着第一个专家对处理此数据的贡献为 50%,第二个专家为 40%,第二个专家为 10%,这个时候的 K 就可以选择为 2,我们认为前两个专家模型的建议会更好,可以用于更加精确的回答中,而第三个专家模型的建议可以用于更加富有创意性的答案中。
专家模型(Experts):在训练的过程中,输入的数据被门控模型分配到不同的专家模型中进行处理;在推理的过程中,被门控选择的专家会针对输入的数据,产生相应的输出。这些输出最后会和每个专家模型处理该特征的能力分配的权重进行加权组合,形成最终的预测结果。
混合专家模型在训练过程中通过门控模型实现「因材施教」,进而在推理过程中实现专家模型之间的「博采众长」。MoE 的专家模型可以是小型的 MLP 或者复杂的 LLM。
在传统的密集模型中,每个输入都必须经历完整的计算流程,这导致了在处理大规模数据时的显著计算成本。然而,在现代深度学习中,稀疏混合专家(MoE)模型的引入为解决这一问题提供了一种新的方法。在这种模型中,输入数据只激活或利用了少数专家模型,而其他专家模型保持不活跃状态,形成了「稀疏」结构。这种稀疏性被认为是混合专家模型的重要优点,不仅在减少计算负担的同时,还能提高模型的效率和性能。
MoE模型的优势在于其灵活性和扩展性。由于可以动态地调整专家网络的数量和类型,MoE 模型可以有效地处理大规模和复杂的数据集。此外,通过并行处理不同的专家网络,MoE 模型还可以提高计算效率。
在实际应用中,MoE 模型常用于处理需要大量计算资源的任务,如语言模型、图像识别和复杂的预测问题。通过将大型问题分解为更小、更易管理的子问题,MoE 模型能够提供更高效和精确的解决方案。
03
MoE 的优势与缺点
混合专家模型的优势显而易见,通过 MoE 的方式,可以极大的促进大模型的研究和发展,但也不能忽视其各方面的问题,在实际应用中应该结合具体的需求对各方面的性能和参数进行一个权衡。
混合专家模型(Mixture of Experts,MoE)的优势:
混合专家模型(Mixture of Experts,MoE)具有多方面的优势,使其在深度学习领域得到广泛应用。以下是一些混合专家模型的优势:
1. 任务特异性:采用混合专家方法可以有效地充分利用多个专家模型的优势,每个专家都可以专门处理不同的任务或数据的不同部分,在处理复杂任务时取得更卓越的性能。各个专家模型能够针对不同的数据分布和模式进行建模,从而显著提升模型的准确性和泛化能力,因此模型可以更好地适应任务的复杂性。这种任务特异性使得混合专家模型在处理多模态数据和复杂任务时表现出色。
2. 灵活性:混合专家方法展现出卓越的灵活性,能够根据任务的需求灵活选择并组合适宜的专家模型。模型的结构允许根据任务的需要动态选择激活的专家模型,实现对输入数据的灵活处理。这使得模型能够适应不同的输入分布和任务场景,提高了模型的灵活性。
3. 高效性:由于只有少数专家模型被激活,大部分模型处于未激活状态,混合专家模型具有很高的稀疏性。这种稀疏性带来了计算效率的提升,因为只有特定的专家模型对当前输入进行处理,减少了计算的开销。
4. 表现能力:每个专家模型可以被设计为更加专业化,能够更好地捕捉输入数据中的模式和关系。整体模型通过组合这些专家的输出,提高了对复杂数据结构的建模能力,从而增强了模型的性能。
5. 可解释性:由于每个专家模型相对独立,因此模型的决策过程更易于解释和理解,为用户提供更高的可解释性,这对于一些对模型决策过程有强解释要求的应用场景非常重要。
MoE 构架还能向 LLM 添加可学习参数,而不增加推理成本。
6. 适应大规模数据:混合专家方法是处理大规模数据集的理想选择,能够有效地应对数据量巨大和特征复杂的挑战,可以利用稀疏矩阵的高效计算,利用 GPU 的并行能力计算所有专家层,能够有效地应对海量数据和复杂特征的挑战。其并行处理不同子任务的特性,充分发挥计算资源,帮助有效地扩展模型并减少训练时间,提高模型在训练和推理阶段的效率,使其在大规模数据下具有较强的可扩展性,以更低的计算成本获得更好的结果。这种优势使得混合专家方法成为在大数据环境下进行深度学习的强有力工具。
混合专家模型通过充分利用多个专家模型的优势,实现了在任务处理、灵活性、计算效率和可解释性等方面的平衡,使其成为处理复杂任务和大规模数据的有效工具。
混合专家模型(Mixture of Experts,MoE)的问题:
尽管混合专家模型在许多方面具有优势,但也存在一些问题和挑战,这些需要在实际应用中谨慎考虑。以下是一些混合专家模型可能面临的问题:
-
训练复杂性:混合专家模型的训练相对复杂,尤其是涉及到门控网络的参数调整。为了正确地学习专家的权重和整体模型的参数,可能需要更多的训练时间。
-
超参数调整:选择适当的超参数,特别是与门控网络相关的参数,以达到最佳性能,是一个复杂的任务。这可能需要通过交叉验证等技术进行仔细调整。
-
专家模型设计:专家模型的设计对模型的性能影响显著。选择适当的专家模型结构,确保其在特定任务上有足够的表现力,是一个挑战。
-
稀疏性失真:在某些情况下,为了实现稀疏性,门控网络可能会过度地激活或不激活某些专家,导致模型性能下降。需要谨慎设计稀疏性调整策略,以平衡效率和性能。
-
动态性问题:在处理动态或快速变化的数据分布时,门控网络可能需要更加灵活的调整,以适应输入数据的变化。这需要额外的处理和设计。
-
对数据噪声的敏感性:混合专家模型对于数据中的噪声相对敏感,可能在一些情况下表现不如其他更简单的模型。
此外,还有重要的一点是混合专家模型在分布式计算环境下可能面临通信宽带瓶颈的问题。这主要涉及到混合专家模型的分布式部署,其中不同的专家模型或门控网络可能分布在不同的计算节点上。在这种情况下,模型参数的传输和同步可能导致通信开销过大,成为性能的一个瓶颈。
04
MoE 相关论文粗读
MoE 相关论文
1. Adaptive mixtures of local experts, Neural Computation’1991
2. Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer, ICLR’17
3. GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding, ICLR’21
4. Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity, JMLR’22
5. GLaM: Efficient Scaling of Language Models with Mixture-of-Experts, 2021
6. Go Wider Instead of Deeper, AAAI’22
7. MoEBERT: from BERT to Mixture-of-Experts via Importance-Guided Adaptation, NAACL’22
论文 3 GShard 是第一个将 MoE 的思想拓展到 Transformer 上的工作,但论文亮点是提出了 GShard 这个框架,可以方便的做对 MoE 结构做数据并行或者模型并行。
我们可以重点看其中提出的MoE结构,论文具体的做法是:把 Transformer 的 encoder 和 decoder 中,每隔一个(every other)的 FFN 层,替换成 position-wise 的 MoE 层,又加了一个分发器(Gating),使用的是 Top-2 gating network,即不同的 token 每次会发给至多两个专家。
文中还提到了很多其他设计:
-
Expert capacity balancing:强制每个 expert 处理的 tokens 数量在一定范围内。
-
Local group dispatching:通过把一个 batch 内所有的 tokens 分组,来实现并行化计算。
-
Auxiliary loss:也是为了缓解「赢者通吃」问题。
-
Random routing:在 Top-2 gating 的设计下,两个 expert 如何更高效地进行 routing。
论文 4 Switch Transformer 的亮点在于它简化了 MoE 的 routing 算法,每个 FFN 层激活的专家个数从多个变成了一个,提高了计算效率,可以将语言模型的参数量扩展至 1.6 万亿。
论文 5 GLaM 是 Google 在 2021 年推出的一个超大模型,比 GPT-3 大三倍,但是由于使用了 Sparse MoE 的设计,训练成本却只有 GPT-3 的 1/3,而且在 29 个 NLP 任务上超越了 GPT-3。
以上三篇文章(GShard,Switch-Transformer,GLaM)都是希望通过 MoE 的方式把模型做得尽可能的大,大到普通人玩不起(动辄使用几百个 experts)。
但也有更亲民一点的,论文 6 和 7 是关于如何利用 MoE 去压缩模型、提高效率。
如果你关注大模型领域,欢迎扫码加入我们的大模型交流群,来一起探讨大模型时代的共识和认知,跟上大模型时代的这股浪潮。
更多阅读Adobe 放弃收购 Figma,真正的原因是 AI 正在重构交互设计行业
生成式AI的2023:技术突破、商业落地、政策监管与AI恐慌
AGI Hackathon获奖项目介绍:AI如何落地,这6个项目给出了回答
纳瓦尔对于AI创业的思考:寻找技术创新的本源性
Notion的AI实践:如何在产品中集成AI,打造让用户信任的AI体验?
OpenAI 官方 Prompt 工程指南:写好 Prompt 的六个策略
转载原创文章请添加微信:geekparker