大模型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)命名空间调用(…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
