使用 MergeKit 创建专家组合---将多个模型合并到同个 MoE 中

本文介绍了如何使用MergeKit创建FrankenMoE,即通过集成多个预训练模型来创建Mixture of Experts(MoE)。讨论了MoE架构的工作原理,包括专家和路由器组件,并探讨了创建FrankenMoE的过程,特别是通过隐藏表示初始化路由器的方法。文中还提到了创建FrankenMoE的实例,展示了如何从不同的预训练模型中选择专家,以及如何使用MergeKit进行模型整合。最后,对创建的FrankenMoE进行了基准测试,展示其在多个任务中的表现。
摘要由CSDN通过智能技术生成

原文地址:create-mixtures-of-experts-with-mergekit

2024 年 3 月 27 日

由于 Mixtral 的发布,Mixture of Experts(MoE)架构近几个月开始流行。这种架构提供了一个有趣的权衡:以增加 VRAM 使用为代价获得更高的性能。虽然 Mixtral 和其他 MoE 架构是从头开始预训练的,但最近出现了另一种创建 MoE 的方法。感谢阿尔茜的MergeKit库,我们现在有了一种通过集成多个预训练模型来创建 MoE 的新方法。这些通常被称为frankenMoEs or MoErges,将它们与预先训练的 MoE 区分开来。

在本文中,我们将详细介绍 MoE 架构的工作原理以及 FrankenMoE 的创建方式。最后,我们将使用 MergeKit 制作我们自己的 FrankenMoE,并在几个基准上对其进行评估。该代码可在 Google Colab 上的名为LazyMergeKit的包装器中找到。

特别感谢MergeKit 的创建者Charles Goddard校对本文。

MoEs简介

专家混合是一种旨在提高效率和性能的架构。它使用多个专门的子网络,称为“专家”。与激活整个网络的密集模型不同,MoE 仅根据输入激活相关专家。这会带来更快的训练和更有效的推理。

MoE 模型的核心有两个组成部分:

  1. 稀疏 MoE 层:这些层取代了transformer架构中密集的前馈网络层。每个 MoE 层包含多个专家,并且只有这些专家的子集参与给定的输入。
  2. 门网络或路由器:该组件确定哪些令牌由哪些专家处理,确保输入的每个部分都由最合适的专家处理。

下面的示例展示了如何将 Mistral-7B 块转换为具有稀疏 MoE 层(前馈网络 1、2 和 3)和路由器的 MoE 块。此示例代表MoE拥有三名专家,其中目前有两名专家(FFN 1 和 FFN 3)。

MoE 也面临着自己的一系列挑战,特别是在微调和内存要求方面。由于模型的复杂性,微调过程可能很困难,需要在训练期间平衡专家的使用,以正确训练门控权重以选择最相关的权重。在内存方面,即使在推理过程中只使用了总参数的一小部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值