当前位置: 首页 > 科技观察

1.2万亿参数:谷歌通用稀疏语言模型GLaM,小样本学习战胜GPT-3

时间:2023-03-14 11:38:05 科技观察

近年来,我们看到模型规模越来越大。例如,2018年诞生的GPT就有1.17亿个参数。一年时间,2019年GPT-2参数数量达到15亿个,2020年将扩充至1750亿个参数的GPT-3。据了解,OpenAI打造的超级计算机拥有28.5万个CPU核心和1万个GPU,用于OpenAI在其上训练所有AI模型。大型语言模型虽然训练起来很昂贵,但也有一些重要的方面,例如能够在各种任务中执行小样本学习,包括阅读理解、问答。尽管这些模型可以通过简单地使用更多参数来获得更好的性能。但是有没有办法更有效地训练和使用这些模型呢?为了回答这个问题,谷歌推出了一个拥有万亿权重的通用语言模型(GeneralistLanguageModel,GLaM)。该模型的一大特点是稀疏性,可以有效地训练和服务(在计算和资源使用方面),并在多个小样本学习任务上取得有竞争力的性能。让我们看看GLaM模型的细节。数据集Google首先构建了一个包含1.6万亿个标记的高质量数据集,这个未标记的数据集的很大一部分来自从专业写作到低质量评论和论坛页面的网页。此外,谷歌还开发了文本质量过滤器,在维基百科和书籍文本数据集上进行训练。由于过滤器训练的数据集质量很高,因此谷歌用它来过滤网页内容的质量。.最后,谷歌应用此过滤器生成最终的网页子集,并将其与书籍和维基百科数据结合以创建最终的训练数据集。GLaM模型架构GLaM是混合专家(MoE)模型,可以认为它具有不同的子模型(或专家),每个子模型专门用于不同的输入。每一层的专家都由门控网络控制,门控网络根据输入数据激活专家。对于每个标记(通常是一个词或一个词的一部分),门控网络会选择两个最合适的专家来处理数据。fullGLaM共有1.2T个参数,每个MoE包含64个专家,共32个MoE层,但在推理时,模型只激活了97B个参数,占总参数的8%。在GLaM的架构中,每个输入令牌都被动态路由到从64个专家网络中选出的两个专家网络进行预测。与GShardMoETransformer类似,Google将单个前馈网络(人工神经网络中最简单的层,如上图蓝框中的Feedforward或FFN)替换为其他Transformer层的MoE层。MoE层有多个专家,每个专家都是一个架构相同但权重参数不同的前馈网络。虽然MoE层有很多参数,但专家是稀疏激活的,这意味着对于给定的输入令牌,只使用两个专家,这具有在限制计算的同时为模型提供更多容量的优点。在训练期间,每个MoE层门控网络都使用其输入进行训练,为每个标记激活最好的两个专家,然后将其用于推理。对于MoE层的E-experts,这本质上提供了一组E×(E-1)种不同的前馈网络组合,而不是经典Transformer中的一种组合,从而带来更大的计算灵活性。最终学习到的令牌表示来自两个专家的输出的加权组合,这使得不同的专家能够激活不同类型的输入。为了能够扩展到更大的模型,GLaM架构中的每个专家都可以跨越多个计算设备。谷歌使用GSPMD编译器后端来应对扩展专家的挑战,并训练多个变体(基于专家规模和专家数量)以了解稀疏激活语言模型的扩展性。评估设置谷歌同时使用零样本和单样本设置,其中在训练中使用了看不见的任务。评估基准包括以下内容:完形填空和完成任务;开放域问答;温诺格拉德风格的任务;常识性推理;上下文阅读理解;超级胶水任务;自然语言推理。谷歌一共使用了8个自然语言生成(NLG)任务,其中生成的短语基于真实目标进行评估(以ExactMatch和F1measure为指标),以及21个自然语言理解(NLU)任务,几个选项中的预测由条件对数似然选择。实验结果当每个MoE层只有一名专家时,GLaM简化为基于Transformer的基础密集模型架构。在所有实验中,Google使用“基础密集模型大小/每个MoE层的专家数量”来描述GLaM模型。例如,1B/64E表示具有1B参数的密集模型架构,每隔一层由64个专家MoE层替换。谷歌测试了GLaM的性能和缩放属性,包括在同一数据集上训练的基线密集模型。与微软和英伟达最近推出的Megatron-Turing相比,GLaM在使用5%的余量时在7个不同的任务上实现了相当的性能,同时将推理过程中使用的计算能力降低了4/5。此外,1.2T参数稀疏激活模型(GLaM)在更多任务上取得了比1.75B参数密集GPT-3模型更好的平均结果,同时在推理过程中使用更少的计算能力。GLaM和GPT-3(越高越好)在NLG(左)和NLU(右)任务上的平均分数。谷歌总结了GLaM和GPT-3在29个benchmark上的性能对比结果。结果表明,GLaM在大约80%的零样本任务和大约90%的单样本任务上的性能超过或等于GPT-3。此外,虽然完整版GLaM的总参数为1.2T,但每个令牌在推理期间仅激活具有97B个参数(1.2T的8%)的子网络。扩展GLaM可以通过两种方式扩展:1)扩展每层专家的数量,其中每个专家都托管在计算设备中;2)扩展每个专家的规模超出单个设备的限制。为了评估缩放属性,该研究在推理时将相应的密集模型与每个令牌的类似FLOPS进行了比较。通过增加每个专家的规模,零样本和单样本的平均性能。随着专家规模的增长,每个令牌的预测FLOPS在推理时增加。如上图所示,跨任务的性能与专家的规模成比例。GLaM稀疏激活模型在生成任务的推理过程中也优于FLOPs中类似的密集模型。为了理解任务,我们观察到它们在较小的规模上表现相似,但稀疏激活模型在较大的规模上表现更好。数据效率训练大型语言模型需要大量计算,因此提高效率有助于降低能耗。本研究展示了完整版GLaM的计算成本。模型推理(左)和训练(右)的计算成本(GFLOPS)。这些计算成本表明GLaM在训练期间使用更多计算,因为它训练更多的标记,但在推理期间使用更少的计算。下图显示了使用不同数量的令牌进行训练的比较,并对模型的学习曲线进行了评估。随着在训练中处理更多标记,稀疏激活和密集模型在8个生成任务上的平均零样本和单样本性能。随着在训练中处理更多标记,稀疏激活和密集模型在21个理解任务上的平均零样本和单样本性能。结果表明,稀疏激活模型使用更少的数据进行训练,同时实现与密集模型相似的零样本和单样本性能。而且,如果适用相同数量的数据,稀疏模型的性能要好得多。最后,Google评估了GLam的能源效率:GLaMvs.GPT-3在训练期间的能源消耗。尽管GLaM在训练过程中使用了更多的计算能力,但它受益于GSPMD(谷歌于5月推出的一种基于编译器的通用机器学习计算图的自动并行系统)支持的更高效的软件实现,以及TPUv4的优势,它在训练过程中消耗更少的能量培训比其他模型。