继续介绍DeepSeek上周三发布的关于V3的论文【Insights into DeepSeek-V3: Scaling Challenges and Reflections on Hardware for AI Architectures】,今天要说的是 DeepSeekMoE

本文还会结合 DeepSeekMoE 24年的论文 【DeepSeekMoE: Towards Ultimate Expert Specialization in
Mixture-of-Experts Language Models】
Switch Transformer MoE的 21年的论文 【 Switch Transformers: Scaling to Trillion Parameter Models
with Simple and E cient Sparsity】

在这里插入图片描述

MoE

不是所有的牛奶都是特仑苏,所以在深入DeepSeekMoE之前,先来看看普通的MoE

MoE(Mixture-of-Experts 混合专家)的核心思想很简单,下面这个最经典的例子一看就明白:

在这里插入图片描述

当小帅身体不舒服来到医院的导诊处后,导诊会结合小帅的病症,引导他去最相关的科室,这其中有几点要理解:

  1. 医院有几十个科室,不可能每一个病人每次去医院都把所有科室走一遍,医生干不过来,病人也等不起(时间太长)
  2. 每一个科室就相当于一个Expert
  3. 由分诊台决定病人去哪个科室就医,所以它相当于一个Router的角色
  4. 分诊台根据病症的最相关性进行分配,也就是Router分配ExpertTop-K策略

把上述例子映射到MoE,就变成了:
在这里插入图片描述
token经过Router 通过 Top-K 策略 sparse(稀疏) 的路由,只激活部分Expert,而非像Dense(传统神经网络)一样激活所有参数。

下面以Switch Transformer 的MoE 举例,看下在 DeepSeekMoE 出现前的 MoE 长啥样:
在这里插入图片描述
可以看到,用MoE替换掉了普通的FFN(feed forward network),对于下面input的两个token,通过Rouer路由到了不同的Expert进行处理。

接下来对比一下MoE的优劣势:

MoE的优势:

  1. 大模型实现了低计算成本:总参数量很大,但实际计算量只激活部分参数
  2. 任务专业化和模块化:不同专家专注于特定领域
  3. 扩展性强:可以通过增加专家,而非增加模型的层深、层宽去扩展模型
  4. 并行计算友好:专家间的低耦合,天然的适合分布式训练和硬件加速

MoE的劣势:

  1. 难train:主要体现在负载不均衡,某些专家会被过度激活,也就是越厉害的越厉害,越差的越差
  2. 专家过拟合:如果专家过度专业化,会导致整个模型在其他领域的表现下降

DeepSeekMoE

既然普通MoE会存在上述问题,那就来看看DeepSeekMoE如果实现的突破,主要有3点:
在这里插入图片描述

  1. 更细粒度的专家细分(Fine-Grained Expert Segmentation):如果专家数量过少,例如医院里的医生很少,那么每个医生需要处理的case就越多越杂,不利于专家对某一领域知识的掌握,所以DeepSeekMoE做的第一步就是扩充专家数量,同时Top-K也进行扩充,这样Router在选择专家的时候,就会有更多的 专家组合
  2. 通用专家(Shard Expert Isolation):还拿医院举例,现在只要去医院不论什么病,医生都会先让你去验血拍片,这种每个Expert都具备的 通用 能力可以拿出来作为独立的 Shard Expert,每个token都会激活。
  3. 负载均衡(Load Balance):为了防止出现Expert负载不均衡的情况,DeepSeekMoE设计了Balance Loss ,希望让每个专家被调用的频率相同, l o s s b a l a n c e = ∑ 1.. N f i ∗ p i loss_{balance} = \sum_{1..N}f_i*p_i lossbalance=1..Nfipi ,其中 f i = 某个专家被调用的次数 所有专家被调用的次数 f_i = \frac{某个专家被调用的次数}{所有专家被调用的次数} fi=所有专家被调用的次数某个专家被调用的次数 p i = a v g ( 一个 b a t c h 的所有 t o k e n 对某个专家路由概率 ) p_i=avg(一个batch的所有token对某个专家路由概率) pi=avg(一个batch的所有token对某个专家路由概率)

通过上述改进,DeepSeekMoE 对比Dense和普通MoE,实现了很大提升:
在这里插入图片描述

最后再来看下DeekSeekMoE的核心代码:

代码以当前2025年5月21日为准,代码取自 Hugging face deepseek-moe-16b-base
在这里插入图片描述

在这里插入图片描述

以上,介绍了普通MoE架构,以及DeepSeekMoE做了哪些改进,下一篇继续介绍论文中的另外一块重要内容 MTP

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