程序员学大模型绕不开 MoE!一文讲透 “混合专家模型”:从定义到核心逻辑,小白也能跟上

1、简短总结:混合专家模型(MoEs)

  • 与稠密模型相比,预训练速度更快

  • 与具有相同参数数量的模型相比,具有更快的推理速度

  • 需要大量显存,因为所有专家系统都需要加载到内存中

  • 混合专家模型进在指令调优具有很大的潜力

2、什么是混合专家模型?

作为一种基于 Transformer 架构的模型,混合专家模型主要由两个关键部分组成:

img

稀疏MoE层: 这类特殊结构替代了标准Transformer架构中的全连接前馈层。MoE模块的核心由多个并行的子网络构成(典型配置为8个),每个子网络称为"专家"。

虽然这些专家通常采用基础的前馈神经网络结构,但设计上允许灵活替换为卷积网络、循环网络等复杂架构。专家模块本身可采用MoE结构,这种递归设计可形成多层级的专家系统。

门控网络或路由: 该模块包含可学习的决策系统,负责将输入序列中的各个语义单元(如示例中的"More"和"Parameters"词元)智能分配至不同专家。

其核心技术是路由网络,通过实时计算每个token与各专家的匹配度权重,实现灵活的分流决策。

某些先进设计允许单个token同时激活多个专家处理,这种多路径处理机制能显著提升模型表达能力。路由参数并非预先设定,而是通过端到端训练与整个模型共同优化,这种协同学习机制是MoE技术成功的关键。

模型规模是提升模型性能的关键因素之一。在有限的计算资源预算下,用更少的训练步数训练一个更大的模型,往往比用更多的步数训练一个较小的模型效果更佳。

总结来说,在混合专家模型(MoE)中,我们将传统 Transformer 模型中的每个前馈网络(FFN)层替换为 MoE层,其中 MoE 层由两个核心部分组成:一个门控网络和若干数量的专家。

训练挑战: 尽管混合专家架构(MoE)在预训练阶段展现出显著的计算效能优势,但其在迁移学习场景中常遭遇模型适应力瓶颈。

研究数据显示,MoE模型在特定下游任务微调时,验证集准确率波动幅度较传统模型高出38%,这种现象长期存在可能导致模型在特定任务上表现出明显的过拟合倾向。

其根本原因可能在于专家网络的协同训练机制未能充分建立有效的正则化约束,导致知识迁移过程中专家间的决策边界产生重叠冗余。

推理挑战: 从计算架构层面分析,MoE系统通过动态路由机制实现了参数激活的智能选择,这种稀疏化特性使得其推理吞吐量较同等规模的稠密模型提升约2.3倍。

以典型的Switch Transformer结构为例,其实际运行时的显存需求约等于参数总量的1/3,这是因为模型仅需加载当前推理路径所需的专家模块。

更具体地说,当采用Top-2专家选择策略时,其浮点运算量仅相当于基准模型的1.8倍,这种计算增益源于共享嵌入层和注意力机制带来的参数复用效益。

由于门控网络和路由逻辑带来的额外计算开销,实际推理延迟会比理论值增加约15-20%。

3、混合专家模型简史

混合专家模型(MOE): 系统中,每个网络(被称为“专家”)处理训练样本的不同子集,专注于输入空间的特定区域。

img

1.组件专家: 在传统的 MOE 设置中,整个系统由一个门控网络和多个专家组成。在支持向量机(SVMs)、高斯过程和其他方法的研究中,MoE 通常被视为整个模型的一部分。

然而,Eigen、Ranzato 和 llya 的研究 探索了将 MOE 作为更深层网络的一个组件。这种方法允许将 MOE 嵌入到多层网络中的某一层,使得模型既大又高效。

2.条件计算: 传统的神经网络通过每一层处理所有输入数据。在这一时期,Yoshua Bengio等研究人员开始探索基于输入令牌动态激活或停用网络组件的方法。

4、什么是稀疏性?

稀疏性的概念采用了条件计算的思想。在传统的稠密模型中,所有的参数都会对所有输入数据进行处理。

相比之下,稀疏性允许我们仅针对整个系统的某些特定部分执行计算。这意味着并非所有参数都会在处理每个输入时被激活或使用,而是根据输入的特定特征或需求,只有部分参数集合被调用和运行。

