腾讯二面真题:DeepSeek对MoE架构做了哪些改进?

发布于 2025-4-18 06:00
浏览
0收藏

DeepSeek 对 MoE 架构做了哪些改进?跟 Mixtral 的 MoE 有什么不同?这个是我的学员最近面试某个大模型独角兽遇到的一道面试题。

1.面试官心理分析

这篇文章,我们就从面试官的角度来分析一下,如果你在面试现场被问到这个题目,应该如何作答?

面试官问这个问题,它其实是想考你什么?

  • 第一,Mixtral 大模型采用的 MoE 架构长什么样?
  • 第二,就是 DeepSeek 的 MoE 做了哪些改进,这样改进的动机是什么?

2.面试题解析

要回答 DeepSeek 的 MoE 改进,我们先来看看,最原始的 MoE 网络长什么样子?以及它是怎么工作的?

这张图是 Mixtral 8x7B 的 MoE 架构:

腾讯二面真题:DeepSeek对MoE架构做了哪些改进?-AI.x社区

其核心思想很直观,它实际上用了 8 个7B的“专家”模型,当 MoE 与Transformer 相结合时,会用稀疏 MoE 层替换掉某些前馈层。

MoE 层包含了一个路由网络,用于选择将输入 token 分派给哪些专家处理,Mixtral 模型为每个词元选择 top-K 个专家,那在图中是选择两个。

因为每次只激活部分的专家,所以其解码速度能做到与 14B 模型相当,也就极大的提高了模型的推理效率。

好,了解了最原始的 MoE 架构,我们再来看看,DeepSeek 是怎么改进的?

看这张图,其实 DeepSeek 的主要改动点,就是把专家分成了两拨,分别是 Shared Expert 和 Routed Expert。

腾讯二面真题:DeepSeek对MoE架构做了哪些改进?-AI.x社区

通俗来讲,就好比学校的常驻教授和客座教授,常驻教授是一直在的,而客座教授则经常会变,不同的教学主题,有不同的客座教授。

在 DeepSeek 的 MoE 中,Shared Expert 是一直激活的,也就是输入的 token 会被 Shared Expert 计算,Routed Expert 和普通的 MoE 一样,要先计算相似度,也就是专家的得分,再选择 top-k 进行推理。

但是我们分析 DeepSeek 的源码可以发现,代码实际在计算 top-k 时,会先将 N 个 Expert 进行分组 n_groups,将每个组中 top-2 个专家的相似度得分加起来,算出得分最高的那些 top_k_group 组,然后在这些组里选择 top-k 个专家。

最后将所有的 Shared Expert 输出和 Routed Expert 输出做加权相加,得到 MoE 层的最终输出。

这里 Deepseek-v3 和 Deepseek-R1 采用了 256 个 Routed Expert 和 1个 Shared Expert,并在 Router 中选出 8 个来,参数量是 671B,而实际激活的参数量只有 37B。

好,现在我们答出了 DeepSeek 对 MoE 架构的改进点,面试官可能会继续追问:那它为什么要这样改进呢?这样改进有什么好处?

实际上这种设计主要是基于以下两点考虑:

第一,原始的 MoE 会产生较多的冗余,一个想法就是抽取一个 Shared Expert 出来处理通用知识,其他的 Routed Expert 来处理差异性的知识。

通过隔离 Shared Expert,以减轻 Routed Expert 所需要学习的知识量,从而减少路由专家之间的冗余。

第二个考虑是高效计算的层面,MoE 模型在训练的时候,会花费大量的时候来做通讯,因为 expert 会分散到不同的设备上,从而降低巨大的总参数量带来的显存消耗。

一种解决思路是:在通讯流处在工作状态的时候,同时用计算流进行后续的运算,从而隐藏掉部分通讯时间。

Shared Expert 的计算与 Routed Expert 通讯是不依赖的,因此可以使用通讯隐藏,从而比普通的 MoE 结构计算更高效。

本文转载自​丁师兄大模型,作者: 丁师兄

收藏
回复
举报
回复
相关推荐