1、前言
在有限的计算资源预算下,用更少的训练步数训练更大的模型,往往比耗费更多的步数来训练模型效果更佳。比如,由于大规模推荐系统可能包含数百万甚至数十亿的参数,这些额外的参数往往是欠约束的,这可能会损害模型质量。于是,就有了专家模型(moe)。
2、MOE介绍
MoE是一种大型模型架构(图b)。一个MoE模型可以被视为由不同的子模型(或专家)组成,每个子模型专门从事不同的输入,一个可训练的门控网络(gate)决定了这些专家(expert)对每个实例所使用的稀疏组合。具体来说,每一层的专家都由门控网络控制,门控网络根据输入数据激活专家。
每一个expert都是基于DNN(深度神经网络)构造的,简单来说就是一个expert就是一个神经网络,Gate可以看作是我们要选择哪些专家(分配权重到各个Expert,即组合不同的深度神经网络)来处理输出的数据。Gate的输出是传统网络每一层对input(输入数据)进行处理得到
3、Pytorch实现
class MOELayer(nn.Module):
def __init__(self, input_dim, num_tasks, num_ex