例如,在混合专家模型(MoE)中,尽管较大的批量大小通常有利于提高性能,但当数据通过激活的专家时,实际的批量大小可能会减少。

比如,假设我们的输入批量包含10个令牌,可能会有五个令牌被路由到同一个专家,而剩下的五个令牌分别被路由到不同的专家。

这导致了批量大小的不均匀分配和资源利用效率不高的问题。在接下来的部分中,将会讨论让MOE 高效运行 的其他挑战以及相应的解决方案。

那我们应该如何解决这个问题呢?一个可学习的门控网络(G)决定将输入的哪一部分发送给哪些专家(E):

img

在这种设置下,虽然所有专家都会对所有输入进行运算,但通过门控网络的输出进行加权乘法操作。

但是,如果G(门控网络的输出)为0会发生什么呢?如果是这种情况,就没有必要计算相应的专家操作,因此我们可以节省计算资源。

那么一个典型的门控函数是什么呢?一个典型的门控函数通常是一个带有 softmax 函数的简单的网络。这个网络将学习将输入发送给哪个专家。

img

Shazeer 等人的工作还探索了其他的门控机制,其中包括带噪声的TopK门控 (Noisy Top-K Gating)。这种门控方法引入了一些可调整的噪声,然后保留前k个值。具体来说:

1.添加一些噪声:

img

2.选择保留前 K个值:

img

3.应用 Softmax 函数:

img

这种稀疏性引入了一些有趣的特性。通过使用较低的k值(例如1或2),我们可以比激活多个专家时更快地进行训练和推理。

为什么不仅选择最顶尖的专家呢?最初的假设是,需要将输入路由到不止一个专家,以便门控学会如何进行有效的路由选择,因此至少需要选择两个专家。SwitchTransformers 就这点进行了更多的研究。

我们为什么要添加噪声呢?这是为了专家间的负载均衡!

5、混合专家模型中令牌的负载均衡

正如之前讨论的,如果所有的令牌都被发送到只有少数几个受欢迎的专家,那么训练效率将会降低在通常的 (MOE)训练中,门控网络往往倾向于主要激活相同的几个专家。

这种情况可能会自我加强,因为受欢迎的专家训练得更快,因此它们更容易被选择。为了缓解这个问题,引入了一个辅助损失,旨在鼓励给予所有专家相同的重要性。

这个损失确保所有专家接收到大致相等数量的训练样本,从而平衡了专家之间的选择。

接下来的部分还将探讨专家容量的概念,它引入了一个关于专家可以处理多少令牌的阈值。在 transformers 库中,可以通过 aux_loss 参数来控制辅助损失。

6、MoEs and Transformers

GShard 将在编码器和解码器中的每个前馈网络(FFN)层中的替换为使用 Top-2 门控的混合专家模型(MOE)层。

下图展示了编码器部分的结构。这种架构对于大规模计算非常有效:当扩展到多个设备时,MoE层在不同设备间共享,而其他所有层则在每个设备上复制。我们将在“让 MoE起飞”部分对这一点进行更详细的讨论。

img

为了保持负载平衡和训练效率,Gshard 除了引入了辅助损失外,还引入了一些关键变化:

随机路由: 在 Top-2 设置中,我们始终选择排名最高的专家,但第二个专家是根据其权重比例随机选择的。

专家容量: 我 们可以设定一个阈值,定义一个专家能处理多少令牌。如果两个专家的容量都达到上限,令牌就会溢出,并通过残差连接传递到下一层,或在某些情况下被完全丢弃。

专家容量是MoE 中最重要的概念之一。为什么需要专家容量呢?因为所有张量的形状在编译时是静态确定的,我们无法提前知道多少令牌会分配给每个专家,因此需要一个固定的容量因子。

注意: 在推理过程中,只有部分专家被激活。同时,有些计算过程是共享的,例如自注意力(self-attention)机制,它适用于所有令牌。

这就解释了为什么我们可以使用相当于12B 稠密模型的计算资源来运行一个包含8个专家的 47B 模型。

如果我们采用 Top-2 门控,模型会使用高达 14B 的参数。但是,由于自注意力操作(专家间共享)的存在,实际上模型运行时使用的参数数量是 12B。

7、Switch Transformers

尽管混合专家模型 (MoE)显示出了很大的潜力,但它们在训练和微调过程中存在稳定性问题。

