腾讯发布万亿大模型训练方法:最快256卡1天训完万亿NLP大模型( 二 )


腾讯发布万亿大模型训练方法:最快256卡1天训完万亿NLP大模型
文章图片
背景2018年提出的BERT模型[1] , 其规模最大为3亿参数 , 随后围绕亿级别参数规模的模型 , 有各种模型结构和训练方法的探索 , 包括Roberta[2]、ALBERT[3]等 , 模型结构和训练方法是提升模型能力的重要手段 。
各大主流任务和工业界的关键业务(搜索、广告、推荐等)得益于预训练的能力 , 取得了显著的提升 。 对于工业界来说 , 随着业务的发展 , 小模型已经不能满足业务进一提升的需求 , 所以在大模型方向探索成为主流 。
大模型对工业界来说 , 是一场变革 , 为业务带来更多的便利和更小的使用成本 。
以前各个业务各自维护自己的小模型 , 标注和训练成本集中在下游 , 当业务需要提升模型规模 , 则需标注更大量的数据避免过拟合;同时各个业务单独训练模型需要耗费大量资源 , 但是产出的模型可复用性差 , 很难迁移到其他业务 。
预训练大模型将更多的资源和数据转移到上游 , 集中力量办大事 , 海量数据训练的大模型提供给各个业务 , 只需要用很少的标注数据微调 , 就可以取得较好的效果 , 从而降低了业务的使用成本 。
腾讯发布万亿大模型训练方法:最快256卡1天训完万亿NLP大模型
文章图片
大模型的发展
下图展示了近几年NLP预训练模型规模的发展 , 模型已经从亿级发展到了万亿级参数规模 。 具体来说 , 2018年BERT模型最大参数量为340M , 引发了预训练的热潮 。 2019年GPT-2为十亿级参数的模型[4] 。 2020年发布的百亿级规模有T5[5]和T-NLG[6] , 以及千亿参数规模的GPT-3[7] 。 2021年1.6万亿的MoE模型SwitchTransformer[8]发布 , 首次将模型规模提升到万亿 。
腾讯发布万亿大模型训练方法:最快256卡1天训完万亿NLP大模型
文章图片
△M百万 , B十亿 , T万亿
业界做大模型有两种流派 , MoE和Dense(稠密)模型流派 。
下图(a)是Dense模型的TransformerBlock , 在训练过程中 , 所有FFN和SA层的参数都是激活的 , 所以训练成本高 。 MoE是一种稀疏的模型结构 , 通过引入路由 , 只激活部分FFN(专家)的参数参与计算 , 从而能够节约训练成本 。 下图(b)是MoE模型的TransformerBlock , 该样例中FFN由3个专家组成 , 路由每次只激活其中1个专家 。 腾讯发布的HunYuan-NLP1T大模型采用了MoE结构 。
腾讯发布万亿大模型训练方法:最快256卡1天训完万亿NLP大模型
文章图片
自研万亿MoE模型依据
1.模型规模的提升能持续提升效果是做大模型的前提 , 如果增大规模不能持续大幅的提升模型效果 , 那么我们不值得投入高成本做大模型 。 这点GLaM[12]论文中已经得到了验证 , 当模型规模从0.1B/64E提升到64B/64E的时候 , 下游NLU和NLG任务的指标可以持续提升 , 且看上去不存在边际效益递减的情况 。
2.模型需要先做大后做小 , 大模型虽然能稳定提升下游任务效果 , 但实际在线业务使用的往往是压缩之后的小模型 , 用大模型压缩之后的小模型比直接训练小模型效果好 , 也是做大模型的关键依据 , 这点也在多个文章中被论证 。
SwitchTransformer用大模型蒸馏小模型 , 依然能保留大比例效果提升;此外 , ICML2020[13]的文章也验证了先训练大模型后压缩 , 比直接训练小模型效果更好 。
因此 , 模型需要先做大后压缩 , 才能取得更可观的收益 。
3.大模型包括了MoE稀疏模型和Dense稠密模型 , 我们的HunYuan-NLP1T大模型基于MoE开展 , 主要依据如下:
(1)在多篇文章中论述了相同的资源和计算量前提下 , MoE模型效果优于稠密模型 , 包括[8]和[14] 。 [8]通过提升专家数量 , 计算量没有增加 , 模型的性能持续提升 。 [14]在相同的计算量前提下 , MoE模型效果优于Dense模型 。