在Pytorch中高效实现专家层混合

时间:2019-04-29 10:38:06

标签: machine-learning neural-network pytorch

我正在尝试实现专家层的混合,类似于以下所述: https://arxiv.org/abs/1701.06538

基本上,此层具有多个子层F_i(x_i),这些子层处理输入的投影版本。还有一个选通层G_i(x_i),基本上是所有子专家层上的注意力机制:

sum(G_i(x_i)* F_i(x_i)。

我朴素的方法是为子层建立一个列表:

sublayer_list = nn.ModuleList() 对于我在范围(num_of_layer)中:     sublayer_list.append(self.make_layer())

然后在应用此方法时,我使用另一个for循环

out_list = [] 对于i,l枚举(sublayer_list):     out_list.appned(l(input [i]))

但是,添加此专家混合物层会使训练速度降低近7倍(与将MoE层交换为类似大小的MLP相比)。我想知道是否有更有效的方法在pytorch中实现此功能?非常感谢!

0 个答案:

没有答案