英伟达论文,详解MOE模型的过去、现状和未来

MoE 可能会成为大语言模型未来的范式,无论大公司还是小公司都会用到它。

英伟达近日发布论文《大语言模型的混合专家模型升级改造》(Upcycling Large Language Models into Mixture of Experts)[1],提出了一种新的混合专家模型(MoE)训练方法。这项技术无需从零开始训练模型,而是通过改造现有的稠密模型,就能将其扩展到更大规模。

论文的第一作者、英伟达深度学习工程师

@何宜晖 (Ethan He)接受欣欣采访,介绍说该方法已在 Megatron Core 开源框架中实现,开发者可以直接在 GitHub [2]上获取相关代码。这项技术有望降低训练大模型的门槛,让更多机构和企业能够参与到大模型开发中来。

在这次技术访谈中,Ethan深入解析了混合专家模型(mixture of experts)的工作原理,并详细介绍了他们的最新研究成果。让我们一起了解 MoE 的过去,现状,和未来吧。

以下为中文翻译逐字稿。英文原视频

自我介绍

欣欣:能先介绍一下你在英伟达的工作吗?

Ethan:大家好,我是 Ethan He。我是英伟达的一名深度学习工程师,我的工作是大语言模型训练,并将 transformer 模型扩展到大规模,还有混合专家模型(MoE)。

什么是混合专家模型?

欣欣:有些人可能不太熟悉混合专家模型这个术语,你可以给我们简单科普一下吗?

Ethan:你可以把它想象成一个单一模型,但它将几种模型组合在一起。根据你问的问题,它会选择性地激活一些专家来回答你的问题。

你可能听说过 LLaMA 模型或 GPT 模型,这些模型大部分都是稠密模型(dense models)。所有神经元几乎都被激活在模型推理的环节,所以是稠密的。然而对于混合专家模型来说,它是’稀疏激活‘的模型,意思是你输入的时候,只有一部分模型会被激活。

欣欣:那具体是用什么算法来决定该激活哪个专家呢?

Ethan:这个决定用哪个专家的组件叫“路由器(router)”。路由器其实就是一个非常小的神经网络,可以决定激活哪个专家。在推理阶段,根据你的输入,它会生成一个概率分布,覆盖所有专家的领域,然后选择排名靠前的 K 名专家来回答问题。

欣欣:每位专家负责不同的领域或者是模型的不同方面吗?

Ethan:并非完全如此。有些人试图解释每个专家是否会学到不同的东西,但神经网络擅长学到错综复杂的知识,所以很难辨别这位专家到底学习的是哪个领域。这不像是这个专家是学数学的,另一个专家学艺术,不是这样的。不过有一些基础的,比如有些专家专注于视觉 token 的泛化处理,有的专家则负责跨 token 的关联。

欣欣:跨 token?

Ethan:是的,就像 token 之间的关系。

模型优势和场景

欣欣:那么和传统方法相比,用这个方法建立大语言模型有什么主要优势呢?

Ethan:混合专家模型可以将模型规模化到下一级别。比如说 LLaMA 模型,最大的模型扩展到了 405B。如果你还想更进一步扩展,要么需要更多 GPU,要么就用 MoE 混合专家模型。比如说,你可以把同样的 LLaMA 405B 模型扩展到 2 万亿参数,而且需要的算力不会显著增加。

欣欣:业界中谁需要这样的扩展技术或者构建更大的大语言模型呢?

Ethan:几乎每个人都会需要。它马上就会变成一项必须的技术,无论小公司还是大公司。对于像 OpenAI 这样的大公司,他们的 GPT-4 传闻也用了混合专家模型。它在大规模上效率更高,因为这个模型是稀疏激活的。你可以省更多钱,对于小公司来说,用这个训练比训练一个稠密模型划算多了。我觉得这会成为构建大语言模型的行业标准。

论文背景

欣欣:让我们深入聊聊你和你的团队刚发表的论文吧。你们的论文主要是想解决什么样的问题?

Ethan:我们想解决的是大规模扩展的难题。扩展的意思是,不需要从头训练这个混合专家模型,而是对现有的稠密模型进行改造,然后再训练,比如多训练几千个,或者经过数十万次迭代,打造出更好的模型。

欣欣:你的论文会落地使用吗?

Ethan:它已经开源在我们的 Megatron Core 里了。我们已经发布了功能,把大语言模型进一步扩展成更大的模型。你可以在 GitHub 上找到代码。

欣欣:如果现在有人想扩展一个混合专家模型,他们可以直接去 GitHub 下载代码,对吧?

Ethan:没错。

技术细节

主要方法是复制 Weights 给每位专家,然后进行拓展训练。

欣欣:你们对不同参数做了实验,例如学习率(learning rate)和批大小(batch size)。你们发现混合专家模型需要更低的学习率和更大的批大小,这很有意思。

Ethan:这是因为专家是稀疏激活的。每个专家接收到的 token 更少,也就是在训练时批大小更小,所以它就需要更大的批大小。

欣欣:那么关于负载平衡(load balancing),它对实验结果有什么影响?

Ethan:负载平衡是为了确保 MoE 可以把 token 平均分配给各个专家。我们发现负载平衡越少,效果反而越好。你想要模型自己学会如何分配 token,这样可以保证没有专家在摆烂,就不会有什么都学不到的专家。

欣欣:你们论文里还提到了”颗粒度(granularity)“这个词,你能解释一下这是什么意思吗?

Ethan:颗粒度就是把专家拆分成更小的专家。这样就会创造出更多的专家,比经典版的 8 个专家要多。这样的颗粒度可以提高灵活性和准确性。

欣欣:如果我们有更多专家,这个模型的表现就会更好吗?

Ethan:是的,但有个上限。我们测试到 200 个专家还是有效果的,但再多的话,模型就很难学会该转接给哪个专家。

欣欣:你们的论文还提到了共享专家(shared experts)的概念。

Ethan:共享专家的意思是有些专家永远在线。通常,专家是基于概率被选择的。概率最高的就会被选中,概率低的就不会被选中。但这些共享专家总是在线,他们是来学习不同领域之间的共性的。

欣欣:在实验过程中,有没有让你感到惊讶的地方?

Ethan:混合专家模型很难高效地训练,尤其是在大的规模下。如果你需要进行大量工程优化来训练模型,特别是超过 7B 或 16B 参数时。

欣欣:你们做这些实验需要多少个 GPU?

Ethan:在这篇论文里,我们使用了 0.3 yottaFLOPs 的算力,大概相当于 500 块 GPU 跑一个星期。

模型限制

欣欣:我们聊了很多混合专家模型扩展的优点,那它有没有一些局限性或者缺点呢?

Ethan:缺点正是它本身的优势。扩展只适用于当你已经有一个现成的稠密模型,想把它改造成混合专家模型。如果你没有一个训练好的稠密模型,那这个方法基本就没什么用。比如说,目前还没有好的 Mamba 模型,所以很难把扩展应用到 Mamba 上。

对未来的期待

欣欣:在混合专家模型的领域,你最期待什么?

Ethan:我期待看到越来越大的模型。目前最大的模型据说是 1.8 万亿参数的 GPT-4 混合专家模型。我认为还可以更大,让我们拭目以待,看未来会不会有。


[1] 英伟达论文: “Upscaling Large Language Models into Mixture of Experts” available at https://arxiv.org/abs/2410.07524.

[2] 开源代码: https://github.com/NVIDIA/Megat

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注