从dense到MoE -- sparse upcycling

从dense到MoE -- sparse upcycling

从dense到MoE -- sparse upcycling

原创 HZLin  2024年07月19日 22:33 广东

【往期文章】







































【本文已在同名 微信公众号 / 知乎 / 个人博客linsight.cn 上线】


目前已经有很多优秀的dense大模型,那么要通过MoE获得更强的模型,用已有的dense模型进行初始化是一个自然的想法。Google的sparse upcycling对此做了一些实验,由于实验是在2022年做的,模型用的是T5系列语言模型和Vision Transformer系列视觉模型。

文中给出两个适合使用sparse upcycling的场景:

已有dense模型,想在有限的计算资源下提升模型效果。

要训一个模型,不知道dense模型和MoE哪个会有更好的效果(虽然通常来说MoE更好,但是训练难度和结果不确定也更大),那么就可以先训练一个dense模型保底,然后再在dense模型的基础上扩展成MoE结构继续优化。

下面具体看下一些实验细节。

1.设置

对于transformer模型,sparse upcycling的操作如下图

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

除了原模型的MLP层替换成MoE层外,其他组件包括layernorm、attention都直接从原dense模型copy到MoE模型。

实验上,一些具体的基础设置如下:

在原模型基础上,每2层替换一个MoE层,从第二层开始替换

MoE模型的总层数的dense模型层数相同

每个MoE层专家数为32个;虽然使用更多的专家不会明显增大训练的FLOPS,但是更多的专家会带来larger initial quality drop relative to baseline dense model,而需要更多的计算资源来恢复这个quality drop;后续会有实验探索expert数量的影响

每个expert都用原模型的MLP层参数初始化

router使用standard deviation=0.02的zero-mean normal distribution随机初始化

在encoder使用expert choice routing,基础的设置是capacity factor C = 2,后面也做了关于capacity factor的消融实验

在decoder使用token choice routing(top-k routing),k=2,并加上auxiliary loss帮助负载均衡,权重为0.01;在decoder使用top-k routing的原因是"to avoid train time (full batch teacher forcing) versus inference time (single token auto-regressive decoding) discrepancies"(和expert choice routing的设计相关)

MoE模型训练时使用和dense模型一致的batch size、learning rate schedule和weight decay等。

其中learning rate schedule用的是inverse square root learning rate schedule,因此MoE的训练可以接着dense模型的schedule接着进行。

实验中所用的一些模型参数如下表

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

2.实验

2.1.CORE RESULTS

1、dense模型继续训练 vs upcycling

随着训练量的增加,upcycling相比dense模型继续预训练的优势逐渐扩大,如下图所示

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

2、下游任务模型效果

上面对比的是预训练模型。这些预训练模型经过微调后的效果对比如下。

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

相比预训练模型,微调模型表现出相对更大的震荡,不过大致趋势还是可以看出MoE模型更有优势。

3、MoE from scratch vs upcycling

从零开始训练的MoE和upcycling方法的对比如下

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

从零开始预训练的MoE模型效果提升得更快,这可能得益于多样化的专家初始化和更大的lr。

只要给的计算资源足够多,从零开始训练的模型最终会赶上甚至超过upcycling的模型。

在有限的训练资源下,upcycling的训练效率更高,从零开始训练的模型大约需要相当于原dense模型1.2倍的训练资源才能达到upcycling模型的效果。如果现在的训练资源<=训练dense模型的资源,那么sparse upcycling是更划算的。

4、sparse upcycling vs dense upcycling

对比《Scaling language models: Methods, analysis & insights from training gopher》中的depth tiling(dense upcycling) 和 sparse upcycling的预训练效果,结果当然是sparse upcycling效率更高点,如下图所示

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

(不过这里没有提及depth tiling之后的模型规模)

2.2.消融实验

1、Amount of dense pretraining

upcycling的效果可能受用于初始化的dense模型的收敛情况影响,因此取了不同step的dense模型checkpoint作为upcycling的初始化,并且都继续训练了200k个step,结果如下图

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结论是基本上无论从哪个checkpoint初始化MoE模型,收益都比较稳定。

2、Router type

使用不同的router(expert choice和token choice)对比结果如下

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结论是,在相同的step下,expert choice和token choice的效果基本一样,但是如果从时间上来看,使用expert choice routing的模型训练更快。

3、Expert capacity factor

每个专家处理的token越多,计算量就越大,理论上效果也越好。

使用不同的capacity factor,模型效果对比如下

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结论是,虽然理论上增加专家容量可以提升效果,但时间上,通常C = 2的效率比较好,即一定的时间内提升的效果最多(注意计算资源是有限的)。

4、Number of MoE layers

在视觉模型上对MoE层数的效果进行了式样。

如下图右边两个小图,是使用不同的MoE层的效果,比如1表示只把最后一层MLP层替换为MoE层,以此类推

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结论是,更多的MoE层并不总是更好,大概是把5~6层替换成MoE层的时候效果最好(40%~50%的层数)。

5、Initialization of experts

对比了使用dense模型的MLP层初始化专家,和随机初始化专家,结果如下

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结果上看,使用dense模型的参数初始化专家效果更好。

6、Number of experts

如前面提到的,增加专家数并不会增大计算量,下图实验了2~128个专家下的效果

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

结果上来看,效果是随着专家的增加而提升的,虽然最后表现出了收益递减的情况。

2.3.其他

1、optimizer

在vision模型上,还尝试了使用dense模型的optimizer状态来训练MoE模型,但是并没有带来任何收益。

