DeepSeekV3与Qwen3中的混合专家模型MoE探究
混合专家模型(Mixture of Experts,MoE)是一种先进的神经网络模型架构,其通过动态路由机制选择性激活不同“专家”子模型,旨在平衡模型规模与计算效率。
混合专家模型(Mixture of Experts,MoE)是一种先进的神经网络模型架构,其通过动态路由机制选择性激活不同“专家”子模型,旨在平衡模型规模与计算效率。
在最新的大规模语言模型中,大部分已采用MoE架构:
-
Meta的Llama3.1坚持稠密性模型架构,但在今年发布的Llama4中也切换为MoE;
-
GLM-4.5新一代开源SOTA模型,采用MOE架构,总参数355B,激活32B;
-
Qwen3 7月下旬至8月初发布多个Qwen3-235B的版本及Qwen3-Coder,均为MOE架构;
-
阶跃星辰Step3正式开源,采用321B激活参数量38B的MoE架构;
-
...
可见在比拼算力和参数的现阶段,MoE已成为主流架构。
本文从概念及核心组件出发,详细介绍混合专家模型,并给出在Qwen3和DeepSeekV3中的实现分析。
1. MoE核心思想及组成
MoE通常位于注意力层之后,由多个独立神经网络(Experts)和一个门控网络(Gate)组成。 MoE的主要组成部分包括:
- 门控网络(Gate)
门控网络相当于一个路由器,用来决定输入的每个token由哪个专家或哪些专家来处理。它根据输入token的特征计算出每个专家的权重或重要性,然后根据这些权重将输入token分配给相应的专家。门控网络通常是一个简单的神经网络,其输出经过softmax激活函数处理,以确保所有专家的权重之和为1。
- 专家(Experts)
模型中的每个专家都是一个独立的神经网络,专门处理输入数据的特定子集或特定任务。

MoE的门控路由机制决定其需要随时调用任意专家,所以所有专家的参数均需常驻显存(各种优化交换、使用CPU内存等方法是另外话题),但在执行过程中门控网络根据输入特征动态分配任务最合适的处理专家,仅激活这部分专家参与计算,大大降低了计算量。
MoE模型的主要优势有:
- 提高模型性能
通过将多个专家的预测结果进行加权整合,MoE模型可以在执行不同任务时发挥最适合专家的优势,从而提高模型的整体性能。
- 减少计算成本
与传统密集模型相比,MoE模型在处理每个输入样本时,只有相关的专家会被激活参与计算,大大减少计算量。
- 增强模型的可扩展性
MoE模型架构设计中可以灵活增加专家数量来扩大模型规模。通过增加专家的数量,模型可以覆盖更广泛的数据特征和任务类型,从而在不增加计算复杂度的情况下,提升模型的表达能力和泛化能力。
2. MoE模型架构详解
2.1 专家
作为混合专家模型(MoE)的核心组件之一,专家(Expert)是MoE中专门处理特定数据子集或任务的独立神经网络。通过深度优化其负责领域的特征(如图像纹理、语义结构),实现对输入数据的高效处理与精准预测。
专家一般多采用前馈神经网络(FFN) 结构,包含全连接层与非线性激活函数(如ReLU/GELU)。例如在NLP任务中,专家通过两层映射:词嵌入→高维特征→输出空间,以此捕捉复杂语言模式。
专家参数量直接决定模型容量。MoE通过增加专家数量而非单体参数规模,实现总参数量跃升(如单专家数千万参数,整体达数十亿),在控制计算成本的同时提升表达能力
在Qwen3的MoE实现中,每个专家Qwen3MoeMLP的定义如下:
class Qwen3MoeMLP(nn.Module):
def __init__(self, config, intermediate_size=None):
super().__init__()
self.config = config
self.hidden_size = config.hidden_size
self.intermediate_size = intermediate_size if intermediate_size is not None else config.intermediate_size
self.gate_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False)
self.up_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False)
self.down_proj = nn.Linear(self.intermediate_size, self.hidden_size, bias=False)
self.act_fn = ACT2FN[config.hidden_act]
def forward(self, x):
down_proj = self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x))
return down_proj

