一文详解混合专家模型(MoE),大模型架构新趋势与代码实战指南
混合专家模型(MoE)已成为当前大模型主流架构,由门控网络和多个专家组成。门控网络根据输入特征动态路由至最合适的专家,实现"稀疏激活",在保持大规模参数的同时降低计算成本。MoE通过专家分工协作提高模型性能与可扩展性,如Qwen3采用动态专家选择,DeepSeekV3则采用两级路由策略。这种架构使大模型能在有限计算资源下获得更强的表达能力。
混合专家模型(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的定义如下:
classQwen3MoeMLP(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 isnotNoneelse 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]
defforward(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
)
的超宽的中间层维度,
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大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

4. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】

更多推荐

所有评论(0)