大模型Transformer的MOE架构介绍及方案整理
前言:DeepSeek模型最近引起了NLP领域的极大关注,也让大家进一步对MOE(混合专家网络)架构提起了信心,借此机会整理下MOE的简单知识和对应的大模型。本文的思路是MOE的起源介绍、原理解释、再到现有MOE大模型的整理。
一、MOE的起源和架构
MoE的概念最早由MIT等人在论文中指出:混合专家网络可以看作是多层监督网络的模块化版本。比如元音识别任务,可以分解为多个子任务,每个子任务可以由一个非常简单的专家网络解决。

图1-1:最早的MOE模型(经典之作,其思想沿用至今)-框架图
从让专家之间学会合作->过渡到让专家之间学会竞争:在合作时,各个专家之间是强耦合的,导致解决方案中使用多个专家;当转换为竞争后,将可以得到少数专家活跃的解决方案。这可以通过修改误差函数实现,见图1-2。

图1-2:最早的MOE模型-损失函数
随着稀疏门控MoE的出现(Sparsely-Gated Mixture-of-Experts),特别是在基于Transformer的LLM中成功地集成(Gshard),为这一30年历史的技术注入了新的活力。
小结——MoE框架基于一个简单而强大的理念:模型的不同部分(称为专家)专注于不同的任务。在这种范式下,只有与给定输入相关的专家会被激活,从而使得模型在具备海量专业知识的同时,保持计算成本的可控性。
二、MOE的分类
根据激活专家情况,可以把MOE模型分为Dense MoE和Sparse MoE,接下来分别展开介绍。

图2-1:MOE模型的分类(根据激活专家情况)
2.1 Dense MoE
Dense MoE在每次迭代中激活所有专家网络,优缺点如下:
- 优点:通常能够提供更高的预测准确性
- 缺点:会显著增加计算开销
Dense MoE层的输出可以表示为:

图2-2:Dense MoE层的输出计算
2.2 Sparse MoE
为了解决Dense MoE的"显著增加计算开销"这一问题,谷歌等人提出了Sparse MoE层,即在每次前向传播过程中仅激活选定的一部分专家,GShard便是其中的经典之作。这一策略通过计算加权和的前 k个专家的输出,而不是聚合所有专家的输出,从而实现了稀疏性。稀疏MoE层的结构如图2-1。稀疏门控机制的公式可以修改为:

图2-3:Sparse MoE层的输出计算
尽管稀疏门控显著扩展了模型的参数空间而不增加计算成本,但它可能导致负载均衡问题:即专家之间工作负载分布不均,某些专家频繁使用,而其他专家很少或从未使用。
为了解决这一问题,每个MoE层都引入了一个辅助负载均衡损失(Auxiliary load balancing loss),以促进每个batch中各专家之间token的均匀分布:

图2-4:Sparse MoE引入的辅助负载均衡损失的公式
通过引入辅助loss,模型保持了所有专家之间的平衡,以促使所有时间内专家的工作负载满足均匀分布。
三、MOE各系列大模型技术点汇总
基于MOE思想构建大模型,自2018的提出->到2022年底chatGPT的出现->再到如今DeepSeek大火,已经经历了七年之久,模型更新脉络如下图3-1所示,本文会将代表性MOE(热度高/效果好)大模型总结在本章节。

图3-1:基于MOE的LLM汇总
3.1 Mistral-MOE
Mixtral 8x7B:一种稀疏混合专家(SMoE)语言模型。它具有与Mistral 7B(其结构可参考笔者另一篇文章)相似的架构,不同之处在于每一层由8个FFN模块(即专家)组成。对于每个token,在每一层,路由网络会选择两个专家(topk=2)来处理当前状态并整合它们的输出。尽管每个token只看到2个专家,但选择的专家在每个时间步可能不同。因此,每个token可以访问47B参数,但在推理过程中只使用13B活跃参数。Mixtral使用32k个token的上下文长度进行训练,并在所有评测基准上优于或等于Llama2-70B和GPT-3.5。

图3-2:Mistral-MOE的架构参数
参考: https://arxiv.org/pdf/2401.04088、 假如给我一只AI:LLM开源大模型汇总-截止0218
3.2 LLaMA-MOE
基于LLaMA2-7B 模型(其结构可参考笔者另一篇文章),作者通过"专家构建"和"持续预训练"这两步就获得了 MoE 模型。

图3-3:LLaMA-MOE模型的两步操作——专家构建和持续预训练
- 最终效果:LLaMA-MoE 模型能够保持语言能力,并将输入的 token 路由到特定的专家,且部分参数被激活。
- 实验表明:通过训练 200B token,LLaMA-MoE-3.5B 模型在性能上显著优于包含类似激活参数的Dense模型。
1)专家构建:将原始FFN层的参数分割成多个专家

