MoE
MoE(Mixture-Of-Experts, 混合专家系统),在不增加计算量的情况下增加模型容量。采用的技术是Conditional computation,通过加入可训练的门控网络,决定专家系统的稀疏组合。直观看来,就是把一个大模型,按层拆分成不同的小模型组合,在输入样本时,动态地选择对应的小模型计算。
使用SPARSELY-GATE机制来选择模型,MoE包含一个门控网络决定激活哪些层。

MOE层的细节:
加噪声和topK的门控层

batch缩小问题
这种方式导致每个expert分到的样本太少。假设有n个experts,batch_size=b,每次会有k个expert被选择,每个expert会接收到平均kb/n << b个样本。
这里提出了一些增大batch的解决方法:
- 数据并行和模型并行: 相当于变相的扩大b,假设有d个device,每个device上一次处理b个样本,那么在这次训练中,batch=bd,从而每个expert会接收kbd/n个样本。
- 单步拆分: 在我们的实验中,MoE中每个expert都是一个单层全连接,而这个层次是在LSTM层之间,因而,可以把训练LSTM时的多步给拆分开,从而相当于增大MoE训练的batch_size。
- 采用一些方法优化模型训练时的内存,从而进一步增大batch size。
专家贡献不均衡问题
有些门控网络趋向于选择同样的一些专家,而这些专家因为被选择的多,训练的更加充分,导致更容易被选择,造成正反馈。
加入重要性loss,使专家的重要性尽量趋同

不同专家得到样本数不一样
加入新的loss,使每个专家得到的样本数量尽量一致
DeepSpeed对MoE的改进
- 拓展到自回归任务上(比如GPT3)
- moe有更低的 parameter efficiency, 即参数的增长和效果的增加不成正比
- 参数增加使得需要的GPU增加,带来推理性能的下降
解决办法
- 在自回归任务上尝试了moe,相比GPT3和MT-NLG,达到同样的效果降低了五倍消耗
- 使用Pyramid-Residual MoE(PR-MoE)提高parameter efficiency,可以减少三倍参数。并提出了压缩版的PR-MoE, MoS(Mixture-of-Students),减少3.7倍参数。
- 开发 DeepSpeed-MoE inference system.
PR-MoE
两个结论
-
在较深的层加MoE效果更好(更深即更顶层)

-
相比每次选取更多的专家,采用 Residual-MoE效果更好,效果接近的情况下,减少了通信消耗(因为每次只用两个专家)

综合这两个因素,采用PR-MoE

因为每层的专家个数不一样,专家并行很难确定统一的并行度,所以需要专家并行和数据并行结合在一起,如果每层的专家数小于GPU数,就用数据并行复制专家来填满GPU

deepspeed采用G-sharded对MoE的实现
https://arxiv.org/pdf/2006.16668.pdf