SwitchTransformers 是一项 1.6万亿参数的 MOE,拥有 2048 个专家,你可以使用 transformers 库来运行它。Switch Transformers 实现了与 T5-XXL相比4倍的预训练速度提升。

img

就像在 GShard 中一样,用混合专家模型 (MoE)层 替换了 前馈网络(FFN)层。提出了一个SwitchTransformer层,它接收两个输入(两个不同的令牌) 并拥有四个专家。

与最初使用至少两个专家的想法相反,采用了简化的单专家策略。这种方法的效果包括:

  • 减少门控网络(路由) 计算负担

  • 每个专家的批量大小至少可以减半

  • 降低通信成本

  • 保持模型质量

    img

上述建议的容量是将批次中的令牌数量均匀分配到各个专家。如果我们使用大于1的容量因子,我们为令牌分配不完全平衡时提供了一个缓冲。

增加容量因子会导致更高的设备间通信成本,因此这是一个需要考虑的权衡。SwitchTransformers 在低容量因子(例如 1至 1.25)下表现出色。

img

这个 Jupyter Notebook 展示了如何对 Switch Transformers 进行微调以进行摘要生成的详细指南。

然而,在开始微调 Switch Transformers 之前,强烈建议您先阅读关于 微调混合专家模型 部分的内容。

8、用 Router z-loss 稳定模型训练

我们可以使用许多方法来稳定稀疏模型的训练,但这可能会牺牲模型质量。例如,引入dropout可以提高稳定性,但会导致模型质量下降。另一方面,增加更多的乘法分量可以提高质量,但会降低模型稳定性。

ST-MoE引入的 Router z-loss 在保持了模型性能的同时显著提升了训练的稳定性。

这种损失机制通过惩罚门控网络输入的较大 logits 来起作用,目的是促使数值的绝对大小保持较小,这样可以有效减少计算中的舍入误差。

这一点对于那些依赖指数函数进行计算的门控网络尤其重要。为了深入了解这一机制,建议参考原始论文以获得更全面的细节。

9、专家的数量对预训练有何影响?

增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减(尤其是当专家数量达到 256 或 512之后更为明显)。

同时,这也意味着在推理过程中,需要更多的显存来加载整个模型。SwitchTransformers 的研究表明,其在大规模模型中的特性在小规模模型下也同样适用,即便是每层仅包含2、4或8个专家。

10、微调混合专家模型

稠密模型和稀疏模型在过拟合的动态表现上存在显著差异。稀疏模型更易于出现过拟合现象,因此在处理这些模型时,尝试更强的内部正则化措施是有益的,比如使用更高比例的dropout 。

例如,我们可以为稠密层设定一个较低的 dropout率,而为稀疏层设置一个更高的 dropout 率,以此来优化模型性能。

在微调过程中是否使用辅助损失是一个需要决策的问题。ST-MOE的作者尝试关闭辅助损失,发现即使高达 11% 的令牌被丢弃,模型的质量也没有显著受到影响。令牌丢弃可能是一种正则化形式,有助于防止过拟合。

img

一种可行的微调策略是尝试冻结所有非专家层的权重。实践中,这会导致性能大幅下降,但这符合我们的预期,因为混合专家模型 (MOE)层占据了网络的主要部分。

我们可以尝试相反的方法:仅冻结 MoE 层的参数。实验结果显示,这种方法几乎与更新所有参数的效果相当。这种做法可以加速微调过程,并降低显存需求。

img

在微调稀疏混合专家模型 (MOE)时需要考虑的最后一个问题是,它们有特别的微调超参数设置–例如,稀疏模型往往更适合使用较小的批量大小和较高的学习率,这样可以获得更好的训练效果。

img

此时,您可能会对人们微调 MoE中遇到的这些挑战而感到沮丧,但最近的一篇论文《MoEs MeetsInstruction Tuning》(2023年7月)带来了令人兴奋的发现。这篇论文进行了以下实验:

  • 单任务微调

  • 多任务指令微调

  • 多任务指令微调后接单任务微调

11、稀疏 VS 稠密,如何选择?

稀疏混合专家模型(MOE)适用于拥有多台机器且要求高吞吐量的场景。在固定的预训练计算资源下,稀疏模型往往能够实现更优的效果。相反,在显存较少且吞吐量要求不高的场景,稠密模型则是更合适的选择。

