当前位置:   article > 正文

DL之MoE:MoE/FastMoE(混合专家模型架构)的简介(分工合作/专家选择的路由算法)、代表性算法(GLoMo/GShard/Switch Transformer/GLaM/悟道模型)、应用案

fastmoe

DL之MoE:MoE/FastMoE(混合专家模型架构)的简介(分工合作/专家选择的路由算法)、代表性算法(GLoMo/GShard/Switch Transformer/GLaM/悟道模型)、应用案例之详细攻略

目录

MoE/FastMoE(混合专家模型架构)的简介

MoE的简介

MoE的概述:术业有专攻

AI:2023年6月9日北京智源大会演讲分享之基础模型前沿技术论坛—《工程化打造AI中的CPU》、《构建一个AI系统:在LLM上应用带有RLHF来推进定制》、《多模态预训练的进展回顾与展望》、《扩展大型语言模型:从幂律到稀疏性》

《GLaM: Efficient Scaling of Language Models with Mixture-of-Experts》翻译与解读

摘要和总结—基于MoE架构+7倍GPT-3的参数量但训练能耗是GPT-3的三分之一

FastMoE的简介

MoE的挑战之负载不均衡:一个专家干活多个专家围观

FastMoE的概述


MoE/FastMoE(混合专家模型架构)的简介

MoE的简介

MoE的概述:术业有专攻

背景

在ICLR 2017上,Google研究者提出了MoE(Mixture of Experts)层。该层包含一个门网络(Gating Network)和n个专家网络(Expert Network)。

对于每一个输入,动态地由门网络选择k个专家网络进行激活。在具体设计中,每个输入x激活的专家网络数量k往往是一个非常小的数字。比如在MoE论文的一些实验中,作者采用了n=512,k=2的设定,也就是每次只会从512个专家网络中挑选两个来激活。在模型运算量(FLOPs)基本不变的情况下,可以显著增加模型的参数量。

简介

MoE(Mixture-of-Experts, 混合专家模型)是一种架构,用于构建神经网络模型,其中包含多个专家模型,每个专家模型负责处理输入数据的不同方面或子任务。

MoE架构的主要特点是在模型中引入了专家网络层,通过路由机制(Routing function)选择激活哪些专家,以允许不同的专家模型对输入进行独立处理,并通过加权组合它们的输出来生成最终的预测结果。

本质

通过分工合作的方式解决复杂问题:将一个复杂的任务分解为多个子任务,并通过组合专家模型的输出来解决整体任务。它利用了模型的并行处理能力专业化的特点,以提高模型的表达能力和性能。

对比EL

MoE有点类似Ensemble,与其训练一个模型,我们训练数十个独立的“专家模型”(expert model)。与简单的ensemble不同的是,在做训练或推断(inference)的时候,我们用一个gating network来“挑选专家” — 在几十个专家模型中挑选出几个适合的专家模型用来计算。通俗的讲,这些专家“术业有专攻”,根据所长而分工。

理解

通过稀疏模型MoE扩大大语言模型的方法:以GLaM模型为例,它包含1.2T个参数,但实际上被激活的参数(activated parameters)只有97B,远少于GPT-3,也就是说,它是稀疏激活的MoE。它与GPT-3同样是只有解码器的模型,但与GPT-3相比,GlaM获得了更好的性能。

意义

MoE架构的意义在于扩展了神经网络模型的能力,使其能够处理更复杂和多样化的任务。它为构建更大、更强大的语言模型提供了一种解决方案,同时也为其他领域的任务提供了借鉴和应用的可能性。

稀疏模型的优势在于它能够更有效地利用模型参数,减少不必要的计算开销,从而提高模型的性能。

(1)、可以扩大模型的参数数量,因为只需要激活部分参数,其他参数可以被"关机"。这降低了计算量和内存消耗。

(2)、提高效率:只激活相关的专家模块,可以提高模型效率。

(3)、组合优势:通过组合不同专家的优势,有可能获得更好的效果。

核心技术

