
DeepSeek核心技术解码:图解MoE架构如何实现大模型的智能「分诊」系统
混合专家 (MoE) 是一种使用许多不同子模型(或「专家」)来提高 LLM 质量的技术。两个主要组件定义了 MoE:•专家:每个 FFNN 层现在都有一组“专家”,可以从中选择一个子集。这些“专家”通常本身就是 FFNN。•路由器或门网络:确定哪些令牌被发送给哪些专家。在具有 MoE 的 LLM 的每个层级中,我们都会找到(某种程度上专业的)专家。注意,我们这里提到的专家并不是专攻「心理学」或「数
本文用多张架构图来带你了解 DeepSeek 使用的 混合专家 (MoE) 架构。
MoE 并不是一个新的技术,除了 DeepMind 在使用,国内外众多AI厂商也都使用。
什么是专家混合(MoE / Mixture of Experts)?
混合专家 (MoE) 是一种使用许多不同 子模型(或「专家」) 来提高 LLM 质量的技术。
两个主要组件定义了 MoE:
-
• 专家:每个 FFNN 层现在都有一组“专家”,可以从中选择一个子集。这些“专家”通常本身就是 FFNN。
-
• 路由器或门网络:确定哪些令牌被发送给哪些专家。
在具有 MoE 的 LLM 的每个层级中,我们都会找到(某种程度上专业的)专家。
FFNN
FFNN 层指的是大型语言模型(LLM)中的 前馈神经网络(Feedforward Neural Network, FFNN) 层。
-
1. 前馈神经网络(FFNN):这是一种基本的神经网络结构,数据在网络中只向前流动,从输入层到输出层,而没有循环或反馈连接。每一层的神经元与下一层的所有神经元相连。
-
2. FFNN 层的作用:在 LLM 中,FFNN 层通常用于处理输入数据,将其转换为更高层次的表示。它通过加权和激活函数,将输入特征转换为输出特征。
-
3. 激活函数:在 FFNN 中,每个神经元会应用一个激活函数,以引入非线性,使模型能够学习复杂的模式。常见的激活函数有 ReLU(线性整流单元)、Sigmoid 和 Tanh。
-
4. 在 LLM 中的角色:虽然 LLM 的核心是自注意力机制,但 FFNN 层通常作为注意力层之后的一个处理步骤,用于进一步处理和转换信息。
MoE 概述
注意,我们这里提到的 专家 并不是专攻「心理学」或「数据」等特定领域的专家。它最多只是在单词层面学习句法信息。
更技术地说,专家的专长是在特定环境中处理特定的标记。
路由器(门网络)选择最适合给定输入的专家:
每个专家都只是 LLM 架构的一个子模型部分。
密集层
传统 Transformer 中的 FFNN 被称为密集模型,因为所有参数(其权重和偏差)均已激活。没有留下任何内容,所有内容都用于计算输出。
我们看一下标准的仅解码器的 Transformer 架构在层规范化之后应用了 FFNN 的情况:
解码器的主要功能是生成输出序列, 整个解码器的结构是通过层归一化、 掩码自注意力和前馈神经网络的组合来处理输入,并通过残差连接来稳定训练过程。
-
1. Layer Norm(层归一化):层归一化是一种正则化技术,用于加速训练并提高模型的稳定性。它在每一层的输入上进行归一化处理。
-
2. Masked Self-Attention(掩码自注意力):这是解码器中的一个关键组件。掩码自注意力机制确保在生成当前位置的输出时,模型只能访问到当前位置及其之前的输入,而不能访问到未来的输入。这防止了模型在生成过程中作弊。
-
3. FFNN(前馈神经网络):这是一个简单的前馈神经网络,通常由两个线性变换和一个激活函数组成。它用于对输入进行非线性变换,从而捕捉更复杂的特征。
-
4. +(残差连接):残差连接(Residual Connection),用于将输入直接添加到输出上,帮助缓解梯度消失问题,并使训练更加稳定。
密集连接(Dense)神经网络模型的的特点是每一层的每个神经元都与下一层的每个神经元相连。
Dense Model 的主要结构如下:
-
1. 输入层:输入层表示接收输入数据。
-
2. 隐藏层:中间部分有多个圆形,表示隐藏层。每个圆形代表一个神经元。图中显示有512个神经元(512 values),这些神经元通过权重连接到下一层的神经元。
-
3. 连接数:从隐藏层到输出层的连接数为2048,表示每个隐藏层神经元与输出层神经元之间的连接数。
-
4. 层数:图中显示了多层结构,具体层数可以通过连接线的数量和神经元的数量来推断。
密集连接神经网络模型通过多层神经元和大量的连接来处理和学习输入数据,从而实现复杂的模式识别和预测任务。
稀疏层
我们仔细观察 dense 模型,请注意 input 如何在某种程度上激活所有参数:
相比之下,稀疏模型仅激活其总参数的一部分,并且与 Mix of Expert 密切相关。
为了说明这,我们可以将密集模型切成多个块(所谓的「专家」),重新训练它,并且只在给定时间激活子集:
比如这样:
专家架构
由于大多数 LLM 都有多个解码器块,因此给定的文本在生成文本之前将经过多个专家:
所选的专家可能因输出 Token 不同而不同(并不是一次完整的输入输出只有一个路径):
路由器
现在我们有了一组专家,模型如何知道要使用哪些专家呢?
就在 expert 之前,添加了一个路由器(也称为门网络),该路由器经过训练,可以选择为给定令牌选择哪个专家。
路由器(或门网络)也是一个 FFNN,用于根据特定输入选择专家。它输出用于选择最佳匹配专家的概率:
专家层返回选定专家的输出乘以选择概率(门值),然后将结果加到路由器的输出上。
也就是说:路由器与专家(其中只有少数人被选中)一起构成了 MoE 层。
MoE 层有又有两种大小,一种是稀疏的专家混合,一种是密集的专家混合。
稀疏专家模型(Sparse Expert Models)在每次前向传播中, 仅激活一部分专家(子模型)进行计算。这种方式能够显著减少计算量和内存占用。 并且均有很好的扩展性,能够增加更多的专家而不显著增加计算成本。
密集专家模型(Dense Expert Models)则是在每次前向传播中激活所有专家进行计算。 这种方式通常会导致较高的计算和内存开销,但是能够更全面地捕捉数据的特征。 实现相对简单,不需要复杂的激活机制。
由于密集专家模型通常会激活所有专家,计算量大,不适合处理大量数据。 因此,在实际的应用中我们看到的 MoE 模型,通常是稀疏的专家模型。
专家选择
在稀疏专家模型中,路由器会选择最优的专家,然后将其输出加到路由器的输出上。
激活函数
在路由器的实现中,激活函数可能用于确定哪个专家被激活,尤其是在计算专家的权重时。 激活函数一般都有非线性适应,路由器的选择机制可以通过激活函数来增强, 使得模型在选择激活的专家时能够适应输入数据的特征。
SoftMaxSoftMax 是一种常用的激活函数,主要用于多类分类问题的模型输出层。它将一个向量的元素转换为概率分布,使得每个元素的值在 0 到 1 之间,并且所有元素的和为 1。
专家选择不仅存在于推理过程中决定选择哪些专家进行推理,也存在于训练过程中决定选择哪些专家进行训练。
专家选择过程
其最基本的计算形式中,我们将输入乘以路由器权重矩阵,获得输出:
然后,我们在输出上应用激活函数 SoftMax 来为每个专家创建概率分布:
路由器使用此概率分布为给定的输入选择最佳匹配的专家:
最后,我们将每个路由器的输出与每个选定的专家相乘,并对结果求和,得到最终的输出:
最后,我们把整个过程连在一起来看一下输入如何经过路由器和专家:
最后
至此我们已经了解了专家混合(MoE)架构的基本原理。 当然现实肯定比这个更复杂,比如怎么防止过拟合,如何进行负载均衡, 以及多模态怎么进行MoE等。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
更多推荐
所有评论(0)