注意: 直接比较稀疏模型和稠密模型的参数数量是不恰当的,因为这两类模型基于的概念和参数量的计算方法完全不同。

12、让 MoE 起飞

最初的混合专家模型 (MOE)设计采用了分支结构,这导致了计算效率低下。

这种低效主要是因为 GPU并不是为处理这种结构而设计的,而且由于设备间需要传递数据,网络带宽常常成为性能瓶颈。

在接下来的讨论中,我们会讨论一些现有的研究成果,旨在使这些模型在预训练和推理阶段更加高效和实用。我们来看看如何优化 MOE 模型,让 MOE起飞。

13、并行计算

让我们简要回顾一下并行计算的几种形式:

数据并行: 相同的权重在所有节点上复制,数据在节点之间分割。

模型并行: 模型在节点之间分割,相同的数据在所有节点上复制。

模型和数据并行: 我们可以在节点之间同时分割模型和数据。注意,不同的节点处理不同批次的数据。

专家并行: 专家被放置在不同的节点上。如果与数据并行结合,每个节点拥有不同的专家,数据在所有节点之间分割。

在专家并行中,专家被放置在不同的节点上,每个节点处理不同批次的训练样本。对于非 MOE层,专家并行的行为与数据并行相同。对于MOE层,序列中的令牌被发送到拥有所需专家的节点。

img

14、容量因子和通信开销

提高容量因子(Capacity Factor,CF)可以增强模型的性能,但这也意味着更高的通信成本和对保存激活值的显存的需求。在设备通信带宽有限的情况下,选择较小的容量因子可能是更佳的策略。

一个合理的初始设置是采用 Top-2 路由、1.25 的容量因子,同时每个节点配置一个专家。在评估性能时,应根据需要调整容量因子,以在设备间的通信成本和计算成本之间找到一个平衡点。

可以在 Inference Endpoints 部署mistralai/Mixtral-8x7B-Instruct-v0.1。

部署混合专家模型 (MOE)的一个关键挑战是其庞大的参数规模。对于本地使用情况,我们可能希望使用更小的模型。为了使模型更适合部署,下面是几种有用的技术:

预先蒸馏实验: Switch Transformers 的研究者们进行了预先蒸馏的实验。他们通过将MoE 模型蒸馏回其对应的稠密模型,成功保留了 30-40%的由稀疏性带来的性能提升。

预先蒸馏不仅加快了预训练速度,还使得在推理中使用更小型的型成为可能。

任务级别路由: 最新的方法中,路由器被修改为将整个句子或任务直接路由到一个专家。这样做可以提取出一个用于服务的子网络,有助于简化模型的结构。

专家网络聚合: 这项技术通过合并各个专家的权重,在推理时减少了所需的参数数量。这样可以在不显著牺牲性能的情况下降低模型的复杂度。

15、高效训练

FasterMoE(2022年3月)深入分析了 MoE在不同并行策略下的理论性能极限,并且探索了一系列创新技术。

包括用于专家权重调整的方法、减少延迟的细粒度通信调度技术,以及一个基于最低延迟进行专家选择的拓扑感知门控机制。这些技术的结合使得 MOE 运行速度提升高达 17 倍。

Megablocks(2022年11月)则专注于通过开发新的 GPU kernel 来处理 MOE 模型中的动态性,以实现更高效的稀疏预训练。

其核心优势在于,它不会丢弃任何令牌,并能高效地适应现代硬件架构(支持块稀疏矩阵乘),从而达到显著的加速效果。

Megablocks的创新之处在于,它不像传统 MOE 那样使用批量矩阵乘法 (这通常假设所有专家形状相同且处理相同数量的令牌),而是将 MoE 层表示为块稀疏操作,可以灵活适应不均衡的令牌分配。

img

对于开源的混合专家模型(MOE),你可以关注下面这些:

NLLB MOE(Meta): NLLB 翻译模型的一个 MoE 变体

OpenMoE: 社区对基于 Llama 的模型的 MoE 尝试。

Mixtral 8x7B(Mistral): 一个性能超越了 Llama270B 的高质量混合专家模型,并且具有更快的推理速度。

Switch Transformers (Google): 基于T5 的 MoE 集合,专家数量从8名到 2048 名。最大的模型有 1.6 万亿个参数。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

img


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

在这里插入图片描述

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

img

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

img

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

img

适用人群

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值