这个Expert结构与Qwen3稠密模型中的MLP结构完全一致,即
,DeepSeekV3 的MoE模型中的专家结构DeepseekV3MLP也采用相同的定义。
2.2 门控网络
2.2.1 门控网络概述
门控网络的主要作用是根据输入数据的特征动态决定哪些样本由哪些专家进行处理,并为每个专家分配相应的权重。
门控网络的核心是基于token的“上下文嵌入”(contextual embedding)而非原始token本身。
例如在Qwen3Moe的 decoder 层中,每个token的hidden_states经过多层自注意力(Self-Attention)和前馈网络(MLP/MoE)处理后,已经蕴含了与前文token的语义关联(通过自注意力捕捉)以及句子结构和语法信息(通过多层网络迭代优化)。
在Qwen3MoeSparseMoeBlock.forward中,路由逻辑使用的是经过多层处理的hidden_states,其已包含之前的注意力层和MLP层产生的上下文信息:
router_logits = self.gate(hidden_states) # hidden_states是上下文嵌入,非原始token嵌入
routing_weights = F.softmax(router_logits, dim=1) # 基于上下文计算路由权重
因此,即使是相同的token(如“2”),在不同句子中(如“2是数字”和“2+5=7”),其hidden_states会因上下文不同而差异显著,路由结果也会不同(前者可能路由到“常识专家”,后者路由到“数学计算专家”)。
在Qwen3Moe中,路由采用gate->softmax->topk的方式选择,通过线性层直接输出路由分数。
在DeepSeekV3的MOE中,与常规 MoE 路由(直接对所有专家进行 top-k 选择)不同,它通过分组筛选→组内精筛的两级路由策略,实现更高效的专家负载均衡和功能模块化。
2.2.2 DeepSeekV3的专家选择
Deepseek V3 模型混合专家(MoE)机制通过DeepseekV3TopkRouter实现。
其初始化的核心配置参数有:
- num_experts_per_tok
:每个 token 选择的专家数量(8)
- n_routed_experts
:专家总数,256
- n_group
:将所有专家均匀分为 n_group 组(如v3配置文件中的 256 个专家分为 8 组,每组 32 个专家),限制单次路由的专家候选池范围。
- topk_group
:从 n_group 组中筛选出 topk_group 个优质组,仅从这些组中选择专家,避免全局top-k导致的专家负载集中。
在选择过程中,主要有如下几步
-
分数修正:通过 e_score_correction_bias 调整专家基础分数,避免某些专家因初始权重优势被过度选择(负载均衡)。
-
专家分组:将 n_routed_experts 个专家分为 n_group 组,每组专家数量为 n_routed_experts // n_group。
-
组筛选:计算每组的“组分数”(组内 top-2 专家分数之和),选择 topk_group 个高分组,大幅缩小候选专家范围。
-
组内精筛:仅从选中组中选择 top_k 个专家,最终输出每个 token 的专家索引(topk_indices)和对应权重(topk_weights)
分组限制避免了全局筛选导致的效率问题,通过组内精筛的方式又保证了专家选择的针对性,适合DeepSeekV3等专家数量众多的大规模MoE模型
2.2.3 门控网络路由拆解的意义与示例
门控网络将输入中的不同token路由到不同专家,本质是模型自动将复杂任务拆解为子任务,并分配给专精不同子任务的专家,类似于人类分工协作:
-
语言理解专家:处理语法、语义(如“我”,“想知道”,“等于多少”);
-
数学计算专家:处理数字、运算符(如“2”,“+”,“5”);
-
逻辑推理专家:处理问题意图(如“?”表示疑问,需输出答案)。
示例:“我想知道2+5等于多少?”的路由过程 假设模型有3类专家:语言专家E1、数学专家E2、逻辑专家E3,路由过程如下:
-
token级上下文嵌入: 每个token的hidden_states通过自注意力层学习上下文关联。例如,“2”的嵌入会包含“后接‘+’和‘5’,可能涉及计算”的信息,“?”的嵌入会包含“需要输出结论”的信息。
-
路由决策:
-
“我”“想知道”:路由到E1(语言专家处理语义);
-
“2”“+”“5”:路由到E2(数学专家处理计算);
-
“等于多少”“?”:路由到E3(逻辑专家处理问题意图)。
-
专家输出合并: 每个专家处理分配的token后,通过routing_weights加权合并结果。例如:
-
E2输出“2+5=7”的计算结果;
-
E1和E3输出“将计算结果整理为自然语言回答”的逻辑;
-
最终合并为“2+5等于7”。
2.2.4 DeepSeekV3及Qwen3中的MoE
按照transformers库中的代码,大致整理了下DeepSeekV3和Qwen3中的MoE实现:

DeepSeekV3的每个解码层中含有1个共享专家,8个门控网络激活的专家,固定共享专家处理通用特征,而激活的动态专家负责专项事务。Qwen3中没有共享专家,依赖门控路由网络动态激活8个专家,增强任务灵活性。
DeepSeekV3中的1个共享专家与可动态选择的专家略不一样,其采用依赖n_shared_experts的超宽的中间层维度,
self.shared_experts = DeepseekV3MLP(
config=config, intermediate_size=config.moe_intermediate_size * config.n_shared_experts
)
v3的配置文件中config.moe_intermediate_size=1536,config.n_shared_experts=1,所以默认情况下共享专家与动态选择专家在结构方面恰好是一致的。
AI大模型从0到精通全套学习大礼包
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
只要你是真心想学AI大模型,我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来,我也真心希望帮助大家学好这门技术,如果日后有什么学习上的问题,欢迎找我交流,有技术上面的问题,我是很愿意去帮助大家的!
如果你也想通过学大模型技术去帮助就业和转行,可以点扫描下方👇👇
大模型重磅福利:入门进阶全套104G学习资源包免费分享!
01.从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点
02.AI大模型学习路线图(还有视频解说)
全过程AI大模型学习路线


03.学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的

04.大模型面试题目详解


05.这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)