AI模型中的混合专家(MoE)
传统上,模型训练的权衡总是绕不开规模和计算资源这对矛盾。模型越大,通常性能越好,但计算需求也水涨船高。混合专家(MoE)的出现,打破了这种常规——它用更少的计算量就能完成预训练,相当于在同样的计算预算下,把模型或数据集的规模再往上推一大截。这就意味着,在预训练阶段,MoE模型可以更快地追平传统密集模型的质量水平。

什么是 MoE
定义和组件
从根本上看,MoE(特别是在Transformer模型里)由两个核心元素构成:稀疏MoE层和门网络(也叫路由器)。
稀疏 MoE 层和专家的作用
和Transformer中常见的密集前馈网络(FFN)不同,MoE用的是稀疏MoE层。每一层里都塞了好几个“专家”——每个专家本身就是一个神经网络,通常也是FFN结构。这些专家的复杂程度可以不一样,有趣的是,有的专家内部甚至还能再套一层MoE,形成分层的嵌套结构。
门网络功能
门网络的作用,就是决定把每个token路由给哪个专家。举例来说,token“更多”可能被分给一位专家,而“参数”则被分给另一位。这个路由过程不仅对MoE的运行至关重要,而且路由决策本身也很有讲究——路由器本身就是一个在预训练过程中不断学习的实体,它会跟着训练一起进化。
挑战和解决方案
训练和推理挑战
虽然MoE在预训练和推理速度上有优势,但也不是没有麻烦。
训练挑战
一个主要障碍是微调阶段的泛化问题——MoE容易过拟合。
推理挑战
参数很多,但每次推理只有其中一部分被激活,所以处理速度是快了。但这也意味着内存压力很大——不管哪些参数被激活,所有参数都得先加载到RAM里才行。
解决方案和策略
为了应对这些挑战,业界采用了各种策略。比如负载均衡,防止某些专家被过度使用;再比如引入辅助损失,保证所有专家都能公平地得到训练。
历史背景与演变
MoE的概念最早可以追溯到1991年的一篇论文《Adaptive Mixture of Local Experts》(局部专家的自适应混合)。那项早期工作为MoE奠定了基础,提出了一个由门控网络引导、各专家分别处理不同训练样本子集的系统。
2010年到2015年间,MoE的发展有了重要突破。其中就包括把MoE作为更深层网络的组件来使用,以及Yoshua Bengio提出的条件计算——根据输入数据动态激活网络组件。
稀疏性原则
稀疏性的概念
稀疏性这个概念,是Shazeer在翻译任务中探索MoE时引入的,它的基础就是条件计算。这样一来,模型规模可以扩大,但计算量不会同比增加,因此每个MoE层里可以塞下成千上万个专家。
门控机制
各种门控机制都有人试过,比如噪声Top-K门控。它在路由过程中加入噪声,然后选出前“k”个值,这样就在专家利用效率和多样性之间找到了平衡点。
MoE 在 Transformers 中
GShard在Transformer中实现的MoE,是大规模应用最典型的例子。它引入了随机路由、专家容量等新概念,确保了大规模负载和效率的平衡。
Switch Transformers 的突破
Switch Transformers是MoE领域的重大进展。它简化了路由过程,降低了通信成本,同时保持了模型质量。专家容量的概念在这里进一步完善,在token分配和计算效率之间取得了更好的平衡。
微调 MoE
微调MoE会带来独特的挑战,尤其是过拟合的问题。常用的策略包括提高专家内部的正则化强度、调整辅助损失等。另外,在微调过程中有选择地冻结MoE层的参数,在保持性能的同时简化了流程,也很有前景。
在小任务(左)中,能明显看到过拟合——稀疏模型在验证集上的表现差很多。而在较大的任务(右)中,MoE的表现则相当不错。这张图来自ST-MoE论文。
实际应用和未来方向
MoE已经在多个领域落地,尤其是语言翻译和大模型方面。它在AI领域的潜力还很大,正在进行的探索也在不断拓展新的应用场景。
一个方向是把稀疏的MoE蒸馏回参数更少但数量相当的密集模型。另一个方向是MoE的量化——2023年10月的QMoE迈出了一大步,把MoE量化到每个参数不到1比特,将原本需要3.2TB翻跟斗的1.6T Switch Transformer压缩到了仅160GB。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名