MoE环游记:从几何意义出发

ff1811933c2995dbc3b3b62974522e13.gif

©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 科学空间

研究方向 | NLP、神经网络

前两年福至心灵之下,开了一个“Transformer 升级之路”系列,陆续分享了主流 Transformer 架构的一些改进工作和个人思考,得到了部份读者的认可。这篇文章开始,我们沿着同样的风格,介绍当前另一个主流架构 MoE(Mixture of Experts)。 

MoE 的流行自不必多说,近来火出圈的 DeepSeek-V3 [1] 便是 MoE 架构,传言 GPT-4 也是 MoE 架构,国内最近出的一些模型也有不少用上了 MoE。

然而,虽然 MoE 的研究由来已久,但其应用长时间内都不愠不火,大致上是从去年初的《Mixtral of Experts》[2] 开始,MoE 才逐渐吸引大家的注意力,其显著优点是参数量大,但训练和推理成本都显著低。 

但同时 MoE 也有一些难题,如训练不稳定、负载不均衡、效果不够好等,这也是它早年没有流行起来的主要原因。不过随着这两年关注度的提升,这些问题在很大程度上已经得到解决,我们在接下来的介绍中会逐一谈到这些内容。

87b5dd8bb775596dabc5c4ffb45ed970.png

问题定义

首先要指出的是,这里会用笔者自己的一种理解思路来介绍 MoE,在必要的地方会附上相应的参考文献,但不会对 MoE 架构进行系统的追根溯源,还请读者见谅。 

我们知道,Transformer 模型由 Attention 层和 MLP 层组成,MoE 替换的是模型中 MLP 层。MLP 层又分 FFN(FeedForward Network)和 GLU(Gated Linear Unit)两种,主流的是 GLU,但简单起见我们还是以 FFN 为例:

1f7e92a93be6d23e41c3af83cd1efccc.png

其中 是输入向量(行向量), 是两个参数矩阵,f 是 Element-wise 的激活函数。设 n 是一个能整除 D 的整数,那么上述可以等价地用分块矩阵写成:

99a2c9343be85aa17da02ce63d418f61.jpeg

其中 ,这里的切片按照 Python 规则来。由此可见,FFN 可以等价表示成 n 个向量 之和,每个向量代表了一个小模型 的输出,每个小模型计算量相同,这些小模型就是 MoE 中的“Expert”。

MoE 提出的问题是:

能否只挑 k 个向量的和来逼近 n 个向量的和呢?这样就可以将计算量降低到 k/n 了。

图片

模长排序

这个问题其实我们在《低秩近似之路(三):CR》已经探究过,写成数学公式是:

5703b0f0371a53342c151e5b29c1f058.png

记 ,那么它又可以写成:

f4543294e142941741139386dd6507cc.png

这个问题的精确求解是比较困难的,但有一个简单的近似解:当 两两正交时,我们有:

3a84332f37658d9003d8ef85f8836c59.png

上式最优解显然就是让模长 最小的 n-k 个 等于 1,这又等价于说挑出模长最大的 k 个向量来逼近 n 个向量之和。当 不满足两两正交的条件时,我们依然用它来作为一个近似解。它的几何意义也很直观,模长越大的向量,在求和过程中越不容易被抵消,从而作用越突出。

此外,在《低秩近似之路(三):CR》中我们还讨论了一种依概率采样的逼近过程,在方差最小的假设下得到的最优采样概率同样有正比于模长的特点,所以总的来说按向量模长排序是一个简单但不失有效的策略。

图片

MoE初现

现在策略已经有了——“挑模长最大的 k 个向量”——可是细想之下我们会发现它并不实用:要挑模长最大的 k 个向量,就得把所有向量的模长都算出来,这又意味着要把所有的 先算出来,可我们的原本目的却是减少 的计算量!

为了解决这个矛盾,我们需要重新设计每个 Expert 模型,使得它的模长可以低成本地计算出来。什么意思呢?首先我们将 归一化得到 ,这样每个 的模长都相同了。接着我们定义:

e41d05d4897bc3658f2a4f0998256566.png

其中 是参数矩阵, 是一个 的激活函数,说白了这就是一个 d 维到 n 维的线性变换加激活函数,所以计算量是比较小的,这部分模型在 MoE 中被称为“Router”。

的作用是什么呢?预测每个 Expert 的模长!换言之,我们将 作为第 i 个 Expert 的模长, 才是完整的 Expert,它被分解为两部分:计算量比较小的模长 以及计算量比较大的方向 。

为了减少计算量,我们先计算出 ,挑出最大的k个后才去计算相应的 ,最后乘上 并求和:

2eb1a50b9f7b2c89bb3fcd0ed67457d2.png

这便是 MoE 模型的基本公式。由于计算中只保留了 Top-k 部分,所以它本质上属于一种 Sparse 模型,而原本的 FFN 或者 k=n 时的模型,通常称为对应的 Dense 模型。

图片

思路概括

不管是熟悉 MoE 还是不熟悉 MoE 的读者,可能都会对上述过程有点陌生,因为这是笔者自己闭门造车的一种 MoE 理解路线,但因为其几何意义更明确,所以本质上应该是更好理解的。

我们再来整理一下整个思路:

1. 一个常规的 Dense 模型 FFN,可以等价改写为 n 个 Expert 向量 之和;

2. 为了节省计算量,我们试图挑出 k 个向量求和来逼近原本的 n 个向量之和;

3. 转化为数学问题求解后,我们发现挑选规则是模长最大的 k 个向量;

4. 直接去算 n 个 Expert 的模长然后选 k 个实际上是不省计算量的,所以要重新设计 Expert;

5. 将 归一化得到 ,然后用另外的小模型(Router)预测模长 ,最终的 Expert 为 ;

6. 此时,我们就可以先算全体 ,挑出 k 个后才去计算 ,达到节省计算量的目的。

图片

为何如此

可能有些读者疑问,为什么要做这个看似复杂的过程?原本的 MoE 不是挺好理解的吗?一般的 MoE 形式为:

a38b26a7b6b5d15d968e9a8a0be1d15b.png

也就是求和前少了对 的归一化,此时 也没有模长的意义,它纯粹是一个用来对 Expert 排序的打分模型(即 Router)。可为什么将 乘到 Expert 上去就能让 Router 学会正确排序 Expert 呢?笔者发现只有《Sparse Backpropagation for MoE Training》[3] 对此给出了一个解释,但还是稍欠直观。

而在本文的几何视角下,我们会发现很多问题就“豁然开朗”了。我们将 Expert 重新参数化为 后,Dense 模型对应于全体 求和,而 MoE 对应于 选 Top-k 后求和,这是 Dense 模型的一个有理论保证的逼近。我们没有去考虑 Router 如何选择 Expert,只是每一步都尽可能逼近 Dense 模型,这可以说是既要大参数、又要小计算量的最佳选择。

现在 的几何意义是模长而不是概率,所以激活函数 就没有归一化的要求了,除了 Softmax 外,像 Sigmoid、ReLU 都可以考虑使用,也可以考虑我们在《Softmax后传:寻找Top-K的光滑近似》介绍的 Top-k 光滑近似。Router 使用非归一化的激活函数,有助于避免 k > 1 时 Expert 之间的恶性竞争,有时候能取得更好的效果。

最后补充一点,我们前面定义 ,目的是让所有 模长相同,实际操作中不是一定要 L2 Normalize,也可以是其他等价操作,比如 gamma 参数恒等于 1 的 RMS Norm,它更符合我们的输出习惯。

图片

参考文献

图片

[1] https://papers.cool/arxiv/2412.19437 

[2] https://papers.cool/arxiv/2401.04088 

[3] https://papers.cool/arxiv/2310.00811

更多阅读

图片

图片

图片

图片

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

图片

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值