专家选择的路由算法:Token-based MoE 也有局限性,糟糕的专家路由策略(例如导致负载不平衡的策略)会导致某些专家训练不足,从而导致专家的专业性不足或过度。为了解决这个问题,他们提出了一个叫做专家选择的路由算法。先前的工作使用top-k函数为每个标记分配固定数量的专家,而不考虑不同标记的相对重要性。不是让标记选择top-k专家,而是让专家选择top-k标记。因此,每个标记可以被送到不同数量的专家那里,每个专家可以有一个固定的容量。

提出非统一的架构:Brainfomers模型,这种模型基于在Transformer的基础上进行了优化设计,并创建一个搜索空间(Search Space),来提升神经网络的性能。它比GLaM基线快5倍以上。

专家混合型的渐进式终身学习:么如何才能使语言模型得到更新,并让基础模型,比方说预先训练好的GPT-4适应一些目标下游任务领域。可以采用专家混合型的渐进式终身学习,这种方法可以次线性地增加参数的数量,同时引入新的训练数据,并增加一个表示损失,这样模型就不会忘记以前的训练数据。

优缺点

适合复杂性和多样性任务:它能够处理输入数据的复杂性和多样性。通过将输入数据分配给不同的专家模型,每个模型可以专注于自己擅长的领域,从而提高整体模型的性能。

可扩展性:MoE还具有较强的可扩展性,可以通过添加更多的专家模型来进一步增加模型的容量和表达能力。

训练过程复杂+权重分配:模型的训练过程相对复杂,需要进行专家模型之间的协调和权重分配。

(1)、在实际应用中,合理的专家选择和权重分配也是一个挑战,不当的选择可能导致性能下降。

参数量超大:MoE模型的参数数量通常较大,增加了模型的复杂度和计算成本。

代表性算法

GLoMo是一种基于门控线性模型的MoE算法,用于语言建模和机器翻译任务。GLoMo算法是一个分布式训练方法,通过层级模型并行和门控机制,更高效地扩展到大规模模型。

GShard:在ICLR 2021上,Google的进一步将MoE应用到了基于Transformer的神经机器翻译的任务上。GShard将Transformer中的Feedforward Network(FFN)层替换成了MoE层,并且将MoE层和数据并行巧妙地结合起来。在数据并行训练时,模型在训练集群中已经被复制了若干份。GShard通过将每路数据并行的FFN看成MoE中的一个专家来实现MoE层,这样的设计通过在多路数据并行中引入All-to-All通信来实现MoE的功能。

Switch Transformer:2021年1月,Google进一步发布了万亿规模的基于MoE的大规模预训练模型Switch Transformer。Switch Transformer用MoE改进了Google已有的T5预训练模型,其中最大的模型Switch-C已经达到了1.5万亿参数。

GLaM2021年谷歌提出,它是一个使用稀疏激活的MoE模型,旨在扩展语言模型的容量和性能,同时降低训练成本。

悟道模型:悟道1.75T模型是基于FastMoE技术,一个含 480个专家混合(MoE)的稀疏模型。

应用案例

MMoE(Multi-gate Mixture-of-Experts)是MoE在推荐系统领域的应用

经验积累

需要更好的MoE架构,以及训练策略。比如非均匀架构、终身学习。

MoE上的终身预训练:扩展+正则化

(1)、基于分布的MoE

(2)、逐渐增加更多专家以适应新数据分布

(3)、添加正则化以减轻遗忘:比如我们不希望模型过度拟合B,不希望模型权重过于偏离A,在适应B的同时对模型进行正则化。

AI:2023年6月9日北京智源大会演讲分享之基础模型前沿技术论坛—《工程化打造AI中的CPU》、《构建一个AI系统:在LLM上应用带有RLHF来推进定制》、《多模态预训练的进展回顾与展望》、《扩展大型语言模型:从幂律到稀疏性》

AI:2023年6月9日北京智源大会演讲分享之基础模型前沿技术论坛—《工程化打造AI中的CPU》、《构建一个AI系统:在LLM上应用带有RLHF来推进定制》、《多模态预训练的进展回顾与展望》、《扩展大_一个处女座的程序猿的博客-CSDN博客

《GLaM: Efficient Scaling of Language Models with Mixture-of-Experts》翻译与解读

时间

2021年12月13日

作者

谷歌

地址

论文:https://arxiv.org/abs/2112.06905