图3-4:LLaMA-MOE的专家构建流程梳理
2)持续预训练:进一步训练转换后的 MoE 模型和额外的门网络
在经历"专家构建"后,原始LLaMA模型结构会被重新组织为MoE架构,为了恢复其语言建模能力,作者采用"持续预训练"策略进一步训练LLaMA-MoE模型(该策略使用的训练目标与 LLaMA2 相同)。为了提高训练效率,作者探索了不同的'数据采样策略"和"数据过滤策略"。
如果要采用"持续预训练策略",可能遇到问题见表3-1:

表3-1:持续预训练可能遇到的问题
文章具体采用的方法:1)采用"数据过滤",得到去噪且流畅性高的数据;2)对比四种"数据采样策略",实验对比哪种好选择哪种即可。具体总结如下表3-2:

表3-2:4种采样策略和2种数据过滤策略
参考: https://arxiv.org/pdf/2406.16554、 Swish激活函数、 LLaMA2论文)
3.3 Deepseek-MOE
1)DeepSeek-MoE(V1版模型)
解决当前MOE模型存在的两方面问题:
- 专家数量小但token信息丰富:将多样的知识分配给有限的专家,有概率导致专家"试着在有限的参数中学习大量不同类型的知识",然而这些知识又难以同时利用,最终会降低专家的专业性。
- 多个专家之间存在知识冗余:在传统路由策略中,分配token给不同专家时可能需要一些"共享知识"。因此,多个专家可能在各自参数中"收敛于共享知识",这就会导致专家参数冗余。
DeepSeek-MoE给出的解决方案见下图:

图3-5:DeepSeek-MoE的细粒度专家和共享专家
在此基础上,DeepSeek-MOE也具有考虑了负载平衡:即自动学习的路由策略可能会遇到负载不平衡的问题,这会导致两个显著的缺陷:[A] 存在路由崩溃的风险,即模型始终选择少数几个专家,其他专家缺乏充分训练;[B] 如果专家分布在多个设备上,负载不平衡会加剧计算瓶颈。
解决2个问题,分别提出了专家级负载loss和设备级负载loss,问题->解决->公式的解释如下图:

图3-6:DeepSeek-MoE的专家级负载和设备级负载,公式推导见https://zhuanlan.zhihu.com/p/18565423596
2)DeepSeek-V2模型
在DeepSeek-MoE的基础上,新增了一个路由机制和两个负载均衡方法,即设备受限的专家路由机制、通信负载均衡loss和设备级Token丢弃策略,它们的问题->解决->公式的解释如下两图:

图3-7a:DeepSeek-V2的设备受限的专家路由机制

图3-7b:DeepSeek-V2的通信负载均衡和设备级Token丢弃策略
3)DeepSeek-V3模型
相比DeepSeek-V2,DeepSeek-V3在MOE架构上的改进有三点:
- 使用 sigmoid 函数计算亲和度,并对所有选定的亲和度进行归一化以产生门值(图3-8a)。
- 提出了无辅助Loss的负载均衡技术和sequence粒度的负载均衡Loss(图3-8b)。
- 接入了节点限制的路由和无token丢弃策略(图3-8c)。

图3-8a:DeepSeek-V3的亲和度计算公式

图3-8b:DeepSeek-V3的无辅助Loss的负载均衡技术和sequence粒度的负载均衡Loss

