本篇将介绍MoE(Mixture of Experts,混合专家模型) 相关面试题。
"Mixture of Experts"(MoE)是一种机器学习模型,特别是在深度学习领域中,它属于集成学习的一种形式。MoE模型由多个专家(experts)和一个门控网络(gating network)组成。每个专家负责处理输入数据的不同部分或不同特征,而门控网络则负责决定每个输入应该由哪个专家来处理。
例如,在下图中,“More”这个 token 被发送到第二个专家,而“Parameters”这个 token 被发送到第一个专家。
本质上来说就是一种高效的 scaling 技术,用较少的 compute 实现更大的模型规模,从而获得更好的性能。 Switch Transformers、Mixtral、GShard、DBRX、Jamba DeepSeekMoE 等等。 Mixtral 是一个稀疏的专家混合网络。它是一个decoder-only的模型,其中前馈块从一组 8 个不同的参数组中选择。在每一层,对于每个令牌,路由器网络选择其中两个组(“专家”)来处理令牌并附加地组合他们的输出。
混合专家层 这种技术在控制成本和延迟的同时增加了模型的参数数量,因为模型只使用每个令牌总参数集的一小部分。具体来说,Mixtral 总共有 46.7B 个参数,但每个令牌只使用 12.9B 个参数。因此,它以与 12.9B 型号相同的速度和相同的成本处理输入和生成输出。 Mixtral 基于从开放 Web 中提取的数据进行预训练——同时培训专家和路由器。 稀疏 MoE 层一般用来替代传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。 门控网络接收输入数据并执行一系列学习的非线性变换。这一过程产生了一组权重,这些权重表示了每个专家对当前输入的贡献程度。通常,这些权重经过softmax等函数的处理,以确保它们相加为1,形成了一个概率分布。这样的分布表示了在给定输入情境下每个专家被激活的概率。 一个典型的门控函数通常是一个带有 softmax 函数的简单的网络。 为了专家间的负载均衡。也即防止一句话中的大部分token都只有一个专家来处理,剩下的七个专家(假设一共八个专家)“无所事事”。 引入噪声、引入辅助损失(鼓励给予所有专家相同的重要性)、引入随机路由、设置一个专家能处理的token数量上限 一个“专家”通常是前馈网络 (FFN)。数据经过门控网络选择后进入每个专家模型,每个专家根据其设计和参数对输入进行处理。每个专家产生的输出是对输入数据的一种表示,这些表示将在后续的步骤中进行加权聚合。或者通过单个专家模型进行处理。 增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减 (尤其是当专家数量达到 256 或 512 之后更为明显)。同时,这也意味着在推理过程中,需要更多的显存来加载整个模型。值得注意的是,Switch Transformers 的研究表明,其在大规模模型中的特性在小规模模型下也同样适用,即便是每层仅包含 2、4 或 8 个专家。 选择前k个专家。为什么不仅选择最顶尖的专家呢?最初的假设是,需要将输入路由到不止一个专家,以便门控学会如何进行有效的路由选择,因此至少需要选择两个专家。 灵活性:每个专家可以是不同类型的模型,例如全连接层、卷积层或者递归神经网络。
可扩展性:通过增加专家的数量,模型可以处理更复杂的任务。
并行处理:不同的专家可以并行处理数据,这有助于提高模型的计算效率。
动态权重分配:门控网络根据输入数据的特点动态地为每个专家分配权重,这样模型可以更加灵活地适应不同的数据。
容错性:即使某些专家表现不佳,其他专家的表现也可以弥补,从而提高整体模型的鲁棒性。
相同计算资源,MoE 模型理论上可以比密集模型更快达到相同的性能水平。 https://blog.csdn.net/2201_75499313/article/details/136412787 https://www.zhihu.com/question/634844209/answer/3467132890 https://zhuanlan.zhihu.com/p/674698482
想要获取技术资料的同学欢迎关注公众号,进群一起交流~