
传统模型就像一位超级教授,必须精通所有学科,从文学到物理,从历史到计算机科学。
- 每个问题都由这位教授独自解答。
MoE模型则像一所设有多个系的大学,有文学教授、物理教授、历史教授等。
- 每当有问题来临,先由导师(Router)决定该问问哪个或哪几个教授,然后综合他们的答案。
MoE的核心思想:分工合作,各尽所长。
MoE架构的基本组成
MoE架构主要由三部分组成:
专家网络:多个独立的神经网络,每个专注于处理特定类型的任务。
路由器:决定将输入分配给哪些专家处理。
组合器:将选中专家的答案加权组合成最终输出。
MoE的工作流程
用一个就医的例子来解释MoE的工作流程:
你来到医院(输入数据进入模型)。
前台接待(路由器)询问你的症状。
前台决定将你转诊给心脏科医生和肺科医生(选择适合的专家)。
两位医生分别给出诊断(专家处理信息)。
综合考虑两位医生的意见,前台给你最终的治疗方案(组合专家输出)。
在DeepSeek中,这个过程是这样的:
文本输入模型。
路由器分析每个词(Token)应该交给哪些专家处理。
被选中的专家(通常是2个)处理这个词。
组合器将专家的输出按权重合并。
形成最终的表示,继续后续处理。
为什么MoE这么厉害?
更高效的计算:
假设有一个具有8个专家的MOE模型,每次只用2个专家:
- 普通模型:处理1个词 = 使用100%的计算资源。
- MOE模型:处理1个词 = 使用约25%的计算资源(2/8)。
这意味着同样的计算资源,MOE模型可以处理更多信息或使用更大的模型。
更大的模型容量:
传统模型增加参数量必然增加计算量,而MoE可以增加大量参数而只小幅增加计算量。
例如:
- 8个专家,每次用2个 = 参数量是普通模型的4倍,但计算量只增加约50%。
这就像拥有8本厚厚的专业书,但每次只需查阅其中2本,既有庞大的知识库,又能快速找到答案。
MoE的关键技术挑战及解决方案
专家不平衡问题:
问题:有些专家可能总是被选中,有些却几乎不用。
就像医院里心脏科医生忙得不可开交,而皮肤科医生却无人问津。
解决方案:负载均衡。
DeepSeek使用一种特殊的训练目标,鼓励路由器平均分配任务。
通信开销:
在大型分布式系统中,专家可能分布在不同机器上,数据传输会成为瓶颈。
解决方案:
DeepSeek对数据进行批量处理,减少传输次数,就像医院会集中安排同类患者在特定时段就诊,而不是随到随诊。
DeepSeek-MoE架构
在DeepSeek模型中,MoE主要用在
Transformer
的前馈网络(FFN)部分。简单来说:
保留标准的自注意力机制不变。
将原来的单一前馈网络替换为多个专家网络。
添加路由机制决定使用哪些专家。
其他部分(如注意力层、层归一化等)保持不变。
这种设计让模型在不改变整体架构的情况下获得MoE的好处。