图3-8c:DeepSeek-V3的节点限制的路由和无token丢弃策略
代码学习:DeepSeek-MoE源码、DeepSeek-V3源码
参考: DeepSeek-MOE论文、 DeepSeek-V2论文、 DeepSeek-V3论文
3.4 Qwen-MOE
【持续更新】
https://qwenlm.github.io/blog/qwen-moe/
3.5 Nvidia-MOE
【持续更新】
3.6 Grok-MOE
【持续更新】
3.7 Skywork-MOE
【持续更新】
https://arxiv.org/pdf/2406.06563
四、参考文献
- MOE综述:https://arxiv.org/pdf/2407.06204
- 姜富春:deepseek技术解读(3)-MoE的演进之路
- Gshard:https://arxiv.org/pdf/2006.16668
- https://arxiv.org/pdf/1701.06538
- Mistral-moe:https://arxiv.org/pdf/2401.04088
相关文章:
大模型Transformer的MOE架构介绍及方案整理
前言:DeepSeek模型最近引起了NLP领域的极大关注,也让大家进一步对MOE(混合专家网络)架构提起了信心,借此机会整理下MOE的简单知识和对应的大模型。本文的思路是MOE的起源介绍、原理解释、再到现有MOE大模型的整理。 一…...
零基础掌握Linux SCP命令:5分钟实现高效文件传输,小白必看!
引言 “为什么我传个文件到服务器要折腾半小时?” 如果你也曾在Linux系统中为文件传输抓狂,今天这篇保姆级教程就是你的救星!SCP命令——一个基于SSH协议的高效传输工具,只需5分钟,彻底告别FTP客户端和繁琐操作&#…...
分类评价指标
基础概念解释 TP、TN、FP、FN 这里T是True,F是False,P为Positive,N为Negative TP:被模型正确地预测为正样本(原本为正样本,预测为正样本) TN:被模型正确地预测为负样本࿰…...
Python项目-基于Django的在线教育平台开发
1. 项目概述 在线教育平台已成为现代教育的重要组成部分,特别是在后疫情时代,远程学习的需求显著增加。本文将详细介绍如何使用Python的Django框架开发一个功能完善的在线教育平台,包括系统设计、核心功能实现以及部署上线等关键环节。 本项…...
子数组问题——动态规划
个人主页:敲上瘾-CSDN博客 动态规划 基础dp:基础dp——动态规划-CSDN博客多状态dp:多状态dp——动态规划-CSDN博客 目录 一、解题技巧 二、最大子数组和 三、乘积最大子数组 四、最长湍流子数组 五、单词拆分 一、解题技巧 区分子数组&…...
linux设置pem免密登录和密码登录
其实现在chatgpt 上面很多东西问题都可以找到比较好答案了,最近换了一个服务器,记录一下。 如果设置root用户,就直接切换到cd .ssh目录下生成ssh key即可,不需要创建用户创建用户的ssh文件夹了 比如说我要让danny这个用户可以用p…...
什么是Flask
Flask是Python中一个简单、灵活和易用的Web框架,适合初学者使用。它提供了丰富的功能和扩展性,可以帮助开发者快速构建功能完善的Web应用程序。 以下是Python Flask框架的一些特点和功能: Flask 是一个使用 Python 编写的轻量级 WSGI 微 Web…...
Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步
一.hadoop的运行模式 二.scp命令————基本使用 三.scp命令———拓展使用 四.rsync远程同步 五.xsync脚本集群之间的同步 一.hadoop的运行模式 hadoop一共有如下三种运行方式: 1. 本地运行。数据存储在linux本地,测试偶尔用一下。我们上一节课使用…...
【cocos creator】热更新
一、介绍 试了官方的热更新功能,总结一下 主要用于安卓包热更新 参考: Cocos Creator 2.2.2 热更新简易教程 基于cocos creator2.4.x的热更笔记 二、使用软件 1、cocos creator v2.4.10 2、creator热更新插件:热更新manifest生成工具&…...
黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…...
部署vue+django项目(初版)
1.准备 vscode 插件Remote SSH,连接远程,打开远程中home文件夹。 镜像和容器的一些常用命令 docker images docker ps 查看所有正在运行的容器 docker ps -a docker rmi -f tk-django-app 删除镜像 docker rm xxx 删除容器 docker start xxxx …...
Redis7系列:设置开机自启
前面的文章讲了Redis和Redis Stack的安装,随着服务器的重启,导致Redis 客户端无法连接。原来的是Redis没有配置开机自启。此文记录一下如何配置开机自启。 1、修改配置文件 前面的Redis和Redis Stack的安装的文章中已经讲了redis.config的配置…...
HarmonyOS学习第18天:多媒体功能全解析
一、开篇引入 在当今数字化时代,多媒体已经深度融入我们的日常生活。无论是在工作中通过视频会议进行沟通协作,还是在学习时借助在线课程的音频讲解加深理解,亦或是在休闲时光用手机播放音乐放松身心、观看视频打发时间,多媒体功…...
在rocklinux里面批量部署安装rocklinx9
部署三台Rockylinux9服务器 实验要求 1. 自动安装ubuntu server20以上版本 2. 自动部署三台Rockylinux9服务器,最小化安装,安装基础包,并设定国内源,设静态IP 实验步骤 安装软件 # yum源必须有epel源 # dnf install -y epel-re…...
Manus:成为AI Agent领域的标杆
一、引言 官网:Manus 随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独…...
【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名,并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名,并连续按两次…...
WinForm模态与非模态窗体
1、模态窗体 1)定义: 模态窗体是指当窗体显示时,用户必须先关闭该窗体,才能继续与应用程序的其他部分进行交互。 2)特点: 窗体以模态方式显示时,会阻塞主窗体的操作。用户必须处理完模态窗体上…...
静态时序分析:SDC约束命令set_ideal_network详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true)&#…...
【学习方法】技术开发者的提问智慧:如何高效获得解答?
技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...
C++:入门详解(关于C与C++基本差别)
目录 一.C的第一个程序 二.命名空间(namespace) 1.命名空间的定义与使用: (1)命名空间里可以定义变量,函数,结构体等多种类型 (2)命名空间调用(…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
