我整理好的1000+面试题,请看 
大模型面试题总结-CSDN博客
或者

https://gitee.com/lilitom/ai_interview_questions/blob/master/README.md

最好将URL复制到浏览器中打开,不然可能无法直接打开

-------------------------------------------------------------------------------------------------

好了,我们今天针对上面的问题,

MoE中如何缓解专家选择不均衡的问题?

  • 方法一:在门控网络后应用dropout

混合专家模型(MoE)的稀疏激活机制与dropout技术有相似之处。MoE会根据任务需求激活一部分专家模型来执行任务,而dropout则是在训练过程中随机关闭神经网络中的部分神经元,每次只保留一部分参数。这种做法不仅赋予了网络稀疏性,减少了参数规模,还有助于降低过拟合风险,从而增强模型的泛化能力。

  • 方法二:引入软约束

我们引入了一个额外的损失函数:对于一个批次的训练样本,定义每个专家的重要性度量 ,即该专家在该批次中门控输出值的总和。同时,定义损失项 ,并将其加入到模型的总体损失中。该损失项是所有专家重要度的变异系数(CV)的平方,再乘以一个手动调整的权重因子 。

损失项旨在鼓励所有专家具有相似的重要性。 表示变异系数,它反映了分布的离散程度。如果出现极端分布,CV值将会较高。

即使如此,某些专家可能仍然会接收到数量差异很大的样本。例如,一些专家可能接收到少量但权重较大的样本;而另一些专家可能接收到更多但权重较小的样本。为了解决这个问题,我们引入了第二个损失函数 ,以确保负载的均衡性。

这里, 指的是 中除了第 个分量外的第 大的分量。简化后,我们得到:

其中, 是标准正态分布的累积分布函数(CDF)。

我们现在可以将负载损失定义为负载向量变异系数的平方,乘以一个手动调整的比例因子 。

注意,为了避免内存溢出(OOM),我们将 和 初始化为全0。

初始负载不均衡: 为了避免内存错误,我们需要在网络初始化时使其处于大约相等的专家负载状态(因为软约束需要一些时间才能起作用)。为此,我们将矩阵 和 初始化为全零,这将产生无信号和一些噪声。

另外也可以参考ST-MOE:设计稳定且可转移的稀疏专家模型,核心思想还是让每个专家被选择的还是均匀一些。ST-MOE 引入的 Router z-loss 在保持了模型性能的同时显著提升了训练的稳定性。这种损失机制通过惩罚门控网络输入的较大 logits来起作用,目的是促使数值的绝对大小保持较小,这样可以有效减少计算中的舍入误差。这一点对于那些依赖指数函数进行计算的门控网络尤其重要。

ST-MoE负载均衡loss:

辅助损失计算为向量 和 之间的缩放点积:

其中 是分配给专家 的token的比例,

而 是为专家 分配的路由概率的比例,

  • z_loss

引入路由器 z_loss,

其中 是token的数量, 是专家的数量, 是输入到路由器的logits。这会惩罚进入门控网络的较大logits,在路由器之前使用z-loss是有用的。

更多推荐