当前位置: 首页 > news >正文

MOE结构解读和deepseek的MoE结构

不管dense还是MoE(Mixture of Experts)都是基于transformer的。
下面回顾下解码器块的主要架构:
注意力机制-层归一化&残差连接-FFN前馈神经网络-层归一化&残差连接。

在这里插入图片描述

dense模型是沿用了这个一架构,将post-norm换为pre-norm,层归一化换成了RMSNorm归一化,FFN替换成GLU,MHA替换成GQA或MLA等。
MoE模型在dense的基础上,将FFN分为了若干个更小的FFN,从而扩大了模型容量。

dense模型和moe模型的区别:

1.架构上
dense模型一般采用transformer的稠密型架构。
MoE模型将FFN层划分了若干个小型专家FFN,并新增路由器进行专家选择。
2.训练上
dense模型在训练时,前向传播激活所有参数,反向传播更新所有参数,推理时也是激活所有。
MoE模型在训练时,前向传播会根据输入数据由路由网络选择部分专家进行激活,反向传播时也只更新被激活的专家和路由网络的参数。推理时路由网络会根据输入动态选择部分专家进行计算,只有被选中的专家会被激活。
3.推理上
MoE的时延更低,吞吐量更高。训练更不稳定。

MoE架构概述

MoE将dense的FFN层修改为了一个门控网络和多个小型FFN,在处理输入时,由门控网络选择激活最相关的top_k个FFN,将输出进行加权求和,得到MoE层的输出。目的是通过多个专家网络来提高模型的表达能力和性能。
计算公式:
在这里插入图片描述

MoE工作流程

1.输入数据x
2.进入门控网络,计算专家的权重
在这里插入图片描述
3.使用路由激活专家,获取加权和
每个专家都是一个FFN,输出对输入x的处理结果。汇总加权求和后输出y。这里的权重是门控网络给出的专家权重。
4.负载均衡策略
为了防止模型偏向于特定的专家,引入了辅助损失函数,迫使模型让所有的专家都得到训练。
下面是三种防止某些专家得不到训练的方法
在这里插入图片描述
辅助损失函数例子:
在这里插入图片描述

deepseekMoE的架构

在这里插入图片描述
1.更细粒度的专家:专家FFN参数量减少,使得每次可以选择4个专家激活。
2.共享专家:设置一个共享专家,用于存储通用知识,从而使其他专家更加专业化。

参考:
1.【DeepSeek-MOE原理讲解】 https://www.bilibili.com/video/BV1uUPieDEK1/?share_source=copy_web&vd_source=29af710704ae24d166ca951b4c167d53
2.https://arxiv.org/html/2401.06066v1
3.http://www.sniper97.cn/index.php/note/deep-learning/note-deep-learning/4497/#MoE_jie_shao

http://www.lryc.cn/news/542687.html

相关文章:

  • LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践
  • 基于C++“简单且有效”的“数据库连接池”
  • 为什么要将PDF转换为CSV?CSV是Excel吗?
  • Redis 集群的三种模式:一主一从、一主多从和多主多从
  • 面试题——简述Vue 3的服务器端渲染(SSR)是如何工作的?
  • 2.25DFS和BFS刷题
  • C语言基本知识------指针(4)
  • 【OMCI实践】ONT上线过程的omci消息(六)
  • C语言(13)------------>do-while循环
  • 腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
  • HybridCLR+Adressable+Springboot热更
  • 电脑连接示波器显示波形
  • 监听其他音频播放时暂停正在播放的音频
  • 小熊猫C++安装EasyX最新教程
  • 安装VM和Centos
  • git 命令 设置别名
  • React + TypeScript 全栈开发最佳实践
  • springboot志同道合交友网站设计与实现(代码+数据库+LW)
  • 防火墙双机热备---VRRP,VGMP,HRP(超详细)
  • MQTT实现智能家居------4、在Linux上运行MQTT
  • VMware建立linux虚拟机
  • 大模型文集开篇稿
  • python pickle模块
  • 第16届蓝桥杯模拟赛3 python组个人题解
  • 企业知识管理战略整合新路径
  • GO 快速升级Go版本
  • RBAC授权
  • 搜广推校招面经三十一
  • 【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?
  • C++知识整理day9——继承(基类与派生类之间的转换、派生类的默认成员函数、多继承问题)