摘要和总结—基于MoE架构+7倍GPT-3的参数量但训练能耗是GPT-3的三分之一

Scaling language models with more data, compute and parameters has driven significant progress in natural language processing. For example, thanks to scaling, GPT-3 was able to achieve strong results on in-context learning tasks. However, training these large dense models requires significant amounts of computing resources. In this paper, we propose and develop a family of language models named GLaM (Generalist Language Model), which uses a sparsely activated mixture-of-experts architecture to scale the model capacity while also incurring substantially less training cost compared to dense variants. The largest GLaM has 1.2 trillion parameters, which is approximately 7x larger than GPT-3. It consumes only 1/3 of the energy used to train GPT-3 and requires half of the computation flops for inference, while still achieving better overall zero-shot and one-shot performance across 29 NLP tasks.

通过使用更多的数据、计算资源和参数,语言模型的扩展在自然语言处理领域取得了显著的进展。例如,得益于扩展,GPT-3在上下文学习任务上取得了强大的结果。然而,训练这些大型稠密模型需要大量的计算资源。在本文中,我们提出并开发了一系列名为GLaM(Generalist Language Model)的语言模型,它使用稀疏激活的专家混合架构来扩展模型容量,同时与密集变体相比,训练成本大大降低。最大的GLaM模型拥有1.2万亿个参数,大约是GPT-3的7倍。它的训练能耗仅为训练GPT-3的1/3,并且推理过程中的计算量减少了一半,同时在29个自然语言处理任务中实现了更好的零样本和单样本性能。

We propose and develop a family of generalist language models called GLaM, which use a sparsely activated

mixture-of-experts architecture to achieve better average scores than not only their dense counterparts of similar effective FLOPs, but also the GPT-3 models on 29 representative NLP tasks in zero, one and few-shot learning. In particular, GLaM (64B/64E), our largest 1.2 trillion parameter MoE language model, achieves better average performance with only one third of energy consumption compared to training GPT-3. We hope that our work will encourage more research into methods for obtaining high-quality data, and using MoE for more efficient scaling of giant language models.

我们提出并开发了一系列名为GLaM的通用语言模型,它们使用稀疏激活的专家混合型架构,在零、一和少样本学习中不仅比同等有效FLOPs的密集对应模型表现更好,而且比GPT-3模型在29个代表性的NLP任务上取得更好的平均得分。特别是,我们最大的GLaM(64B/64E)模型,拥有1.2万亿参数的MoE语言模型,与训练GPT-3相比,只需三分之一的能量消耗就能达到更好的平均性能。我们希望我们的工作能够鼓励更多关于获取高质量数据和使用MoE实现巨型语言模型更高效扩展的研究。

FastMoE的简介

MoE的挑战之负载不均衡:一个专家干活多个专家围观

MOE训练时负载均衡情况,有时候一个勤劳的Expert干了15个人的工作

 

FastMoE的概述

背景

FastMoE关注注两方面的问题:

(1)如何将MoE模型训练的更快;

(2)如何使得 MoE 模型训练框架开箱即用。

简介

FastMoE 是智源研究院于 2020 年发起的超大规模预训练模型研发项目“悟道”的最新成果。

FastMoE是首个基于PyTorch框架的MoE开源系统,使得普通的用户可以使用常见的GPU资源来尝试和研究自己的MoE模型。与朴素版本相比,实现了47倍的提速优化,更加简单、灵活、高效。

FastMoE 简单易用,它既可以作为 PyTorch 网络中的一个模块使用,也可以用来改造现有网络中的某些层:将选中的网络复制多份作为多个专家网络,然后再引入门网络,就变成了 MoE 网络。FastMoE 还非常灵活,既可以支持将任意的神经网络模块作为专家网络,也支持任意的神经网络模块作为门网络。

优化

在性能方面,一般来说若简单地使用 PyTorch 训练 MoE,门网络会使得批量样本被打散,GPU 算力不能被充分利用。

为了提升训练性能,FastMoE

对批量样本按照专家进行分类,使得属于每个专家的样本依然是批量的形式。

挖掘专家之间的并行性,使用不同的 cuda stream 来计算专家网络。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/277375
推荐阅读
相关标签
  

闽ICP备14008679号