[大模型面试] 主流LLM为何选用MoE架构? MoE相较Dense的核心...
迷茫又坚定的阿蓝
2025年09月16日 18:12

架构: 把dense ffn拆成n个小的sparse ffn,在计算attn之后

router选择expert,router是一个ffn,接上softmax,得到每个expert分配得到的probability.

topk选多少个e,这是一个超参

why?

现在的大模型从三个方面scale up模型,魔性的参数量,计算量和训练数据。带来的问题是:遇到瓶颈,遇到了不可能三角,分别是模型的性能,size和速度,不能同时优化。

moe的本质是解耦合模型的参数量和计算量,可以把参数量做的很大,但是计算量随着参数量急剧增大。他有实际的激活参数。

现在的观点认为,知识存在ffn里面,因此moe的expert有了知识分类的划分。而且moe模型可以做的更大,可以存下更多的知识。

moe本质上是在sparse上,类似cnn引入了sparse的卷积kernel,类似于一个矩阵的svd。其实类似于cnn人为的加入prior。

他的优点:训练拟合快

他的缺点:训练容易不稳定

可能的问题: expert的负载问题

moe: open mixture of expert language model

switch transformer: moe的scaling law,在e上做scale up

deep seek moe: fine grain expert更小的e, shared expert.有一个必须经过的e,代表人为注入先验知识。

router strategy

token choice: 按照token分配,针对每一个token,选topk个expert。带来load balance的问题,某些expert会很集中,有些训练不充分。

expert choice: 给每个expert 选topk个token。token可能会被重复选到,而且可能被漏选,token drop,信息没有被很好的利用。在sr模型里,因为每次都只能看到前面的token。这个方法在infer有问题。

而且现在论文中发现token choice的性能远高于expert的。会有一些load loss去约束防止load balance问题。

moe的初始化: n个ffn参数线性拆分,或者直接拷贝,router Xavier初始化,保证无偏向性。

训练的trick:

为保护预训练知识,初始化后需分阶段微调:

1. 第一阶段(冻结基础模块):仅解冻门控网络和专家网络的“微调层”(如专家的输出线性层),固定预训练的基础模块(注意力层、LayerNorm)和专家网络的核心参数,让门控先学习“如何合理分配输入给专家”;

2. 第二阶段(逐步解冻):待门控输出稳定(负载均衡性达标)后,再逐步解冻专家网络的全部参数和基础模块,结合任务数据微调,让 MOE 整体适配下游任务