2、router normalization

另外,为了减少从dense到MoE初始化的performace drop,尝试了对router的输出进行normalization,以保持每个token得到的weight总和是1。

这个做法直觉上应该是有益的,不过会有一个小问题,那就是对于只被一个expert选中的token,会有vanishing routing gradients。

实践上,router normalization在视觉模型上基本和不进行normalization的效果差不多,但是在语言模型上,会使得MoE模型效果变差。这二者的表现差异可能是因为语言模型上部分router使用了token choice routing。

实际上目前大部分最新的MoE模型都没有开router normalization,但这里的原因感觉还有待深入验证。

3.小结

如果资源无限,那么从零初始化MoE模型更好,这点和天工MoE的实验是相同的;

从结果上看,MoE层和专家数不是越多越好,但是多少是好,感觉至今其实没有很明确;

目前大部分的MoE都使用token choice routing了,这里可能需要重新实验一下效果。


读到这了,来一发点赞收藏关注吧~

博客:http://www.linsight.cn/
知乎:Linsight
微信公众号:Linsight

www.zeeklog.com  - 从dense到MoE -- sparse upcycling

【往期文章】






































Reference

【1】SPARSE UPCYCLING: TRAINING MIXTURE-OF-EXPERTS FROM DENSE CHECKPOINTS https://arxiv.org/abs/2212.05055

Read more

60个“特征工程”计算函数(Python代码)

60个“特征工程”计算函数(Python代码)

转自:coggle数据科学 近期一些朋友询问我关于如何做特征工程的问题,有没有什么适合初学者的有效操作。 特征工程的问题往往需要具体问题具体分析,当然也有一些暴力的策略,可以在竞赛初赛前期可以带来较大提升,而很多竞赛往往依赖这些信息就可以拿到非常好的效果,剩余的则需要结合业务逻辑以及很多其他的技巧,此处我们将平时用得最多的聚合操作罗列在下方。 最近刚好看到一篇文章汇总了非常多的聚合函数,就摘录在下方,供许多初入竞赛的朋友参考。 聚合特征汇总 pandas自带的聚合函数 * 其它重要聚合函数 其它重要聚合函数&分类分别如下。 def median(x):     return np.median(x) def variation_coefficient(x):     mean = np.mean(x)     if mean != 0:         return np.std(x) / mean     else:         return np.nan def variance(x):     return

By Ne0inhk
90w,确实可以封神了!

90w,确实可以封神了!

要说24年一定最热的技术,还得是AIGC! 前段时间阿里旗下的开源项目,登上GitHub热榜! AI大热,如今ChatGPT的优异表现,必然会出现各种细分场景应用的工具软件,和大量岗位项目! 山雨欲来风满楼,强人工智能的出现,所有科技公司已经开始巨量扩招此领域的人才。算法的岗位,近三个月已经增长68%!这件事在HR届也是相当震撼的。 目前各行各业都不景气的市场,人工智能岗位却一直保持常青!甚至同属AI边缘岗都比其他岗薪资高40%! 与此同时,AI算法岗上岸也不简单,竞争激烈,好公司核心岗位不用说,谁都想去。 所以事实就是,想要上岸,门槛也逐渐变高,项目经历、实习经历都很重要,越早明白这个道理就越能提前建立起自己的优势。 但我在b站逛知识区的时候,经常看到有些同学,因为一些客观原因导致无法参加实习,这种情况下,如果你想提升背景,增加项目经历的话,可以试试这个《CV/NLP 算法工程师培养计划》。 目前已经有上千位同学通过该计划拿到offer了,最新一期学员就业薪资最高能拿到78K!年薪94w! 优势就是有BAT大厂讲师带领,手把手带做AI真实企业项目(包含CV、NLP等

By Ne0inhk
再见nohup!试试这个神器,Python Supervisor!

再见nohup!试试这个神器,Python Supervisor!

👇我的小册 45章教程:() ,原价299,限时特价2杯咖啡,满100人涨10元。 作者丨Ais137 https://juejin.cn/post/7354406980784373798 1. 概述 Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。 2. 问题场景 在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者是消费者进程等。这类进程通常是作为后台进程持久化运行的。 一般的部署方法是通过 nohup cmd & 命令来部署。但是这种方式有个弊端是在某些情况下无法保证目标进程的稳定性运行,有的时候 nohup 运行的后台任务会因为未知原因中断,从而导致服务或者消费中断,进而影响项目的正常运行。 为了解决上述问题,通过引入 Supervisor 来部署持久化进程,提高系统运行的稳定性。 3. Supervisor 简介 Supervisor is a client/

By Ne0inhk
第一本给程序员看的AI Agent图书上市了!

第一本给程序员看的AI Agent图书上市了!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔·盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI Ascent 2024演讲中高赞:AI Agent是一个令人兴奋的趋势,所有从事AI开发的人都应该关注。而国内的各科技巨头也纷纷布局AI Agent平台,如:钉钉的AI PaaS、百度智能云千帆大模型平台等等。 Agent 是未来最重要的智能化工具。对于程序员来说,是时候将目光转向大模型的应用开发了,率先抢占AI的下一个风口AI Agent。 小异带来一本新书《大模型应用开发 动手做 AI Agent》,这本书由《GPT图解》的作者黄佳老师创作,从0到1手把手教你做AI Agent。现在下单享受5折特惠! ▼点击下方,即可5折起购书 有这样一本秘籍在手,程序员们这下放心了吧,让我们先来揭开 Agent 的神秘面纱。 AI Agent 面面观

By Ne0inhk