DS-MoE:让 MoE 模型更高效、内存占用更少

社区文章 发布于 2024 年 4 月 9 日

预计阅读时间:4 分钟

专家混合 (MoE) 语言模型以其在不牺牲性能的情况下将计算需求比传统密集模型降低 2 到 4 倍的能力而闻名。这使得它们在计算资源有限的情况下特别有用。然而,MoE 模型通常需要 2 到 4 倍的参数才能达到与密集模型相同的性能。例如,像 DeepSeekMoE-16B 和 Qwen1.5-MoE-A2.7B 这样拥有 16B 参数的模型旨在与 7B 模型的性能相匹配。MoE 模型的大量参数导致更大的 GPU 内存需求,这使得它们在 I/O 密集型场景(如自回归生成)中效率较低。

Alternative Text
图 1:密集模型和具有相似性能的 SMoE 模型的解码吞吐量。我们在输入长度为 1、输出长度为 512 的设置下测试性能。这项研究表明,传统的稀疏专家混合 (SMoE) 模型尽管计算需求较低,但在 I/O 密集型情况下输出吞吐量较低。模型使用 HuggingFace Transformers 进行测试。

MoE 模型必须如此庞大才能实现高性能吗?我们能否创建一个既能保持性能又使用更少参数和计算能力的 MoE 模型?这就是 DS-MoE。该模型实现了与密集模型相似的性能,但使用的计算资源约为其他 MoE 模型的参数的三分之一,参数量只有一半。

Alternative Text
图 2:性能匹配模型的参数数量。我们绘制了使用 100B token 训练的 Dense-3B、SMoE-5B 和 DS-MoE-3B 模型的大小和计算配置文件,每个模型都实现了可比的平均任务性能。DS-MoE 展现了计算效率和参数效率,其中计算成本通过计算推理期间激活的参数数量来量化。

DS-MoE 的概念涉及密集训练专家,并强制模型的路由器逐渐忽略给定 token 的不必要专家。我们在训练过程中采用互信息 (MI) 损失,它平衡了整个批次中每个专家的负载,但也鼓励每个输入 token 将其门控概率集中到更少的专家。

Alternative Text
图 3:子图 (a) 说明了 MoE 模型中传统的稀疏训练方法,其特点是路由器和专家中的稀疏梯度传播。子图 (b) 详细说明了 DS-MoE 中的密集训练策略,它涉及路由器和专家的梯度密集传播。

MI 损失定义为 LMI=H(e)+1XxXH(ex),H(e)=i=1Np(e)log(p(e)), L_{MI} = - H(e) + {1 \over |X|}\sum_{x\in X} H(e|x), \quad H(e) = - \sum_{i=1}^{N}p(e)\log(p(e)), 其中 X 表示小批量中的 token,e 表示专家。直观地说,最大化 H(e) 可以平衡整个批次中每个专家的负载,而最小化 H(e|x) 则鼓励每个输入 x 将其门控概率集中到更少的专家。

在推理过程中,DS-MoE 仅根据其分数选择前 K 个专家。K 的数量是根据预定义值或自适应方法确定的,具体取决于得分超过某个阈值的专家数量。因此,DS-MoE 可以像类似大小的密集模型一样表现良好,同时使用的活动参数要少得多,如表中所示。

模型 HellaSwag PIQA WinoGrande SciQ Arc-e Arc-c 平均性能 活跃参数
密集-3B 40.4 71.4 58.7 86.0 59.6 26.1 57.0 2705M
SMoE-5B 40.1 70.7 56.5 85.6 58.4 24.8 56.0 1212M
DS-MoE-3B 39.3 71.6 57.9 85.6 57.7 24.9 56.2 934M
密集-6B 44.3 72.2 59.9 88.0 62.9 27.9 59.2 6186M
DS-MoE-6B 43.5 73.0 57.9 86.9 61.9 27.9 58.5 1813M

我们还使用 vLLM 对 DS-MoE 进行了测试,以了解其在 7B 性能级别与其他模型在处理速度和内存使用方面的比较。我们考察了它每秒能够处理的请求和 token 数量,设置是每个输入和输出由 1,000 个 token 组成,GPU 内存使用率上限为 90%。

模型 总参数 活跃参数 模型内存 A100 吞吐量 A100 TPS H100 吞吐量 H100 TPS
密集-6B 6.4B 6.4B 12.3 GiB 1.04 2079.8 1.40 2808.7
Mistral-7B 7.2B 7.2B 13.5 GiB 1.07 2140.8 1.52 3047.4
DeepSeekMoE 17.3B 2.8B 30.5 GiB 1.17 2330.1 1.57 3144.1
Qwen1.5-MoE 16.4B 2.7B 26.7 GiB 1.33 2665.7 1.81 3616.9
DS-MoE-6B 6.5B 2.2B 12.6 GiB 2.00 3992.8 2.30 4603.9

测试表明,DS-MoE 在计算成本方面优于密集模型,在模型内存方面优于稀疏训练的 MoE 模型,从而在计算密集型和 I/O 密集型场景中都能实现更快的处理。请注意,DS-MoE-6B 在下游性能方面尚无法与其他模型相媲美,因为它仅在 1000 亿个 token 上进行了训练(而其他模型则在数万亿个 token 上进行了训练)。然而,DS-MoE 已经展示出在可比训练数据量下达到密集模型性能水平的巨大潜力。

阅读论文了解更多

社区

注册登录 发表评论