MoE混合专家模型详解,一文掌握大模型架构的未来趋势,程序员必看收藏!
混合专家模型(MoE)通过将模型划分为多个"专家"子网络,并使用门控网络路由输入数据,实现高效计算。相比稠密模型,MoE预训练更快、推理速度更优,且能支持千亿级参数规模。尽管面临训练不稳定、负载均衡和显存需求高等挑战,但因其显著优势已成为大厂新宠,代表了大模型架构的未来发展方向。背景为什么要谈谈Moe模型?主要是最近Moe太火了,尤其向国内一些大厂,只有Moe模型,都没有Dense模型了,这意味着
混合专家模型(MoE)通过将模型划分为多个"专家"子网络,并使用门控网络路由输入数据,实现高效计算。相比稠密模型,MoE预训练更快、推理速度更优,且能支持千亿级参数规模。尽管面临训练不稳定、负载均衡和显存需求高等挑战,但因其显著优势已成为大厂新宠,代表了大模型架构的未来发展方向。
背景
为什么要谈谈Moe模型?主要是最近Moe太火了,尤其向国内一些大厂,只有Moe模型,都没有Dense模型了,这意味着Moe就是以后的一个趋势??我自己也总结了一下Moe模型相比Dense模型具有的一些优势,具体如下:
1、与稠密模型相比, 预训练速度更快;
2、与具有相同参数数量的模型相比,具有更快的推理速度;
3、需要大量显存,因为所有专家系统都需要加载到内存中;
4、在 微调方面存在诸多挑战,但近期的研究表明,对混合专家模型进行指令调优具有很大的潜力。
5、目前所有大厂都集中发布Moe的模型,Dense模型逐渐减少(尤其是阿里、美团、月之暗面等近半年都主推Moe模型)
既然这么火,那我们来看看什么是混合专家模型?
什么是混合专家模型?
混合专家 (MoE) 是一种机器学习方法,它将人工智能 (AI) 模型划分为单独的子网络或“专家”,每个子网络专门研究输入数据的一个子集,以便共同执行一项任务。混合专家架构支持大规模模型,即使是包含数十亿个参数的模型也能大大降低预训练期间的计算成本,并在推理时实现更快的性能。从广义上讲,它通过选择性地仅激活给定任务所需的特定专家来实现这种效率,而不是为每项任务激活整个神经网络。
混合专家模型 (MoE) 的一个显著优势是它们能够在远少于稠密模型所需的计算资源下进行有效的预训练。这意味着在相同的计算预算条件下,您可以显著扩大模型或数据集的规模。特别是在预训练阶段,与稠密模型相比,混合专家模型通常能够更快地达到相同的质量水平。
这么讲是不是还是很抽象,那么究竟什么是一个混合专家模型 (MoE) 呢?作为一种基于 Transformer 架构的模型,混合专家模型主要由两个关键部分组成:
稀疏 MoE 层: 这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干"专家"(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。
门控网络或路由: 这个部分用于决定哪些token 被发送到哪个专家。一个一个token甚至可以被发送到多个专家。token的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。
总结来说,在混合专家模型 (MoE) 中,我们将传统 Transformer 模型中的每个前馈网络 (FFN) 层替换为 MoE 层,其中 MoE 层由两个核心部分组成: 一个门控网络和若干数量的专家。
尽管混合专家模型 (MoE) 提供了若干显著优势,例如更高效的预训练和与稠密模型相比具有更快的推理速度,但它们也伴随着一些挑战:
- 训练挑战
虽然 MoE 能够实现更高效的计算预训练,但它们在微调阶段往往面临泛化能力不足的问题,长期以来易于引发过拟合现象。(注意:微调过程更多是数据配比以及平衡策略,要微调这两个是必不可少,否则微调的效果比Dense模型还要差)
- 推理挑战
MoE 模型虽然可能拥有大量参数,但在推理过程中只使用其中的一部分,这使得它们的推理速度快于具有相同数量参数的稠密模型。然而,这种模型需要将所有参数加载到内存中,因此对内存的需求非常高。以 Mixtral 8x7B 这样的 MoE 为例,需要足够的 VRAM 来容纳一个 47B 参数的稠密模型。之所以是 47B 而不是 8 x 7B = 56B,是因为在 MoE 模型中,只有 FFN 层被视为独立的专家,而模型的其他参数是共享的。此外,假设每个token只使用两个专家,那么推理速度 (以 FLOPs 计算) 类似于使用 12B 模型 (而不是 14B 模型),因为虽然它进行了 2x7B 的矩阵乘法计算,但某些层是共享的。
混合专家模型的Experts和Gate网络
1. 专家模块(Experts as components)
在传统的 MoE 设置中,整个系统由一个门控网络和多个专家组成。在支持向量机 (SVMs) 、高斯过程和其他方法的研究中,MoE 通常被视为整个模型的一部分。然而,Eigen、Ranzato 和 Ilya 的研究 探索了将 MoE 作为更深层网络的一个组件。这种方法允许将 MoE 嵌入到多层网络中的某一层,使得模型既大又高效。
2. 条件计算(Gate)
传统的神经网络每一层都需要处理所有输入数据。在这一时期,Yoshua Bengio 等研究人员开始探索基于输入token 动态激活或停用网络组件的方法。
这些研究的融合促进了在自然语言处理 (NLP) 领域对混合专家模型的探索。特别是在 2017 年,Shazeer 等人 (团队包括 Geoffrey Hinton 和 Jeff Dean,后者有时被戏称为 “谷歌的 Chuck Norris”) 将这一概念应用于 137B 的 LSTM (当时被广泛应用于 NLP 的架构,由 Schmidhuber 提出)。通过引入稀疏性,这项工作在保持极高规模的同时实现了快速的推理速度。这项工作主要集中在翻译领域,但面临着如高通信成本和训练不稳定性等多种挑战。
混合专家(MoE)架构把模型容量推到千亿甚至万亿级,开源的 Switch Transformers 已做到 1.6 T 参数;它不仅在 NLP 领域大显身手,也正被迅速移植到计算机视觉战场。
MoE的稀疏性讲解
稀疏性的概念采用了条件计算的思想。在传统的稠密模型中,所有的参数都会对所有输入数据进行处理。相比之下,稀疏性允许我们仅针对整个系统的某些特定部分执行计算。这意味着并非所有参数都会在处理每个输入时被激活或使用,而是根据输入的特定特征或需求,只有部分参数集合被调用和运行
深入分析 Shazeer 对混合专家模型 (MoE) 在翻译应用中的贡献。条件计算的概念 (即仅在每个样本的基础上激活网络的不同部分) 使得在不增加额外计算负担的情况下扩展模型规模成为可能。这一策略在每个 MoE 层中实现了数以千计甚至更多的专家的有效利用。
token分配不均:这种稀疏性设置确实带来了一些挑战。例如,在混合专家模型 (MoE) 中,尽管较大的批量大小通常有利于提高性能,但当数据通过激活的专家时,实际的批量大小可能会减少。比如,假设我们的输入批量包含 10 个token, 可能会有五个token被路由到同一个专家,而剩下的五个token分别被路由到不同的专家。这导致了批量大小的不均匀分配和资源利用效率不高的问题。
那我们应该如何解决这个问题呢?一个可学习的门控网络 (G) 决定将输入的哪一部分发送给哪些专家 (E):
在这种设置下,虽然所有专家都会对所有输入进行运算,但通过门控网络的输出进行加权乘法操作。如果 G (门控网络的输出) 为 0 会发生什么呢?如果是这种情况,就没有必要计算相应的专家操作,因此我们可以节省计算资源。那么一个典型的门控函数是什么呢?一个典型的门控函数通常是一个带有 softmax 函数的简单的网络。这个网络将学习将输入发送给哪个专家。
Shazeer 等人的工作还探索了其他的门控机制,其中包括带噪声的 TopK 门控 (Noisy Top-K Gating)。这种门控方法引入了一些可调整的噪声,然后保留前 k 个值。具体来说:
1、添加一些噪声
2、选择保留前 K 个值
3、应用 Softmax 函数
这种稀疏性引入了一些有趣的特性。通过使用较低的 k 值 (例如 1 或 2),我们可以比激活多个专家时更快地进行训练和推理。为什么不仅选择最顶尖的专家呢?最初的假设是,需要将输入路由到不止一个专家,以便门控学会如何进行有效的路由选择,因此至少需要选择两个专家
混合专家模型中Token的负载均衡策略
尽管 MoE 有很多好处,但它们给培训过程增加了极大的复杂性。普通 "top-k路由策略的一个重要缺点是,门控网络有可能趋同于只激活少数专家。这是一个自我强化的问题:如果少数专家在早期被不成比例地选择,这些专家将更快地接受培训,然后继续被选中,因为他们现在比其他训练有素的专家提供更可靠的预测。这种不平衡的负载意味着其他专家最终会沦为累赘。
为了缓解这种情况,Shazeer 等人引入了嘈杂的 top-k 门控:在为每个专家预测的概率值中加入一些高斯噪声,从而引入一些随机性,推动优化均匀分布专家激活。他们还在专家选择中添加了两个可训练的正则化术语:最小化负载均衡损失会惩罚过度依赖任何一个专家,而最小化专家多样性损失会奖励所有专家的平等利用。
MoEs and Transformers
Transformer 类模型明确表明,增加参数数量可以提高性能,因此谷歌使用GShard方案将Transformer模型的参数量扩展到超过6000亿。
GShard将在编码器和解码器中的每个前馈网络 (FFN) 层中的替换为使用 Top-2 门控的混合专家模型 (MoE) 层。这种架构对于大规模计算非常有效: 当扩展到多个设备时,MoE 层在不同设备间共享,而其他所有层则在每个设备上复制。
随机路由
在 Top-2 设置中,我们始终选择排名最高的专家,但第二个专家是根据其权重比例随机选择的。
专家容量
我们可以设定一个阈值,定义一个专家能处理多少token。如果两个专家的容量都达到上限,token就会溢出,并通过残差连接传递到下一层,或在某些情况下被完全丢弃。专家容量是 MoE 中最重要的概念之一。为什么需要专家容量呢?因为所有张量的形状在编译时是静态确定的,我们无法提前知道多少token会分配给每个专家,因此需要一个固定的容量因子。
注意: 在推理过程中,只有部分专家被激活。同时,有些计算过程是共享的,例如自注意力 (self-attention) 机制,它适用于所有token。这就解释了为什么我们可以使用相当于 12B 稠密模型的计算资源来运行一个包含 8 个专家的 47B 模型。如果我们采用 Top-2 门控,模型会使用高达 14B 的参数。但是,由于自注意力操作 (专家间共享) 的存在,实际上模型运行时使用的参数数量是12B.
Switch Transformers(Two Moe Mode)
尽管混合专家模型 (MoE) 显示出了很大的潜力,但它们在训练和微调过程中存在稳定性问题。Switch Transformers采用了编码器 - 解码器的架构,具有1.6 万亿参数的 MoE模型,且拥有 2048 个专家,可以使用 transformers
库来运行。
Switch Transformers 提出了一个 Switch Transformer 层,它接收两个输入 (两个不同的token) 并拥有四个专家(two moe mode)。
与最初使用至少两个专家的想法相反,Switch Transformers 采用了简化的单专家策略(对比两张图)。这种方法的效果包括:
- 减少门控网络 (路由) 计算负担
- 每个专家的批量大小至少可以减半
- 降低通信成本
- 保持模型质量
为什么使用低精度数据训练很难?switch transformers作者也尝试使用了混合精度训练。例如用 bfloat16
精度训练专家,同时对其余计算使用全精度进行。较低的精度可以减少处理器间的通信成本、计算成本以及存储张量的内存。然而,在最初的实验中,当专家和门控网络都使用 bfloat16
精度训练时,出现了不稳定的训练现象。这种不稳定性特别是由路由计算引起的,因为路由涉及指数函数等操作,这些操作对精度要求较高。因此,为了保持计算的稳定性和精确性,保持更高的精度是重要的。为了减轻不稳定性,路由过程也使用了全精度。
FQA
1、专家如何学习
研究者发现,编码器中不同的专家倾向于专注于特定类型的token或浅层概念。例如,某些专家可能专门处理标点符号,而其他专家则专注于专有名词等。与此相反,解码器中的专家通常具有较低的专业化程度。此外,研究者们还对这一模型进行了多语言训练。尽管人们可能会预期每个专家处理一种特定语言,但实际上并非如此。由于token路由和负载均衡的机制,没有任何专家被特定配置以专门处理某一特定语言。
2、专家的数量对预训练有何影响?
增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减 (尤其是当专家数量达到 256 或 512 之后更为明显)。同时,这也意味着在推理过程中,需要更多的显存来加载整个模型。
3、稀疏 VS 稠密,如何选择?
稀疏混合专家模型 (MoE) 适用于拥有多台机器且要求高吞吐量的场景。在固定的预训练计算资源下,稀疏模型往往能够实现更优的效果。相反,在显存较少且吞吐量要求不高的场景,稠密模型则是更合适的选择。
注意: 直接比较稀疏模型和稠密模型的参数数量是不恰当的,因为这两类模型基于的概念和参数量的计算方法完全不同。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】
更多推荐
所有评论(0)