GLaM: Efficient Scaling of Language Models with Mixture-of-Experts
https://readpaper.com/paper/4568736324836663297
Nan Du, Yanping Huang, Andrew M. Dai, Simon Tong, Dmitry Lepikhin, Yuanzhong Xu, Maxim Krikun, Yanqi Zhou, Adams Wei Yu, Orhan Firat, Barret Zoph, Liam Fedus, Maarten Bosma, Zongwei Zhou, Tao Wang, Yu Emma Wang, Kellie Webster, Marie Pellat, Kevin Robinson, Kathy Meier-Hellstern, Toju Duke, Lucas Dixon, Kun Zhang, Quoc V Le, Yonghui Wu, Zhifeng Chen, Claire Cui
用更多的数据、计算和参数扩展语言模型,推动了自然语言处理的重大进展。例如,得益于规模化,GPT-3能够在情境学习任务上取得显著成绩。然而,训练这些大型密集模型需要大量的计算资源。在本文中,我们提出并开发了一系列名为GLaM(通才语言模型)的语言模型,该模型使用稀疏激活的混合专家体系结构来扩展模型容量,同时与密集变体相比,产生的培训成本也大大降低。最大的GLaM有1.2万亿个参数,大约比GPT-3大7倍。它只消耗训练GPT-3所用能量的1/3,推理需要一半的计算次数,同时在29个NLP任务中仍能获得更好的整体零触发和一触发性能。
Submitted 13 December, 2021; originally announced December 2021.
用更多的数据、计算和参数扩展语言模型,推动了自然语言处理的重大进展。例如,得益于规模化,GPT-3能够在情境学习任务上取得显著成绩。然而,训练这些大型密集模型需要大量的计算资源。在本文中,我们提出并开发了一系列名为GLaM(通才语言模型)的语言模型,该模型使用稀疏激活的混合专家架构来扩展模型容量,同时与密集变体相比,产生的训练成本也大大降低。最大的GLaM有1.2万亿个参数,大约比GPT-3大7倍。它只消耗训练GPT-3所用能量的1/3,推理需要一半的计算次数,同时在29个NLP任务中仍能获得更好的整体zero-shot和one-shot性能。
1.导言
在过去的十年中,语言模型在自然语言处理(NLP)的发展中扮演着重要的角色。语言模型的变体已用于为许多NLP应用生成预训练词向量(Mikolov等人,2013年;Pennington等人,2014年)和语境化词向量(Peters等人,2018年;Devlin等人,2019年)。向使用更多数据和更大模型扩展的转变(Shazeer等人,2017年;Huang等人,2019年;Kaplan等人,2020年)使得复杂的自然语言任务能够使用标记较少的数据执行。例如,GPT-3(Brown et al.,2020)和FLAN(Wei et al.,2021)证明了上下文学习用于few-shot甚至zero-shot泛化的可行性,这意味着在NLP应用程序上实现良好性能所需的标记样本非常少。在有效且性能良好的情况下,进一步扩展成本变得令人望而却步,并消耗大量能源(Patterson等人,2021年)。
在这项工作中,我们展示了一个大的稀疏激活的网络可以在较少的放炮任务上实现与最先进的密集模型相比的竞争结果,同时具有更高的计算效率。我们提出了一系列称为GLaM的混合专家(MoE)语言模型,它在密集计算和条件计算之间取得了平衡。GLAM的最大版本总共有1.2个参数,每个MOE层有64个专家(SaZeer-et al,2017;LePIKHin等人,2021;FEDUS等人,2021),其中输入批次中的每个token仅激活95b(8%个1.2T)参数的子网络。与GPT-3(175B)相比,在zero-shot和one-shot方面,该模型在7个类别的29个公共NLP基准测试中显著提高了学习效率,从语言完成任务、开放域QA任务到自然语言推理任务。由于稀疏激活的架构和模型并行算法的高效实现,训练期间的总能耗仅为GPT-3的三分之一。我们在表1中重点介绍了GLaM和GPT-3最大版本之间的比较。
我们使用GLaM来研究数据、规模和稀疏性的重要性。我们的分析表明,即使对于这些大型模型,如果目标是生成高质量的语言理解模型,也不应该牺牲数据质量来换取数量。在社会维度上,据我们所知,我们的结果是第一次缩小了Winogener基准上典型和反典型之间的性能差距,这表明大型、稀疏激活的模型可能不太依赖表面的统计相关性。
最后,虽然MoE模型在NLP中还不常见,但我们的工作表明,即使是基本版本的MoE也可以在大规模的语言理解中非常有效。我们的结果还证实,稀疏性是实现高质量NLP模型同时节约能源成本的最有希望的方向之一(Patterson et al.,2021)。因此,MoE应被视为未来扩展的有力候选。
2.相关工作
语言模型:
神经语言模型(Mikolov等人,2010年;Sutskever等人,2011年)已被证明对许多自然语言处理任务有用。单词嵌入模型和扩展,如word2vec(Mikolov等人,2013年)、GloVe(Pennington等人,2014年)和段落向量(Le&Mikolov,2014年),通过简单地传递嵌入,对许多任务表现出良好的泛化能力。
预训练和微调:
丰富的计算和数据使得能够通过无监督的预训练来训练越来越大的模型。这非常适合训练神经网络,因为它们具有显著的可扩展性。使用RNN和LSTM等循环模型进行语言表征的工作(Dai&Le,2015;Kiros等人,2015)表明,可以对一般语言模型进行微调,以改善各种语言理解任务。最近,使用Transformer的模型(Vaswani et al.,2017)表明,对未标记数据进行自监督的大型模型可以显著改善NLP任务(Devlin et al.,2019;Yang et al.,2019;Liu et al.,2019;Clark et al.,2020)。基于预训练和微调的转移学习(Raffel et al.,2020;Houlsby et al.,2019)已得到广泛研究,并在下游任务中表现良好。但是,此方法的一个主要限制是它需要特定于任务的微调。
在学习的背景下:
GPT-3(Brown等人,2020)和相关的工作(SueBi等人,2019;Lieber等人,2021;Wei等人,2021)表明,扩大语言模型极大地提高了任务不可知性,few-shot性能。应用这些语言模型时,不会对任务进行任何梯度更新,也不会纯粹通过与模型的文本交互指定一些快照演示。
稀疏选通网络:
基于专家的混合模型也显示出显著的优势。对于语言建模和机器翻译,Shazeer等人(2017)表明,他们可以有效地使用大量权重,而在推理时只需要计算计算图的一小部分。还开展了将稀疏激活的MoE架构扩展到更大模型的工作(Hestness等人,2017年;Shazeer等人,2018b;Huang等人,2019年;Lepikhin等人,2021年)。已经有人对更大的1万亿参数稀疏激活模型进行了研究,但是,这些模型使用序列到序列的架构(Fedus等人,2021年)。已经研究了各种路由策略(Grand et al.,2017;Lewis等人,2021;Dua等人,2021),使得可以利用任务依赖性实现迁移学习。在表2中,我们总结了GLaM和在文本语料库上预先训练的相关模型之间的主要差异。
3.训练数据集
为了训练我们的模型,我们构建了一个1.6万亿token的高质量数据集,这些token代表了广泛的自然语言用例。网页构成了我们未标记数据集中的大量数据,然而,它们的质量从专业写作到低质量评论和论坛页面不等。与Brown et al.(2020)类似,我们开发了自己的文本质量分类器,以从原始较大的语料库中生成高质量的web语料库。为了提高推理速度,我们使用了基于特征哈希的线性分类器。该分类器经过训练,可以在一组精选文本(维基百科、书籍和一些选定的网站)和其他网页之间进行分类。我们使用这个分类器来估计网页的内容质量。然后,我们通过使用帕累托分布来根据网页的得分来应用该分类器。这允许包含一些质量较低的网页,以防止分类器中出现系统性偏置(Brown等人,2020年)。
我们使用此过程生成高质量的过滤网页子集,并将其与书籍、维基百科页面和其他数据源相结合,创建表3中列出的最终GLaM数据集。我们还纳入了Adiwardana等人(2020年)使用的公共领域社交媒体对话的数据。在第6.2节中,我们分析了训练数据的重要性,并表明该数据过滤步骤对模型的质量有很大影响。为了检查数据污染,在A部分中,我们在训练集和评估数据之间进行了重叠分析。
4.模型架构
我们利用稀疏激活的混合专家(MOE)(SaZEEL等人,2017;LePIKHIN等人,2021;FEDUS等人,2021)在GLAM模型中。与GShard MoETransformer类似(Lepikhin等人,2021年),我们用MoE层替换其他Transformer层的前馈组件,如图1所示。每个MoE层由一组作为“专家”的独立前馈网络组成。然后,选通函数使用softmax激活函数对这些专家的概率分布进行建模。此分布表示每个专家处理传入输入的能力。
尽管每个MoE层都有更多的参数,但专家很少被激活。这意味着对于给定的输入token,只使用有限的专家子集,从而在限制计算的同时为模型提供更多的容量。在我们的架构中,子集大小为2。在训练期间,每个MoE层的可学习门控网络都经过训练,以使用其输入来激活输入序列中每个标记的最佳两名专家。在推理过程中,学习的门控网络为每个token动态地选择两个最佳专家。对于具有E专家的MoE层,这本质上提供了O(E2)不同前馈网络组合的集合,而不是经典Transformer架构中的一个,从而带来更大的计算灵活性。token的最终学习表示将是所选专家输出的加权组合。
我们还对原始的Transformer架构进行了额外的修改。我们用Dai等人(2019)的每层相对位置偏置取代标准位置嵌入。在非MoETransformer前馈子层中,我们将第一个线性投影和激活函数替换为选通线性单元(Dauphin等人,2017;Shazeer,2020),该单元计算输入的两个线性变换的分量乘积,其次是高斯误差线性单位(Hendrycks&Gimpel,2016)激活函数。我们使用RMSNRM,如(Zhang&Sennrich,2019;Shazeer等人,2018b)所示,而不是标准的分层形式(Ba等人,2016)。
我们总结了表4中的模型超参数。我们通过改变模型超参数来训练我们架构的几个变体,以了解MoE语言模型的扩展效果。第6.3节描述了扩展不同维度对下游任务的影响。我们还训练了一组密集模型,每个token具有相似的有效FLOPs,以便我们可以使用相同的训练数据比较MoE和密集模型。表5总结了经过训练的模型的完整列表。
我们使用Xu等人(2021)中描述的2D分片算法对大型GLaM模型的权重和计算进行划分,该算法利用TPU集群设备网络的2D拓扑结构。我们将具有相同索引的专家放置在同一设备的不同MoE层上,以便为不同的MoE层生成相同的计算图。因此,我们可以将MoE Transformer架构的重复模块封装在while循环控制流语句中(Abadi等人,2016a;Yu等人,2018),以减少编译时间。我们的实验表明,我们应该扩大专家的规模,以获得高质量的模型。因此,当每个专家变得足够大时,我们必须将每个专家分配到一组新设备上。例如,我们使用MoE层中的形状[E,M,H]沿专家维度E和隐藏维度H划分专家权重张量,并使用形状[B,S,M]沿批次维度B和模型维度M划分输入激活张量。使用此2D分片算法,然后,我们能够将这些大的权重和激活张量完全划分为更小的部分,这样所有设备上的数据或计算就不会有冗余。我们依靠GSPMD的编译器过程(Xu et al.,2021)自动确定其余张量的分片属性。
5.实验装置
5.1. 训练环境
我们训练了GLaM的几种变体来研究MoE和稠密模型的行为。表5显示了不同GLaM模型的超参数设置。我们还包括相应的密集模型,其中每个token在推理过程中的激活参数数量相当(因此每个token的FLOPs数量相似)作为参考。我们列出了在不同尺度下训练的GLaM模型,范围从1.3亿个参数到1.2万亿个参数。我们采用
描述GLaM模型中的不同变体。例如,GLaM(8B/64E)表示一个近似8B参数密集模型的架构,每隔一层由64专家MoE层替换。当每个MoE层只有一个专家时,GLaM简化为一个基于密集Transformers的语言模型架构。例如
指使用相同数据集训练的密集137B参数模型。表4总结了模型参数的符号。此外,nparams是可训练模型参数的总数,nact params是每个输入token激活的模型参数的数量,L是Transformer层的总数,M是模型尺寸,H是每个Transformer层中前馈网络的隐藏尺寸,nheads是自注意头的数量,而dhead是每个注意头的隐藏维度。
模型训练:
我们对所有GLaM模型使用相同的学习超参数。我们使用1024个token的最大序列长度,并将每个输入样本打包为每批最多有100万个token。dropout rate设置为0,因为训练语料库中可用标记的数量远大于训练期间处理的标记的数量。我们的优化器是Adafactor(Shazeer&Stern,2018),一阶矩衰减β1=0,二阶矩衰减β2=0.99,一阶矩衰减为1− T−0.8衰变时间表,更新1.0的削波阈值,以及因数二阶矩估计。我们将前10K训练步骤的初始学习率保持在0.01,然后使用平方根逆调度lrhti对其进行衰减∝ √ 1吨。在标准交叉熵损失的基础上,我们将GShard(Lepikhin et al.,2021)中所述的MoE辅助损失加上0.01系数,以鼓励专家负载平衡,从而使选通功能将token更均匀地分配给所有专家。我们使用SentencePiece(Kudo&Richardson,2018)子词标记器,词汇量为256K。在训练期间,我们使用float32作为模型权重,使用bfloat16作为激活。最大的GLaM 64B/64E型号是在1024块云TPU-V4芯片上训练的。
可训练性:
在万亿参数尺度上训练模型是极其昂贵的,即使是对于稀疏激活的模型也是如此。超参数调整的空间很小。此外,其他稀疏激活的模型受到训练不稳定性的阻碍(Fedus等人,2021年)。在选择训练策略和超参数时需要格外小心。在这里,我们分享我们的训练食谱和GLaM模型的一些实现技巧。
•我们首先训练小规模模型,使其收敛。这使我们能够尽早暴露数据集和基础架构中的潜在问题。
•如果梯度中存在任何NAN或INF,我们将跳过批次的重量更新(Shen等人,2019年)。注意:NaN/Inf仍可能在应用梯度步骤期间发生,在这种情况下,我们将从前面的检查点重新启动,如下所述。例如,即使现有变量或渐变中没有Inf,更新的变量仍然可能导致Inf。
•当我们在训练中遇到罕见的大波动甚至NaN/Inf时,我们从早期健康检查点重新开始。顺序加载批次的随机性可能有助于在重新启动后从训练中的先前FLOPs状态中逃脱。
通过仔细实施上述技巧,我们观察到在所有尺度下稀疏激活模型的训练变得相当稳定。我们使用相同的超参数训练所有GLaM模型,无需额外调整。
5.2. 评估设置
协议:
为了清楚地证明GLaM模型的有效性,我们主要侧重于评估Radford d和Radford et al.(2019)提出的zero-shot和one-shot协议;Brown等人(2020年)。对于zero-shot学习设置,在大多数情况下,我们直接评估开发集中的每个样本。对于one-shot学习,我们从该任务的训练集中随机抽取一个样本作为唯一的演示和上下文。这样的演示与评估样本连接在一起,中间有两条换行符,然后输入到模型中。
基准:
为了在GPT-3和GLaM之间进行苹果对苹果的比较,我们选择了与Brown等人(2020)相同的一套评估任务。Brown等人(2020年)使用42个数据集评估GPT-3。但为了简单起见,我们排除了7个合成任务(算术和单词解读)和6个机器翻译数据集。排除这些,我们最终得到了29个数据集,其中包括8个自然语言生成(NLG)任务和21个自然语言理解(NLU)任务。这些数据集可进一步分为以下7类。
开放领域问答:TriviaQA(Joshi等人,2017年)、自然问题(NQ)(Kwiatkowski等人,2019年)、网络问题(WebQ)(Berant等人,2013年)
完形填空和完成任务:LAMBADA(Paperno等人,2016年)、HellaSwag(Zellers等人,2019年)、StoryCloze(Mostafazadeh等人,2016年)
Winograd风格的任务:Winograd(Leveque等人,2012年),WinoGrande(Sakaguchi等人,2020年)
常识推理:PIQA(Bisk等人,2020年)、ARC(简易)(克拉克等人,2018年)、ARC(挑战)(克拉克等人,2018年)、OpenBookQA(米哈伊洛夫等人,2018年)
上下文阅读理解:DROP(Dua等人,2019年)、CoQA(Reddy等人,2019年)、QuAC(Choi等人,2018年)、SQuADv2(Rajpurkar等人,2018年)、Racheh(Lai等人,2017年)、RACE-m(Lai等人,2017年)
SuperGLUE:(Wang等人,2019年)BoolQ(Clark等人,2019年)、CB(de Marneffe等人,2019年)、COPA(Gordon等人,2012年)、RTE(Dagan等人,2006年)、WiC(Pilehvar&Camacho Collados,2018年)、WSC(Levesque等人,2012年)、MultiRC(Khashabi等人,2018年)、ReCoRD(Zhang等人,2018年)
自然语言推理:ANLI R1、ANLI R2、ANLI R3(Fyodorov等人,2000年)
自然语言生成任务:我们将模型解码的语言序列与生成任务中的基本事实进行比较。这些任务是TriviaQA、NQS、WebQS、SQuADv2、LAMBADA、DROP、QuAC和CoQA。按照Brown等人(2020年)中每个任务的标准,通过精确匹配(EM)和F1分数的准确性来衡量性能。我们使用贪婪解码来生成序列。
自然语言理解任务:
大多数语言理解任务要求模型从多个选项中选择一个正确答案。所有二元分类任务都以两种选择(“是”或“否”)的形式制定。预测基于每个选项的最大对数似然,给定由每个选项的标记长度归一化的上下文日志P(选项|上下文)。在一些任务上,如ReCoRD(Zhang et al.,2018)和COPA(Gordon et al.,2012),非标准化损失可以产生更好的结果,因此被采用。除了MultiRC(Khashabi et al.,2018)报告了答案选项集(称为F1a)上的F1指标外,预测精度指标用于所有其他任务。我们使用所有数据集中报告的分数平均值来报告NLG和NLU任务中模型的整体零射击和一射击性能。准确度(EM)和F1分数均已标准化为介于0和100之间。对于少量任务,例如TriviaQA,我们还报告one-shot提交的测试服务器分数。
6.结果
我们对GLaM模型家族进行了广泛的评估,以展示稀疏激活模型在语言建模中的优势。我们还定量地检验了数据质量对语言模型训练的有效性。此外,我们还以实证的方式展示了GLaM与稠密模型的优势,包括扩展趋势、数据和计算效率。
6.1. MoE模型与稠密模型的比较
如表1所示,与GPT-3(175B)相比,GLaM(64B/64E)在zero-shot和one-shot学习方面具有竞争力。
图2比较了每类任务的性能。总的来说,GLaM(64B/64E)在7个类别中有5个类别在zero-shot和one-shot 评估中的平均表现优于GPT-3,表明性能增益是一致的。有关每个任务的更多详细信息,请参见表13。
更重要的是,如表5所示,GLaM(64B/64E)在推理过程中激活了每个token大约96.6B的参数,这表明在相同输入的情况下,它只需要GPT-3所需计算FLOPs的一半。
我们强调一个特别具有挑战性的开放领域问答任务:TriviaQA。在开放域问答任务中,模型需要直接回答给定的查询,而不需要访问任何其他上下文。
Brown等人(2020年)表明TriviaQA的few-shot性能能够随着模型大小而平稳增长,这表明语言模型能够利用其模型能力吸收知识。
图3显示了GLaM MoE和密集模型之间的性能比较,这些模型在TriviaQA上具有类似的计算预测。GLaM在各个密集模型上的性能增益在不同模型容量上是一致的。对于类似的计算FLOPs,GLaM具有显著更好的性能,为了达到相同的预测精度,GLaM所需的FLOPs要少得多。
稀疏模型不仅优于稠密模型,而且在该数据集上也优于先前的最新技术(SOTA)。表6比较了GLaM(64B/64E)的one-shot性能与之前的SOTA结果。对于开放域TriviaQA任务,我们的one-shot结果比以前的SOTA高出2.7%,并且比测试服务器上的少量SOTA GPT-3高出5.3%。这表明,尽管GLaM(64B/64E)的nact参数仅为GPT-3的一半,但GLaM的附加容量对性能增益起着至关重要的作用。
GLaM在自然语言推理任务(NLI)类别中也表现出了很强的性能,其中模型被要求预测给定句子对之间的关系。ANLI(对抗性自然语言推理)是一个具有挑战性的基准,其中有三轮(R1、R2、R3)针对模型的对抗性设计问题。
表7比较了所有三轮ANLI的GLaM(64B/64E)和SOTA密集模型。GLaM(64B/64E)在所有三轮中都取得了最好的成绩。特别是在第二轮(R2),GLaM(一次)比GPT-3(一次)提高了18%,比fewshot设置提高了17.6%。GLaM的性能与MegatronNLG(530B)类似,但GLaM的优势在于,它只需要不到MegatronNLG(530B)所需计算量的20%即可达到相同的性能。
在Winograd风格的任务中,需要模型来预测给定代词所指的上下文中的单词。这个代词在给定的上下文中可能在语法上模棱两可,但在语义上不模棱两可。尽管GLaM在经典的Winograd任务中表现不佳,但在最近的对手挖掘Winogrande任务中表现出色。与GPT-3相比,GLaM在zero-shot设置下的性能提高了4.6%,在one-shot设置下的性能几乎相同。
最后,我们在表14和表15中报告了针对所有任务的开发集的zero-shot和one-shot 评估。
在以下章节中,我们将对影响GLaM性能的因素及其关键特性(包括模型扩展、数据和计算效率)进行详细的烧蚀研究。
6.2. 数据质量的影响
我们研究了数据质量对下游任务的few-shot性能的影响。我们使用一个中等大小的GLaM模型(1.7B/64E)来显示过滤文本对模型质量的有效性。我们在两个数据集上训练具有相同超参数的模型。一个是第3节中描述的原始数据集(由过滤网页、维基百科、对话、论坛、书籍和新闻页组成),第二个数据集由过滤网页替换为未过滤网页的数据集组成。混合比例如表3所示固定。过滤网页由143B个token组成,而未过滤网页由约7Ttoken组成。
图4显示了在过滤数据上训练的模型在NLG和NLU任务上都表现得更好。特别是,过滤对NLG的影响大于对NLU的影响。这可能是因为NLG通常需要生成高质量的语言,而过滤的预训练语料库对于语言模型的生成能力至关重要。许多以前的工作,如Raffel等人(2020年),都强调了预训练数据规模的重要性,而我们的研究强调了预训练数据的质量也起着关键作用的事实,特别是在下游任务的执行中。我们预计更好的数据预处理策略可能会进一步提高性能。
6.3. 尺度研究
扩展密集语言模型通常涉及通过添加更多层使模型更深,通过增加标记表示的嵌入维度使模型更宽。此过程会增加模型的参数NPARMS的总数。对于给定输入样本的每个预测,这些模型都是“密集”的,因为所有NPARMS参数都将被激活,即表5中的NPARMS=nact参数。因此,每次预测的有效FLOPs随模型大小NPARMS线性增加。虽然FLOPs的增加可能会提高预测性能,但也会增加每次预测的总体成本。
相比之下,GLaM模型很少被激活,因为每次预测仅激活总nparams参数的一小部分,其中nparams>>nact参数。因此,GLaM模型还有一个额外的维度需要扩展。除了使模型更深、更广,进而使每个专家更大之外,还可以通过增加MoE层的专家数量来增加模型的容量。
调整专家规模:
如图5所示,各任务的平均zero-shot和one-shot 性能随专家的规模而变化。我们还发现,对于每个token的类似有效FLOPs,GLaM MoE模型的性能始终优于GLaM密集模型。对于图6所示的语言理解任务,GLaM MoE模型的性能增益与生成性任务的性能增益具有相似的扩展趋势。我们观察到,MoE和稠密模型在较小尺度下表现相似,但MoE模型在较大尺度下表现更好。
扩大专家数量:
接下来,我们研究增加每个MoE层的专家数量的影响。更具体地说,我们从一个1.7B的中等规模模型开始,该模型本质上是一个GLaM(1.7B/1E)模型,其中每个MoE层减少到只包括一个作为专家的前馈网络。然后,我们将每个MoE层中的专家数量从1增加到256。尽管专家数量呈指数增长,但由于GLaM的稀疏性,每个模型中的nact参数几乎没有增加。事实上,如表5所示,它们每个预测都有几乎相同的FLOPs。在图7中,我们观察到,对于每个预测的固定计算预算,添加更多专家通常会导致更好的预测性能。这进一步验证了GLaM稀疏激活模型相对于密集模型的性能增益,当两个模型在每次预测中都有类似的FLOPs时,这得益于更多专家增加的容量和灵活性。
6.4. GLaM的效率
现有的大型密集语言模型通常需要大量的计算资源进行训练和服务(Patterson等人,2021)。他们还需要消耗大量的训练前数据。我们研究了所提出的GLaM模型的数据和计算效率。总之,我们的结果表明GLaM在这两方面都比稠密模型有显著的优势。
数据效率:
训练密集的语言模型成本高昂,因此提高效率对于降低能耗和二氧化碳排放非常有价值。图8显示了我们的模型相对于密集基线的学习曲线。我们观察到,GLaM MoE模型需要的数据比密集的可比FLOPs模型要少得多,以实现类似的zero-shot和one-shot性能。换句话说,当使用相同数量的数据进行训练时,MoE模型的性能要好得多。使用280B token训练的GLaM 64B/64E模型在4种学习设置中的3种(zero-shot/一次NLU和一次NLG)上的表现大大优于使用300Btoken训练的GPT-3,并与剩余设置(即zero-shotNLG任务)的GPT-3分数相匹配。GLaM 64B/64E模型使用高达600B的token进行训练,可获得更高的分数。
计算效率和能耗:
图9显示了平均zero-shot和one-shot性能如何随TPU训练MoE和密集模型的年数而变化。我们发现,为了在下游任务上获得类似的性能,训练稀疏激活的模型比训练密集的模型需要更少的计算资源。图9还显示,在TPU年数相同的情况下,稀疏激活的模型具有显著更好的性能。
如表1所示,整个GLaM训练消耗456 MWh,约为GPT-3使用的1297 MWh能源成本的1/3。此外,为了达到与GPT-3相似(且略高于GPT-3)的分数,我们使用1024个TPU-v4芯片对最大的GLaM(64B/64E)模型进行574小时的训练(使用280B的训练token)。训练时(2021年8月和9月),谷歌数据中心的电力使用效率(PUE)1为1.11。使用每个TPU-v4芯片326W的测量系统功率,GLaM的总能耗为213 MWh,是GPT-31287 MWh能源成本的1/6。在训练GPT-3时,数据中心PUE为1.10(Patterson等人,2021年)。GLaM的能耗降低是由于TPU-v4硬件和GSPMD软件的MoE架构和计算效率优化。由于能耗较低,GLaM训练的二氧化碳排放量也较低。当时,谷歌数据中心每MWh的净TCO2为0.088,使用280Btoken训练GLaM的净TCO2总量为18.7,而GPT-3的净TCO2为552(Patterson等人,2021年)。使用600Btoken的完整GLaM训练仅消耗456 MWh,并排放40.2净TCO2。
7.表示和社会
如第5节所述,GLaM在许多下游任务中表现出良好的性能。这表明GLaM能够对各种语言和世界知识进行编码,以便在下游应用程序中使用。然而,另一方面,它也可以捕捉书面文本集合中存在的关联,包括性别和职业之间的关联(Bolukbasi等人,2016年;Rudinger等人,2018b;Zhao等人,2018年),对不同种族和宗教群体的负面情绪(Li等人,2020年;Nadeem等人,2021年),残疾人(Hutchinson等人,2020年),以及其他社会偏见(Caliskan等人,2017年;Rudinger等人,2017年;Sap等人,2020年;Sotnikova等人,2021年)。
如果这些编码导致模型对新样本做出错误的假设,那么潜在的危害就是,负责任的评估实践在语言模型从研究到生产的整个开发过程中都是至关重要的。产品团队可以使用情境化测量建模来评估潜在危害(Jacobs&Wallach,2021年),并部署一系列缓解技术(Prost等人,2019年)。在研究中,许多人认识到需要更严格的测量方法(Blodgett等人,2021年),并提出了评估语言模型在其表达中内在编码有害典型的程度的指标(May等人,2019年;Webster等人,2021年)。
虽然这一活跃的研究领域尚未就如何最好地衡量这些意外偏置达成共识,但模型开发人员可以通过评估通用模型的一系列指标以及与特定用例的用户体验多样性相关的指标来进行尽职调查。在这项研究中,我们选择了一组可用的诊断方法,这些方法对许多人来说都是有用的,可以让他们对我们的模型编码的各种关联的强度形成第一印象,以便帮助评估在应用时它可能会如何执行。我们从GPT-3(Brown等人,2020年)中得到了特别的启发,并研究了与身份术语和WinoGender基准相关的反应中的共现现象(Rudinger等人,2018b)。
这一评估并非详尽无遗;随着时间的推移,我们希望不断投资于评估和监控这些模型行为的方法,并鼓励我们的模型用户针对他们的工作进行彻底的分析。
7.1. 共现提示
我们评估了我们的模型,以分析哪些词在回应特定提示(表8)时最常同时出现,这些提示包括与性别、宗教、种族和民族身份相关的词。我们试图重现Brown等人(2020)中描述的程序,并在下面描述任何变化。
描述性词语:
我们通过在温度为1的情况下使用top-k采样(k=40),为每个提示符生成800个输出,从而分析模型输出样本集。我们对所有三个共现维度的分析都包括一个现成的词性标记(Bird&Loper,2004),我们使用它删除停止词,只选择描述性词(即形容词和副词)。
我们最初打算只考虑形容词作为分析的描述性单词。但是在回顾POS标记器的结果时,我们注意到标记器的错误。例如,“pretty”通常会被错误地归类为副词,而实际上它被用作形容词,如以下样本中所示:
“她很漂亮,很有造诣,所以镇上的人都以她为荣,爱抚她,当她在学校获奖时,他们把她的名字印了出来。”
因此,我们遵循Brown et al.(2020)的方法,包括所有形容词和副词,为了使我们的分析透明和可复制,我们省略了任何手动标记步骤。表9显示了使用性别代词提示时出现频率最高的描述性词语,表10和表11显示了种族和宗教提示时出现频率相同的描述性词语。
7.2. Winogener
共指消解是许多应用程序需要具备的一种功能,包括机器翻译(Stanovsky等人,2019年;Webster&Pitler,2020年)和问答(Lamm等人,2020年)。为了评估GLaM中的性别相关性是否会导致其在one-shot设置中出现共指错误,我们测量了Winogener(Rudinger等人,2018b)。GLaM在完整数据集上达到了71.7%的新水平(相比之下,GPT-3为64.2%(Brown等人,2020年))。令人鼓舞的是,“他”类(70.8%)和“她”类(72.5%)以及定型型(仅美国职业统计数据就能预测正确答案)(Rudinger et al.,2018b))和反定型型(或“gotcha”)类(均为71.7%)之间的准确率非常接近。
8.讨论
GLaM是第一个MoE语言模型,在上下文学习NLP任务中,它的性能优于密集型语言模型,每个标记的FLOPs率相似。为了达到与GPT-3相同的总体性能,GLaM(64B/64E)型号只需要213 MWh的功率,而GPT3使用的功率为1287 MWh,能耗节省了6倍。此外,我们的比例曲线预测了NLG和NLU任务中更大MoE模型的额外质量增益。这些结果表明,在计算预算相同的情况下,在MoE架构中投入资源以实现高质量更为有效。多语言神经机器翻译也得到了类似的结论。特别是,Lepikhin等人(2021年)表明,与最密集的现有技术相比,600B参数MoE模型在100个语言对上实现了+6.1平均BLEU,计算成本节约了10.7倍。
模型并行基础设施(SaZeer-等人,2018b;黄等人,2019;SueBi等人,2019;Rasley等人,2020)的最新发展允许对多达数万亿个参数的模型进行有效的训练。可训练性,或者说训练稳定性,现在成为神经网络扩展的主要挑战。为了提高训练稳定性,通常需要经验启发法和超参数调整(McCandlesh等人,2018年;Kaplan等人,2020年)。因此,不同规模的训练模型通常需要不同的批量大小、学习速率计划和其他学习超参数组合,从而导致更高的训练成本。在我们的实验中,我们发现,只要仔细实施数值稳定性技巧,所有GLaM模型都具有令人惊讶的良好训练稳定性。我们将同一组学习超参数应用于不同尺度的GLaM模型,并观察到下游任务质量与先前密集模型相当。
稀疏性和模型容量:
正如之前关于稀疏激活模型的研究(Fedus等人,2021年)中所观察到的,MoE模型在面向知识的任务中更为有效。开放域任务是度量模型中存储的知识量的一种方法。MoE模型在TriviaQA等开放领域QA基准中的性能表明,与密集模型相比,这些模型的信息容量显著增加。另一方面,当任务的上下文非常模糊时,例如完形填空和完成任务,MoE模型和密集模型之间的差异要小得多。这可能是因为很难为任务选择最佳的两名专家。
限制:
尽管在上下文学习和训练效率方面具有优势,但稀疏激活的模型包含更多的参数,因此需要更多的设备。这限制了资源的可访问性,并增加了服务成本,尤其是在服务流量较低的情况下。
在GLaM 1B MoE模型中,当专家数量从64人增加到256人时,我们还观察到NLG任务中更糟糕的验证困惑和上下文学习性能。扩展专家数量只会导致计算成本的次线性增加,而扩展其他模型维度(如模型深度或宽度)会导致成本的线性增加。使GLaM能够在专家数量上进一步扩展是未来的重要工作。
表示和社会:
我们对Winogener的结果(第7.2节)感到鼓舞,据我们所知,这是第一个缩小定型和反定型样本之间性能差距的结果。这表明大型、稀疏激活的模型(如GLaM)可能较少依赖表面统计相关性,因此不太容易过度泛化,从而产生更好的下游性能。
9.道德考虑
大型语言模型的发展提出了几个伦理问题(Ledn&Prasuras,2017;BeDER等人,2021;BurMasaI等人,2021),包括表示偏置(Blodgett等人,2020),适当处理(罗杰斯,2021)和文献(BeDE&弗里德曼,2018)的训练数据,隐私(Abadi等人,2016b;Carlini等人,2021年)和环境问题(Strubell等人,2019年;Patterson等人,2021年)。我们强调与我们的工作特别相关的三个方面。
我们工作的一个发现是,高质量的预训练语料库对于生成的模型的质量至关重要。为了实现本文报告的结果,我们遵循过滤web文本的标准方法来删除低质量内容。然而,由于训练前文本集合的规模,这种过滤是自动的;我们认识到,在这一过程中,重要的是确定哪些数据点被模型删除,因为可能会过度过滤与边缘化群体相关的文本,并强化不公平的偏见。虽然这方面的原则性研究已经超出了当前工作的范围,但我们期待着未来的工作,探索过滤模型是否无意中了解到文本质量和社会重要变量之间的任何虚假关联。
我们进一步遵循文献使用标准基准来证明稀疏激活对语言建模的有效性。然而,在考虑我们作为一个社区应该在哪些任务上取得进展,以及我们有责任不将我们的模式应用于哪些任务时,我们提倡一种更加深思熟虑的方法。有几方已经就这一主题提出了章程,包括OpenAI、2谷歌、3 Facebook、4和微软。5我们将我们的工作放在这一背景下,并将研究应用我们的模型的任务的道德含义。
零和one-shot 推断是具有许多参数的模型中出现的一种令人兴奋的能力。能够从很少的例子中直观地训练模型降低了模型开发的障碍:它将不再是具有专业知识的专家的专属领域。一方面,这是令人兴奋的,因为它承诺使该领域更容易进入和开放,但我们确实看到了谨慎的理由,因为滥用可能造成伤害,无论是邪恶的还是幼稚的。为了降低误用的风险,我们提倡一种关于任务选择、负责任的部署实践和稳健评估的开放讨论文化,以检测模型中的任何无意行为。
10.结论
我们提出并开发了一系列称为GLaM的通才语言模型,该模型使用稀疏激活的专家混合架构,不仅比密集型模型获得更好的平均分数,而且在zero-shot和one-shot的29个代表性NLP任务上也比GPT-3模型获得更好的平均分数。GLaM MoE模型比密集模型具有更好的训练和数据效率。特别是,GLaM(64B/64E),我们最大的1.2万亿参数MoE语言模型,与训练GPT-3相比,仅以三分之一的能耗实现了更好的平均性能。我们希望我们的工作将鼓励更多地研究获取高质量数据的方法,并使用MoE更有效地扩展语言模型。
11.致谢
作者要感谢Jeff Dean、Zoubin Ghahramani、Macduff Hughes、Naveen Kumar和Fernando Pereira的支持和宝贵的投入。我们要感谢谷歌研究和核心ML团队的洞察力讨论,整个TPU性能,XLA,和LIVO基础设施团队,为这个项目作出基础贡献。特别要感谢诺姆·沙泽尔、大卫·帕特森、劳伦特·沙菲、乔纳森·申、本·李、安莫尔·古拉蒂、大卫·苏、阿坎克莎·乔杜里、莎伦·纳朗、托马斯·斯特罗曼、丹尼尔·德·弗雷塔斯·阿迪瓦尔达纳、埃利·柯林斯、罗马尔·托皮兰、埃里卡·莫雷拉、丹·赫特、杰瑞克·威尔基维茨和埃里克·尼,感谢他们提供了建设性的反馈和灵感。我们要感谢Tom Small提供了本文中使用的一些数字。
A.数据污染
由于GLaM接受了超过1.6万亿个文本标记的训练,因此有理由担心一些测试数据可能准确地出现在预训练数据集中,从而夸大了一些结果。因此,我们遵循Brown et al.(2020)和Wei et al.(2021)的方法,量化训练前数据和评估数据集之间的重叠。
我们的分析采用了与Wei等人(2021年)相同的方法,而Wei等人(2021年)紧随其后的是Brown等人(2020年)。对于每个评估数据集,我们报告了与预训练数据重叠的样本数量,将重叠定义为具有任何n-gram,该n-gram也出现在预训练数据中(在数据集之间变化n)。我们发现,在训练数据中逐字出现的验证样本的数量与之前的工作大致相同。我们在表12中报告了这些数字。