libai icon indicating copy to clipboard operation
libai copied to clipboard

MoE

Open thinksoso opened this issue 3 years ago • 3 comments

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

thinksoso avatar Apr 06 '22 06:04 thinksoso

MOE层的细节:

加噪声和topK的门控层 image

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,使专家的重要性尽量趋同 image

不同专家得到样本数不一样

image 加入新的loss,使每个专家得到的样本数量尽量一致

thinksoso avatar Apr 06 '22 11:04 thinksoso

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

两个结论

  1. 在较深的层加MoE效果更好(更深即更顶层) image

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

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

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

thinksoso avatar Apr 07 '22 10:04 thinksoso

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

thinksoso avatar Apr 08 '22 08:04 thinksoso