MoE
什么是MoE
Mixture of Experts
MoE使用Sparse,MLP替换FFN
为什么MoE
不可能三角:Performance、Cost、Size。
成本-性能
传统的Dense模型,想要Scale Up,提升Size,一定会带动Computation提升,从而导致Cost太大。
Moe将Performance、Size解耦,Scale Up提升Size,但是Computation不会变化。(只激活部分Expert)
单一职责Knowledge
传统模型,Knowledge存储在FFN;MoE将不同领域知识放在不同的Expert里面,有专业化区分,单一职责。
参数量更大,也使MoE模型可以存储更多Knowledge。
Sparse
CNN本质就是引入Sparse。Sparse引领Machine Learning/Deep Learning发展。
Sparse做的事是捕捉信息的low-dimension pattern,提升learning efficiency。(这也是CNN性能好于MLP的原因)
MoE比Dense好在哪?
- MoE在总参量一样的情况下,都比同样参数的Dense要好(激活参数、总参数都是)
- MoE训练时间更短:更低的Training、Validation Loss
DeepSeek MoE
Fine-Grain Expert
把比较大的Expert分成多个小Experts
Shared Expert
所有输入都会经过Shared Expert,不依赖Router
效果验证
从8-32,有提升;但是从32-64,几乎没有;Experts有一个Sweet Point
而Shared Expert其实没有什么用,属于人的错误先验假设
训练时Token分类
Token Choice
根据每个Token做Router选择专家;
存在LoadBalance问题,被集中分配到某些Expert身上。
也就是说,有些Expert没有被充分训练
Expert Choice
反过来,从Expert的角度分配Token;
存在Token Dropping,有些Token没有被选择到;
在Inference时,因为AutoRegressive,无法看到后面的Token,这个方法会有问题。解决方法是增加一个MLP中间层。
目前,Token Choice表现还是好一点
MoE的困难
Sparse训练困难:Training Instability
训练不稳定,容易Loss崩溃