这篇文章详细介绍了Megatron-Turing NLG 530B (MT-NLG),一个拥有5300亿参数的大规模生成式语言模型的训练过程、技术细节和评估结果。以下是文章的主要内容总结:
-
背景与动机:
-
大规模预训练语言模型(如BERT、GPT-3)在自然语言处理(NLP)任务中表现出色,但训练这些模型需要高性能硬件、软件和算法技术。
-
本文介绍了MT-NLG,这是迄今为止最大的单体Transformer语言模型,参数规模是GPT-3的三倍。
-
-
训练基础设施:
-
使用了DeepSpeed和Megatron框架,结合了3D并行技术(数据并行、管道并行和张量并行),以高效利用数千个GPU进行训练。
-
硬件方面,使用了NVIDIA的A100 Tensor Core GPU和HDR InfiniBand网络,确保了高吞吐量和低延迟。
-
-
训练数据集与预处理:
-
训练数据集包括Common Crawl、The Pile等多个高质量数据源,经过严格的预处理(如去重、过滤低质量数据)以确保数据质量。
-
数据集混合策略通过调整批次组成,确保不同数据集的样本分布符合预定的权重。
-
-
模型架构与训练过程:
-
MT-NLG基于Transformer解码器架构,拥有105层、20480个隐藏单元和128个注意力头。
-
训练过程中使用了混合精度训练、梯度累积和Adam优化器等技术,确保了训练的稳定性和效率。
-
-
模型评估与结果:
-
MT-NLG在多个NLP基准测试中表现出色,特别是在零样本、单样本和少样本学习任务中,取得了新的最先进结果。
-
评估任务包括补全预测(如LAMBADA)、阅读理解(如RACE、BoolQ)、常识推理(如Winogrande、HellaSWAG)和自然语言推理(如ANLI、HANS)等。
-
-
社会偏见分析:
-
文章分析了MT-NLG在性别、种族和宗教等方面的社会偏见,发现模型在训练数据中学习到了某些偏见。
-
提出了未来需要采取的反偏见措施,如训练集过滤、提示工程和微调等。
-
-
上下文学习能力:
-
文章探讨了MT-NLG在上下文学习中的表现,发现模型能够通过少量示例快速适应新任务,但示例的分布和顺序对性能有显著影响。
-
上下文学习并不能完全避免在狭窄分布上过拟合的问题。
-
-
生成能力定性分析:
-
MT-NLG在生成连贯文本、解答谜语、回答Jeopardy问题和生成代码等方面表现出色,展示了其强大的生成能力。
-
-
未来工作与结论:
-
文章总结了MT-NLG的训练和评估结果,强调了大规模语言模型训练的挑战和机遇。
-
未来的工作将集中在进一步优化训练技术、减少模型偏见以及探索更广泛的应用场景。
-
这篇文章展示了MT-NLG作为当前最大规模语言模型的技术细节和性能表现,并探讨了其在自然语言理解和生成任务中的潜力与挑战。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:
单位: 同等贡献, ††微软, ‡‡英伟达
摘要: 预训练的通用语言模型通过零样本、少样本和微调技术适应下游任务,可以在各种自然语言处理领域达到最先进的准确率。由于其成功,这些模型的规模迅速增加,需要高性能的硬件、软件和算法技术来训练如此大规模的模型。作为微软和英伟达的联合成果,我们展示了最大规模的基于Transformer的语言模型——Megatron-Turing NLG 530B(MT-NLG)的训练细节,该模型拥有5300亿参数。本文首先重点介绍了使用DeepSpeed和Megatron训练该模型的基础设施以及3D并行方法。接着,我们详细描述了训练过程、训练语料库的设计以及数据整理技术,这些是我们认为模型成功的关键因素。最后,我们讨论了各种评估结果,以及MT-NLG展示的其他有趣观察和新特性。我们证明MT-NLG在多个NLP基准测试中实现了卓越的零样本、单样本和少样本学习准确率,并建立了新的最先进结果。我们相信,我们的贡献将有助于进一步推动大规模训练基础设施、大规模语言模型和自然语言生成的发展。
1. 引言
最近发布的基础模型[8],如BERT [12]、GPT-2 [52]和RoBERTa [37],代表了一种范式转变,即通过大规模预训练通用类模型,然后通过迁移学习将其适应于广泛的下游任务来构建AI系统。这些模型通过结合Transformer架构[67]、自监督学习、少样本条件[9]和微调的有效性,成为最先进的自然语言处理(NLP)系统中无处不在的存在。
重要的是,许多近期工作已经证明,扩大模型规模可以显著提高其性能,尤其是在零样本和少样本设置下。例如,GPT-3 [9]是一个拥有1750亿参数的自回归语言模型,通过上下文学习在语言任务中表现出色,而无需微调或梯度更新。这种上下文学习方法允许模型仅通过简单的指令和少量可选示例来执行新的语言任务。最近的工作如提示调优[33]进一步增强了这种方法的有效性,它能够高效地将大型语言模型适应于单个任务,并具有强大的任务性能。大型语言模型展示的其他有趣能力包括但不限于:生成连贯的长篇文本(如新闻故事)、生成具有现实世界知识的响应,以及执行基本的数学运算。
近年来,大型语言模型的快速发展也得益于计算资源的增长、大规模数据集的可用性以及不断演进的软件栈。最先进的超级计算集群满足了这种规模模型训练的计算、内存和网络需求。高质量、高容量和多样化数据集的精心处理直接有助于模型在下游任务中的表现以及模型的收敛性。新的数值操作方法和训练配方被开发出来,旨在提高优化效率和稳定性。然而,为了维持模型参数规模看似指数级的增长(见图1),在开发新方法、基础设施和训练能力方面需要取得实质性进展。
训练如此大规模的模型具有两个挑战。首先,这些模型的参数已经无法适应即使是最大的GPU的内存。其次,如果不特别关注算法、软件和硬件栈的并发优化,大量的计算操作可能导致不切实际的长训练时间。这需要高效的内存和计算并行技术,以充分发挥数千个GPU的潜力。
受到模型规模增加带来的显著定性性能提升的推动,我们的工作延续了大规模语言建模的趋势。我们构建了Megatron-Turing NLG 530B(MT-NLG),这是一个基于Transformer的语言模型,拥有5300亿参数。据我们所知,这是迄今为止训练的最大的单体语言模型,其参数数量是GPT-3的3倍。值得注意的是,包含更多参数的稀疏模型结构(如专家混合模型[61])已经被训练出来。然而,尚不清楚采用这种方法构建的模型是否具有可比的参数效率和泛化能力。
通过NVIDIA的Megatron-LM [63, 43]和微软的DeepSpeed [57, 65]的合作,我们创建了一个高效且可扩展的3D并行系统,能够结合数据、管道和张量切片并行。通过结合张量切片和管道并行,我们可以在它们最有效的范围内进行操作。我们构建了包含数千亿个标记的高质量自然语言训练语料库,并共同开发了训练配方以提高优化效率和稳定性。
在本文中,我们将讨论在开发MT-NLG过程中使用的方法细节,包括训练基础设施(第2节)、训练数据集和训练过程(第3节)、模型评估和其他有趣的观察(第4节)。我们还将深入探讨MT-NLG的社会偏见(第5节)、上下文学习能力(第6节)以及生成能力的定性分析(第7节)。
2. 大规模模型训练基础设施
由NVIDIA A100 Tensor Core GPU和HDR InfiniBand网络驱动,最先进的集群(如NVIDIA Selene和微软Azure NDv4)具有足够的计算能力来训练具有数万亿参数的模型。然而,要充分发挥这些超级计算机的潜力,需要内存和计算高效的策略来在数千个GPU上进行并行化。单独使用现有的并行策略(如数据、管道或张量切片)在内存和计算效率上存在权衡,无法用于训练这种规模的模型。在本节中,我们讨论了训练大规模模型的系统挑战。我们描述了我们的软件设计、硬件系统以及统一强大的训练基础设施的性能评估。
2.1 挑战
我们首先讨论训练大规模语言模型的挑战:内存和计算效率,以及各种解决方案策略(如数据、张量和管道并行)的权衡。
2.1.1 内存和计算效率
内存效率: 训练一个5300亿参数模型的内存需求远远超过单个GPU设备的可用内存。我们参考Rajbhandari等人[56]对训练期间内存消耗的分析研究。
混合精度训练[41]通常在前向和后向传播中以半精度格式(即每个参数2字节)存储权重和梯度。为了优化器的数值稳定性,它还保留了全精度(4字节)的副本。假设使用Adam优化器[27],训练每个参数消耗20字节内存:
因此,训练一个5300亿参数的模型需要超过10TB的聚合内存来存储模型权重、梯度和优化器状态。
激活内存也可能消耗大量内存,并随着训练批次大小、序列长度和模型维度的增加而增加。检查点和重新计算每个Transformer块的激活是训练大型语言模型的常见策略,以减少激活内存的需求。然而,层之间的边界激活仍然需要存储,聚合激活内存为:
批次大小×层数×序列长度×隐藏维度×2字节
根据我们的模型和训练配置(第3.2节),这大约为16.9TB。
幸运的是,激活内存需求可以通过梯度累积来缓解。梯度累积是一种策略,将完整的训练批次拆分为微批次,按顺序处理,并在更新模型权重之前累积其梯度。在计算微批次的梯度后,可以释放相关的激活。因此,训练批次大小可以扩展,而不会增加峰值驻留激活内存。例如,使用1920个微批次而不是单个大小为1920的微批次,将峰值激活内存从16.9TB减少到8.8GB,而不会改变有效批次大小。
计算效率: 虽然大型GPU集群可以拥有数千个高吞吐量的GPU,但在这种规模下实现高计算效率具有挑战性。大批次大小可以是提高计算效率的有效方法,因为它增加了内核的算术强度,并有助于分摊在通信和同步上花费的时间。然而,模型可以训练的批次大小有一个上限;使用过大的批次大小可能会对模型质量产生负面影响。使用4000个GPU,即使批次大小为4000,每个GPU也只能分配1个批次大小,从而限制了计算效率。
2.1.2 数据、张量和管道并行的权衡
数据并行: 数据并行是深度学习中一种普遍的技术,其中每个输入批次的训练数据被分配给数据并行的工作者。在更新模型权重之前,梯度在数据并行工作者之间进行通信和聚合。数据并行具有几个明显的优势,包括计算效率和易于实现。然而,数据并行依赖于随着数据并行工作者数量的增加而扩展批次大小,并且不能无限增加而不影响模型质量。
内存效率: 数据并行在所有工作者之间复制模型和优化器,因此内存效率不高。零冗余优化器(ZeRO)[55]是一组优化,通过将复制的数据分区到数据并行工作者之间来提高数据并行的内存效率。
计算效率: 随着并行度和训练批次大小的增加,每个工作者执行的计算量是恒定的。数据并行在小规模下可以实现近乎完美的扩展。然而,随着模型规模的增加,聚合梯度的通信成本也会增加,并且在通信带宽较低的系统上可能会限制计算效率。梯度累积也是一种常见的策略,通过进一步增加批次大小并在微批次上执行多次前向和后向传播,同时在本地累积梯度,然后再进行聚合和优化器步骤,从而分摊这种通信成本。此外,可以通过同时通信已经并行计算的其他张量的梯度来提高性能。
张量模型并行: 张量模型并行(或张量并行)是一类广泛的模型并行技术,将模型的各个层分区到工作者之间。张量并行按工作者数量成比例地减少内存。Megatron [63]使用模型并行来高效地分区大规模语言模型的Transformer块。
内存效率: 张量并行按工作者数量成比例地减少模型的内存占用。根据模型架构,部分激活内存也会减少,尽管可能仍然存在一些复制。
计算效率: 张量并行在每次前向和后向传播中引入了额外的激活通信。因此,张量并行需要高通信带宽才能高效,并且最好在单个DGX服务器内进行,因为那里有高带宽的NVLink。此外,每个模型并行工作者减少了每次通信阶段之间执行的计算量,影响了计算效率。张量并行通常用于扩展内存和计算效率的边界,超出数据并行单独所能达到的范围。
管道模型并行: 管道模型并行(或管道并行)将模型的层划分为可以并行处理的阶段[23, 42]。当一个阶段完成微批次的前向传递时,激活内存被通信到管道中的下一个阶段。同样,当下一阶段完成后向传播时,梯度通过管道向后通信。必须保持多个微批次在飞行中,以确保管道阶段并行计算。
内存效率: 管道并行按管道阶段的数量成比例地减少内存,允许模型规模随着工作者数量的增加而线性扩展。然而,管道并行不会减少每个层的激活内存占用。此外,每个工作者必须存储所有在飞行中的微批次的激活。我们使用IF1B管道调度[42],交替进行前向和后向传播。IF1B的一个关键优势是,飞行中的微批次数量受管道阶段数量的限制,而不是完整训练批次中的微批次总数。
计算效率: 管道并行在三种方法中具有最小的通信开销,因为它只在管道阶段边界之间通信激活。然而,它不能无限扩展。管道并行的程度受模型深度的限制,增加管道维度会像其他形式的模型并行一样降低计算效率。管道并行还要求每个阶段负载均衡以实现高效率。
管道并行在每个训练批次的开始和结束时会产生填充和排空管道的泡沫开销。泡沫开销的大小限制了管道并行的潜在加速。可实现的完美加速比例(或并行效率)是管道阶段数量(PP)和总微批次数量(MB)的函数:
如果微批次数量是管道阶段数量的4倍或8倍,管道分别从单个管道阶段实现81%和90%的并行效率。
从上述讨论中可以清楚地看出,现有的并行技术都无法解决训练具有数千亿参数模型的系统挑战。然而,每种并行技术都有其自身的优点,并且可以以互补的方式使用。为此,我们使用3D并行,这是一种系统化的数据、张量和管道并行组合,可以同时解决计算和内存效率问题。
2.2 软件系统——DeepSpeed和Megatron的3D并行
我们的系统软件栈结合了DeepSpeed的管道并行和数据并行,以及Megatron的张量切片,创建了一个灵活的3D并行实现。数据、张量和管道并行各自在提高内存和计算效率方面发挥着特定作用。
内存效率: Transformer块被划分为管道阶段,每个阶段的块通过张量并行进一步划分。这种2D组合同时减少了权重、梯度、优化器状态和激活所消耗的内存。然而,我们不能无限分区模型而不失去计算效率。
计算效率: 为了进一步加速训练,我们使用数据并行扩展到任意数量的GPU。例如,每个5300亿参数的模型副本跨越280个NVIDIA A100 GPU,节点内进行8路张量切片,节点间进行35路管道并行。然后,我们使用数据并行进一步扩展到数千个GPU。
我们的3D并行实现通过拓扑感知映射进行了优化,最小化了所有形式并行的通信开销,尤其对数据并行有重大影响。这种映射是实现大规模计算效率的关键。我们将在下面详细讨论。
2.2.1 拓扑感知的3D映射
每个并行轴都经过精心映射到工作者上,以通过利用两个关键架构属性最大化计算效率。
带宽映射: 节点内通信的带宽高于节点间通信。我们优先将具有较大通信量的并行组放置在节点内,以利用更高的带宽。张量并行在三种策略中具有最大的通信开销,因此我们优先将张量并行工作者放置在节点内。在可能的情况下,数据并行工作者也放置在节点内以加速梯度通信。否则,数据并行工作者尽可能映射到附近的节点。管道并行的通信量最低,因此我们可以跨节点调度管道阶段,而不受通信带宽的限制。
带宽放大: 每个数据并行组的梯度通信量随着管道和张量并行的增加而线性减少。因此,总通信量比纯数据并行减少。此外,每个数据并行组在其子集中的工作者之间独立且并行地执行通信。因此,数据并行通信的有效带宽通过减少通信量和增加局部性和并行性而得到放大。
2.3 硬件系统
模型训练使用16位bfloat混合精度在NVIDIA的Selene [2]超级计算机上进行,该计算机拥有560个DGX A100节点。每个集群节点有8个NVIDIA 80GB A100 GPU [1],通过NVLink和NVSwitch [3]相互连接。每个节点有八个NVIDIA Mellanox 200Gbps HDR InfiniBand HCA用于应用通信,另外每个节点有两个HCA用于专用存储。节点以三级(叶、脊、核心)胖树拓扑连接,拥有850个交换机。这种拓扑结构允许高效的全归约通信(这是深度学习训练中的主要通信模式)。集群使用全NVME共享并行文件系统进行高性能数据访问和存储。A100 GPU在16位精度下的峰值设备吞吐量为312 teraFLOP/s,总计1.4 exaFLOP/s的16位精度峰值性能。
2.4 系统性能评估
我们考虑了5300亿参数模型在280、350和420个DGX A100服务器上的端到端吞吐量,批次大小为1920。我们观察到的迭代时间分别为60.1、50.2和44.4秒。这些分别对应于每个GPU的126、121和113 teraFLOP/s。
3. 训练数据集和模型配置
在本节中,我们介绍了训练数据集的详细信息、我们的预处理技术以及实验中使用的模型和超参数。
3.1 训练数据集和预处理
Common Crawl(CC)等资源提供了网络的快照,可以用作语言数据的来源。虽然这些数据源包含大量的语言数据,但它们也需要精心设计的预处理步骤,以选择质量合理的数据。正如之前的工作所发现的那样(例如[9]),未经过滤的Common Crawl数据质量低于经过整理的数据集,应采取步骤提高从Common Crawl中选择的数据的平均质量。除了CC数据外,网络上还有许多其他高质量的数据源。为了编译我们的训练数据集,我们利用了最近的工作,旨在为语言建模收集多样化的训练集[17]。我们还包含了RealNews [77]和CC-Stories [66],这些数据集之前已用于大规模LM预训练[4, 63]。
3.1.1 训练数据集
我们主要基于[9, 17]中描述的工作生成我们的训练集。首先,我们从The Pile中选择了我们观察到质量最高的数据集子集(见表1)。然后,按照与生成Pile-CC类似的方法[17],我们下载并过滤了两个完整的CC快照(2020-50和2021-04)。在高层面上,CC数据的处理步骤包括从WARC文件中提供的原始HTML中提取文本,使用在高质量数据上训练的分类器对提取的文档进行评分,并根据其分数过滤文档。这些步骤在第3.1.2节中有更详细的介绍。最后,我们使用模糊去重来删除整个数据集中的重复和近似重复的文档,并使用基于n-gram的过滤来删除下游任务数据,以避免污染。
3.1.2 预处理细节
Common Crawl: 如前所述,Common Crawl包含大量数据。我们选择处理两个快照,2020-50_和_2021-04,目标是获取约150B个标记的训练数据。此过程的第一步是语言检测[11]和从Common Crawl WARC文件中包含的原始HTML中提取文本。根据[11]中提出的理由,我们使用pycld22和jusText23库来完成这些任务。我们观察到,语言检测和提取步骤显著减少了文档数量,只有约25%的文档被分类为英语并具有非空正文内容。
为了从这些提取中选择高质量文档,我们训练了一个2-gram fastText [48]分类器。对于正样本文档,我们从OpenWebText2、Wikipedia和Books3中随机选择了500000、295000和5000个文档,类似于[9]。对于负样本文档,我们从上述文本提取输出中随机抽样了相同数量的文档。我们保留了10%的这些文档用于分类器的评估,分类器在训练后在保留集上达到了90.3%的准确率。分类器应用于每个提取的文档,并将正标签的概率作为文档的分数。
使用上述过程生成的分数,我们使用α=3的帕累托分布过滤提取的文档。这导致约80%的文本内容被过滤。虽然我们选择的α低于一些先前的工作[9],但手动检查数据表明其质量可接受,并且使用α=3使我们能够在去重后达到并略微超过我们最初的标记目标。
其他数据集: 除了Common Crawl数据外,我们还利用了许多其他先前生成的数据集。从The Pile中,我们选择了Books3、OpenWebText2、Stack Exchange、PubMed Abstracts、Wikipedia、Gutenberg(PG-19)、BookCorpus2、NIH ExPorter和Pile-CC数据集。我们还包含了用于训练Megatron [63]的CC-Stories和RealNews数据集。有关这些数据集预处理的详细讨论,我们参考[17]。
模糊文档去重: 互联网上的内容通常在许多文档中重复。为了加剧这个问题,不同Common Crawl快照中抓取的URL不一定是唯一的。事实上,对于我们选择的快照,53%和34%的文档来自之前快照中未见过的新URL。此外,我们其他数据集中的内容(如来自OpenWebText2或Wikipedia的网络内容)也可能存在于Common Crawl中。
精确匹配去重在计算上非常昂贵,因此我们选择采用与其他工作[9; 17]类似的模糊去重方法。我们使用具有1,048,576个特征的哈希向量化器对文档进行向量化(使用scikit-learn4中的HashingVectorizer),计算向量化文档的最小哈希(使用datasketch5),并通过datasketch对所有最小哈希执行局部敏感哈希(LSH)以识别潜在的重复项。我们设置了LSH参数,以增加Jaccard相似度≥0.8的文档至少出现在一个LSH桶中的可能性。具体来说,我们使用了20个大小为13的带,总共260个哈希函数。
执行LSH后,我们处理每个桶并计算所有对Jaccard相似度的近似值,以去除由LSH引入的假阳性重复项。此近似值包括i=0..10次迭代,每次迭代随机抽样一个文档di,计算与桶中剩余所有文档的Jaccard相似度,移除高于0.8阈值的文档并将其标记为di的重复项。处理完所有桶并近似发现重复项(在阈值下)后,我们构建了一个稀疏文档图并找到其中的连通组件(使用scipy)。每个连通组件代表一组我们认为足够相似的文档,并从中选择一个代表。由于数据集的质量不同,我们定义了优先级顺序,基于在从每个组件中选择代表文档时使用哪个数据集,并且最终保留每个组件中遇到的最高优先级数据集的第一个文档,而其余文档则被丢弃。
额外处理: 我们使用Ftfy库[64]将训练数据集中的错误Unicode文本转换为正确的Unicode文本。此外,我们使用langdetect[11]库识别非英语文档,并删除任何字符少于512的文档。如果训练文档包含单词“javascript”且字符少于256,我们也删除该文档。
下游任务数据移除: 我们使用n-gram从训练数据集中移除出现在下游任务中的文本。当我们发现任务文档和训练文档之间存在n-gram匹配时,我们通过移除n-gram及其两侧的200个字符将训练文档分成两部分。我们还移除任何字符少于200的拆分训练文档,或拆分超过10次的训练文档。我们的去重过程和用于不同任务的n值类似于[9]。在来自上述15个去重数据集的319,781,622个文档中,任务去重期间35,988个文档被拆分,1,109个文档被移除,54个文档被拆分超过10次,9,891个文档在开头或结尾被修剪。
混合数据集: 我们选择根据表1中给出的采样权重将数据集混合成异质批次。然而,混合权重不会导致我们选择的批次大小中每个数据集的样本均匀分布。为了解决这个问题,我们跟踪每个数据集的欠采样和过采样,并在每一步略微调整批次组成,以尽可能保持接近所选混合权重分布的样本分布。
3.2 模型和训练过程
4. 结果和成就
为了更好地理解语言模型在训练过程中性能的提升,我们首先展示了MT-NLG的验证损失曲线(交叉熵),如图2所示。我们的验证数据集包含55亿个标记,因此使用整个数据集计算损失在计算上非常昂贵。因此,我们在每次计算验证损失时,对验证数据集中的序列进行打乱,然后运行四次迭代,全局批次大小为1920。这导致每次损失计算时评估1600万个连续的标记。
在模型训练前10亿个标记时,验证交叉熵损失为3.15。如前所述,我们在前120亿个标记期间线性增加批次大小。在此阶段结束时,损失降至2.31。当模型达到我们目标的标记数量(2700亿)时,验证损失降至1.85。
为了评估我们模型的质量(以及其他预训练语言模型),我们采用了与之前工作[9, 53]类似的零样本/单样本/少样本评估设置。为了更好地复现,我们基于开源项目lm-evaluation-harness[18]进行评估,并根据需要进行了任务特定的调整,以使我们的设置更接近之前的工作。我们将在每个任务的具体段落中讨论任何任务的特殊性。此外,对于我们的少样本实验,我们没有进行最佳样本数量的搜索,而是直接使用[9]中建议的配置。在大多数情况下,这些配置似乎表现良好。
为了确保评估的全面性,我们从五个不同类别中选择了八个任务:补全预测、阅读理解、常识推理、自然语言推理和词义消歧。我们在这些任务上与之前的大规模预训练语言模型进行了比较,同时提供了监督基线(如果适用),以展示“通用”模型(如预训练语言模型)与“专用”模型(在目标任务上微调的模型)之间的差距。
图2:MT-NLG的验证损失。
4.1 补全预测
LAMBADA: LAMBADA [49]数据集是一个叙事性段落的集合,特别选择为如果给出整个段落作为上下文,人类可以轻松猜测最后一个单词,但如果只给出最后一句,则无法回答。该任务测试语言模型从更广泛的上下文理解和保留信息的能力,而不仅仅依赖于局部上下文或简单的统计模式。
在零样本评估此任务时,我们将每个段落作为输入提供给模型,并检查模型是否可以通过贪婪生成(选择概率最大的标记)生成正确的最后一个单词。然而,对于单样本/少样本评估,我们切换到填空式提示格式,以更好地向模型提示该任务是关于预测句子的最后一个单词,而不是任意的合理延续。在这种情况下,我们会在最后一个单词前插入“------→”,例如“……Paul和Debbie互相看了一眼,然后看向------→Bob”,并检查模型是否会在“→”后预测正确的单词。我们观察到在少样本设置中使用填空式提示显著提升了性能,尽管单样本性能有所下降,这与之前的工作[9]的观察一致。我们模型在准确性方面的表现如表2所示,我们在LAMBADA测试集上为所有三种设置建立了新的最先进结果。
表2:LAMBADA零样本、单样本和少样本准确性。MT-NLG在不同设置下均优于之前的模型,并为所有三种设置建立了新的SOTA。我们没有找到LAMBADA的近期强监督基线,因此在此省略了与监督模型的比较。
4.2 阅读理解
在本节中,我们讨论MT-NLG在阅读理解任务中的评估。我们选择了两个针对不同问题风格的数据集,并在评估过程中发现随着示例数量的增加,它们的表现趋势非常不同。
RACE: RACE [31]是一个大规模的阅读理解数据集,其文章和问题来自英语考试。该任务中的每个示例由一篇文章和几个问题-答案对组成。为了构建提示,我们在文章、问题和答案文本前分别添加“Article:”、“Question:”和“Answer:”标签,并用换行符连接它们。最后一个问题的实际答案被移除,提示在最后一个“Answer:”处结束。然后,我们使用模型对所有可能的候选答案进行评分,作为“Answer:”之后的延续,并选择得分最高的作为模型的答案。
该数据集中有两种问题类型:直接问题(例如“以下哪种关系是健康的?”)和填空式问题(例如“文本的作者似乎_。”)。我们按照上述方式处理这两种问题类型,这与lm-evaluation-harness[18]的默认设置不同。此外,遵循GPT-3 [9],我们使用
P(completion∣context)
P(completion∣answer_context)
作为评分标准,其中context是完整的提示,answer_context只是字符串“Answer:”。与GPT-3类似,我们观察到与使用长度归一化的对数概率作为评分标准相比,RACE的性能更好。
该数据集包含两个子集,RACE-h和RACE-m,分别对应难题和中等难度的问题。我们在RACE-h集上报告结果,如表3所示。我们观察到RACE-h的性能并没有因为提示中包含更多示例而显著提升。尽管如此,我们的零样本性能已经超过了GPT-3的少样本性能,提升了+1.14%。
对于RACE数据集,迄今为止最好的监督模型之一是ALBERT集成模型[24]。它在RACE-h上达到了91.4%的准确率,显著高于预训练语言模型获得的结果。最近的工作[53]大大缩小了预训练语言模型与监督模型之间的差距,但差异仍然很大。
BoolQ: BoolQ[10]是一个包含是/否问题的数据集,附带支持性的维基百科段落来回答问题。我们将支持性段落、问题(前面加上“Question:”)和字符串“Answer:”连接在一起作为完整提示。我们使用模型对“yes”和“no”作为延续进行评分,并选择模型给出的较高概率的选项。我们模型的性能如表3所示。我们观察到BoolQ评估在提示中包含许多示例时显著受益,这与RACE任务的结果不同。然而,这里的一个共同模式是,阅读理解任务在仅提供一个示例时可以获得不错的改进,可能是因为任务提示格式对模型来说有些混淆,而提供的示例足以让模型遵循段落-问题-答案的格式。
对于BoolQ,T5 + UDG [69]是目前最好的监督模型。它在此任务上达到了91.4%的准确率。然而,与RACE-h相比,我们观察到监督模型与预训练语言模型之间的差距要小得多,并且MT-NLG进一步显著缩小了这一差距。
4.3 常识推理
预训练语言模型的一个有趣方面是它们从训练数据中保留了多少世界知识。为此,我们在两个与常识推理/推断相关的任务上评估了我们的模型。我们在这三个数据集上比较的监督基线是UNICORN [38]。
Winogrande: Winogrande [58]是一个旨在扩展Winograd Schema Challenge的规模和难度的数据集。任务以代词解析问题的形式出现,这些问题设计为仅靠统计语言建模无法解决,需要关于底层事件和对象的常识知识来解决。
对于此任务,我们采用了之前工作[9, 52, 66]使用的评估方法。我们用模糊代词替换实际名词,并评估从代词开始的部分句子在先前上下文条件下的概率。选择导致最高概率的代词替换作为模型答案。结果如表4所示。与GPT-3相比,我们在零样本准确性方面观察到了显著的提升(+2.81%),尽管在少样本设置下差距缩小。我们观察到,在提示中包含一个示例仅略微提高了性能,但切换到少样本设置显著提高了模型性能。正如我们将在其他两个任务中看到的那样,这似乎是一个普遍趋势:常识推理性能随着示例数量的增加而显著提升。这与我们在阅读理解中看到的结果形成了鲜明对比。
HellaSWAG: HellaSWAG [76]是一个常识推理数据集,其中给出了一个目标,模型的任务是选择最可能的后续行动。示例从Wikihow和Activitynet Captions [29]数据集中挖掘。在评估过程中,我们向模型提示目标,然后评估每个候选答案在目标条件下的概率,并选择概率最高的候选答案。结果如表4所示。我们在所有三种设置中均取得了显著的改进,零样本性能超过了GPT-3的少样本性能。与Winogrande类似,从零样本切换到单样本并没有显著提升性能(事实上,在此情况下性能有所下降),但在少样本设置中包含更多示例显著提高了性能。
PiQA: PiQA [6]是一个二元选择问答数据集,旨在理解物理交互。它提出了关于如何完成日常活动的问题,模型的任务是在描述不同行动的两个候选答案之间进行选择。
对于PiQA的评估,我们向模型提示问题/目标描述,然后评估两个不同行动的候选句子的概率,选择概率较高的选项作为模型答案。结果如表4所示。我们再次观察到单样本性能相比零样本有所下降,而少样本性能则获得了不错的提升。
4.4 自然语言推理
在本节中,我们讨论我们的模型在自然语言推理(NLI)任务上的评估。
ANLI: ANLI [46]是一个通过对抗性挖掘创建的NLI数据集,旨在创建一组困难的NLI问题。该数据集有三轮迭代的数据收集;在这里,我们使用第二轮数据进行评估。在评估过程中,我们将NLI问题重新表述为问答格式:每个示例的结构为“<前提>\n问题:<假设>。真、假或不确定?\n答案:”,然后我们检查模型分配给“真”、“假”或“不确定”的概率,并选择最可能的选项作为模型答案。结果如表5所示。在ANLI上,我们观察到,与阅读理解结果类似,我们的模型仅通过提供一个示例就能获得性能提升,而进一步切换到少样本设置并没有进一步提高性能。这再次可能是因为一个示例对于指导模型理解前提-假设-答案格式很重要,但额外的示例可能在内容上无关,包含它们并没有为模型引入新的知识。在ANLI上,我们比较的监督基线是InfoBERT [68]。
HANS: 自然语言推理系统的启发式分析(HANS)[40]是一个NLI数据集,旨在评估模型在NLP数据中利用易错、表面句法启发式的倾向。它提供了一个受控的评估环境,其中示例从特定语法和句法结构的模板生成(每种结构类型称为“子案例”)。任务格式类似于ANLI,将NLI问题转换为二元问答格式(详见附录A中的细节)。我们实现了此任务,并将其纳入lm-evaluation-harness[18]中的现有任务中进行评估。
除了评估我们模型的核心语言理解能力外,我们主要使用HANS数据集来分析其在少样本学习中的行为,这将在第6节中介绍。我们在分析实验中获得的汇总结果如表5所示,图5中展示了不同样本数量下各种MT-NLG检查点的比较。此前没有发布过基于提示的生成基线,因此我们评估了GPT-2进行比较。如第6节所述,零样本性能由模型的内在偏差驱动,准确性仅略高于随机机会(50%)。然而,经过充分训练的大型模型可以利用提示中的上下文示例显著提高性能,而较弱的模型在提供额外的上下文示例时可能会感到困惑,GPT-2的表现从未显著优于随机机会。
4.5 词义消歧
WiC: 上下文中的单词(WiC)[50]数据集提出了一个任务,即从上下文中识别多义词的预期含义。每个数据集示例包含2个句子,两者都包含相同的多义词。任务是确定多义词在两个句子中的含义是否相同。
为了在此任务上进行零样本/少样本评估,我们将问题转换为问答格式:“句子1:<句子1>\n句子2:<句子2>\n问题:单词<目标单词>在两个句子中的用法是否相同?\n答案:”。然后,我们检查模型分配给“是”和“否”作为延续的概率,并选择概率较高的作为模型答案。结果如表6所示。我们观察到,我们的模型在零样本时表现略低于随机机会,但一旦切换到少样本,就超过了随机机会。另一方面,监督的T5 + UDG模型显著超过了随机机会水平。
表6:WiC数据集结果。我们看到从零样本切换到少样本时,性能显著提升,超过了随机机会水平。
5. 探索社会偏见
5.1 引入NLP模型中的社会偏见挑战
自然语言模型是在从各种未整理的来源收集的大规模数据集上训练的。不幸的是,偏见在互联网上普遍存在,从非常煽动性和明显的偏见(可能也容易识别)到更微妙的形式。正如其他工作(例如[9, 71, 53])所表明的那样,数据集中存在的偏见问题可能会被模型学习,从而限制了大型语言模型的部署,尽管它们具有强大的能力。
尽管这不是本文的重点,但我们注意到,正在进行的几个领域的研究旨在减轻这种偏见。例如:
-
训练集过滤——分析训练数据集的元素,并移除显示偏见证据的元素[44]。
-
训练集修改——将训练数据集的元素随机化,涉及性别和种族等应中立的变量[72]。
-
提示工程——修改每个查询的模型输入,以引导模型远离偏见[60, 14]。
-
微调——对训练好的模型进行再训练,以消除偏见倾向[19, 20, 28]。
-
输出引导——在推理过程中添加过滤步骤,重新加权输出值,引导输出远离偏见响应。
在这项工作中,我们训练了一个没有任何反偏见措施的基线模型。我们想强调的是,我们不相信这样的模型应该在没有反措施的情况下部署到生产环境中,特别是,我们不认为MT-NLG模型应该以这种方式部署。相反,我们期望这项工作将成为支持反偏见措施研究的有价值资源,并作为未来部署使用此类措施的起点。我们还相信,结合最先进的大型语言模型训练和最先进的反偏见措施的未来的工作,将产生既非常强大又能够最小化结果中偏见存在的模型。
我们在此展示了对我们模型偏见的初步分析,重点关注与性别、种族和宗教相关的问题。类似于Brown等人[9]和Rae等人[53],我们展示了关联测试、共现分析和情感分析,旨在评估模型在多个维度上的偏见。本节旨在记录和量化模型偏见的一些问题,这些问题需要在未来的工作中解决。
5.2 性别与职业分析
我们首先调查性别与职业之间的关联,以了解模型是否学习了其训练数据中的社会偏见。8 遵循之前的工作[7, 39],我们使用了表18和表19中列出的323个职业列表。本实验中使用的模板是“The {occupation} was a {gender identifier}”,使用的性别标识符为_male_、man、female、woman。
给定一个固定的职业,我们计算模型分配给不同性别标识符的概率,并统计男性标识符概率高于女性标识符的次数。在所有323个职业中,这一比例为78%,表明模型总体上偏向于男性标识符。
我们计算了平均职业偏见分数,该分数衡量模型是否倾向于将特定性别与给定职业相关联。遵循Brown等人[9],职业偏见分数计算为:
在这里,分数为0表示特定职业与性别标识符之间没有偏见关联;正分数表示女性标识符与职业之间的偏斜关联;负分数表示男性标识符与职业之间的偏斜关联。平均偏见分数提供了所有职业中男性和女性标识符概率的接近程度。我们的模型表现出平均偏见分数为-0.77,表明模型在更多职业上倾向于男性标识符。
为了给这些结果提供一些背景,我们注意到对于GPT-3,男性标识符概率高于女性标识符的职业比例为83%,平均偏见分数为-1.11[9]。我们应该注意到,由于职业数量和使用的模板类型不同,这些结果与我们的结果不能直接比较,但确实表明该模型并不比在类似语料库上以类似方式训练的其他模型更具偏见或更少偏见。这也表明,在考虑使用该模型时,必须做更多的工作来控制这种偏见。
5.3 形容词共现分析
接下来,我们分析与性别、种族和宗教相关的提示中共同出现的形容词。类似于Brown等人[9]的设置,对于每个提示,我们生成了800个长度为50的生成样本。每个生成的样本温度为1.0,_top-p_值为0.9。我们使用Sheng等人[62]中提供的_respect_模板来创建我们的提示。对于性别和种族,提示创建为“[性别/种族标识符]模板”。示例提示包括“The woman was regarded as”和“The Black person would be described as”。用于创建提示的标识符和模板在表7中提供。
我们将生成的文本拆分为句子,并仅考虑第一句进行分析,因为观察到只有第一句是对给定标识符的描述性内容(而后续句子通常描述随机事件或故事)。我们分析了与每个性别和种族标识符共同出现的最频繁的100个形容词。
一般来说,共现分析有两个重要因素需要考虑:
-
不同词的顺序位置。较高的位置/较低的频率是好的,因为它表明与特定刻板印象或冒犯性形容词相关的偏见强度较低,即使形容词本身具有高度冒犯性。
-
刻板印象或冒犯性内容的强度。一些形容词相对中性,而另一些则具有强烈的冒犯性。
我们想指出的是,虽然共现分析为我们提供了与某些标识符共同出现的表面形式(如单词)的丰富理解,但它们未能考虑到每个形容词的情感或上下文。
性别分析: 令人鼓舞的是,我们注意到,对于性别,在前100个最频繁的形容词中,几乎80个是完全相同的,如图3所示。在图中,单词从左到右按概率排序;如果一个单词在两种性别的top 100中,则用蓝线连接。一般来说,模型使用了相同的单词集,但有一些显著的例外,我们在绿色中突出显示。
为了突出模型的偏见,我们还展示了每个性别中最具独特性且频率最高的10个单词(但强调这隐藏了之前讨论的非偏见)。表8展示了与一种性别相比,另一种性别中共同出现频率更高的最具独特性的单词。我们观察到,模型符合训练数据中存在的性别刻板印象,例如对女性标识符使用更多与外貌相关的形容词,而对男性标识符使用更多样化的形容词。另一方面,从质量上看,刻板印象的独特性形容词的顺序位置相对较高(频率较低),这是一个好的特性。
种族分析: 对于种族,相同的形容词共现分析结果如表9所示。我们定性地观察到,更多积极的形容词与白人种族相关联,而许多相当冒犯的形容词与其他种族相关联。我们注意到,模型还描绘了与每个种族相关的冒犯性刻板印象。此外,更重要的是,我们观察到独特性形容词的顺序位置比性别情况更高。
这些结果显然不适合部署,并证实了我们的直觉,即NLP模型应需要如本节开头所述的反偏见措施。我们期待在应用此类措施后重复这些测试,并验证结果的可量化改进。
宗教分析: 对于宗教,我们进行了与性别和种族类似的共现单词分析。用于宗教的三个提示是“The {religious_practitioners} are”、“The {religious_practitioners} were”和“The {religious_practitioners} were known for”。我们使用了六个宗教标识符:atheism、Buddhism、Christianity、Hinduism、Islam_和_Judaism。结果如表10所示。我们观察到,与宗教标识符共同出现的单词通常与宗教的刻板印象相关联。例如,与佛教相关的单词包括“compassion”和“mindfulness”,而与伊斯兰教相关的单词包括“hijab”和“modesty”。
5.4 情感分析
我们使用情感分析作为衡量偏见的另一种方法。我们选择将重点放在种族上,因为种族在形容词共现分析部分中显示出最强的偏见问题。
我们通过分析所有共同出现单词的情感来应用此方法。对于生成文本中的每个单词,我们使用SentiWordNet [51]来衡量其正面和负面分数,分数范围为0到100。我们对生成文本中所有单词的这些分数进行平均。图4显示了每个种族的平均情感分数。
我们观察到,对于黑人种族,负面情感单词共同出现的比例显著较高,而正面情感单词共同出现的比例较低,与其他种族相比。亚洲人和白人的情感分数更为接近。显然,结果中表现出的情感偏见也非常严重,验证了在自然语言训练中需要反偏见措施的必要性。
5.5 讨论
像MT-NLG这样的大型NLP模型已经展示了吸收大量非结构化信息并使其易于访问的强大能力。然而,它们也被证明存在吸收嵌入在它们学习信息中的偏见的问题。
我们在此节中检查了我们模型中的偏见,该模型在没有任何反偏见措施的情况下训练。基于之前工作的结果,我们预计会发现模型中存在显著偏见的证据,这一预期在我们的结果中得到了证实,有几个普遍、强烈和冒犯性的偏见实例。没有适当反偏见措施训练的模型不应按原样部署(即没有反偏见措施),正是出于这个原因。
6. 自然语言理解和上下文学习
为了尽可能直接地评估大型基于Transformer的语言模型的核心语言理解能力,我们必须评估它们掌握语言系统性的能力:换句话说,它们学习人类在概括到任意多、前所未有的表达时有意或无意依赖的隐含语法和句法规则的能力。在本节中,我们尝试使用HANS数据集进行此评估,但首先讨论其他NLP基准的局限性。
6.1 NLP基准的局限性
基于Transformer架构的预训练语言模型在过去几年中主导了NLP的最先进技术,在广泛的下游任务中取得了令人印象深刻的性能。在某些任务中,如自然语言推理,它们甚至被证明超过了人类水平的表现[54]。然而,最近的工作中有越来越多的证据表明,这些模型在基准数据集上的性能可能被高估,不可推广,并且至少部分由利用训练数据集中现有的虚假相关性驱动[21, 22, 40, 47, 75]。大型Transformer模型可能无法很好地推广到分布之外的原因可以归因于两个因素的结合:一方面,它们巨大的学习能力,另一方面,下游任务训练集分布的狭窄性,这与这些数据集是如何挖掘或众包的有关。这些模型的表达能力使它们能够在微调期间轻松发现和利用这些数据集中的虚假相关性,从而导致令人印象深刻的性能指标,然而,这些指标并不一定反映它们实际的自然语言理解能力。
Brown等人[9]提出,少样本学习是一种更准确地评估大型语言模型的方法,同时也能克服在狭窄分布上过拟合的问题;这是因为在解决下游任务时没有参数更新,所有学习都“在上下文中”进行,完全基于提供的输入提示。这些特性似乎是少样本能力模型的显著优势,同时避免了创建任务特定数据集、随后微调和维护任务特定模型的便利性。因此,阐明这些特性在多大程度上成立非常重要。
6.2 评估语言系统性的掌握
HANS数据集[40]使我们能够评估语言模型在多大程度上能够一致地应用推断蕴含的规则,而不是依赖于表面启发式,如词汇重叠或前提和假设中存在共同子序列。为了专注于基本的语言解析,词汇故意选择得非常简单,所有单词在最常见的NLI数据集(如MNLI [73])中多次出现。除了真实标签(“蕴含”与“非蕴含”)外,数据集中的每个示例都标注了它旨在探测的30种不同语法/句法结构(称为“子案例”)中的一种。有关HANS数据集和特征示例的更多信息,请参见附录A。
6.3 影响上下文学习的因素
模型大小和训练量: 在图5中,我们展示了自然语言推理性能如何受到示例数量(即作为提示一部分呈现给模型的已解决示例数量)的影响;我们还展示了进一步自回归预训练的效果。我们首先观察到,HANS任务对大型语言模型来说似乎具有挑战性,尽管与当前标准的阅读理解、推理和推理基准数据集相比,这对人类来说是微不足道的。特别是,15亿参数的GPT-2无论呈现多少示例,其表现从未显著优于随机机会(对于平衡的二元分类任务为50%)。相比之下,我们发现我们的5300亿参数大型模型MT-NLG在很大程度上能够摆脱表面启发式,并成功利用句法规则进行推理。除了模型大小外,两个明显影响性能的重要因素是它经历的自回归预训练量(即它遇到的标记数量)以及提示示例(样本)的数量。
样本数量: 我们发现,首先向模型展示几个示例以理解如何解决任务至关重要;对于大多数模型检查点,当模型展示2个示例(2-shot)时,达到峰值准确性。我们发现,这种性能提升似乎是由最初的2个示例增加了模型预测两个期望答案标记“True”和“False”的概率驱动的,从0-shot时的平均70%增加到2-shot时的100%。我们还发现,最初的2个示例允许模型校准在0-shot时偏向于两个类别之一的强烈内在偏差,这可能源于模型训练的内容。
除了我们在第4节中展示的结果外,之前也有报道称,虽然大量示例在某些数据集中有帮助,但在许多情况下,情况恰恰相反[9]。在这里,我们观察到,只有最大且训练最好的模型才能从最初的几个示例之外的额外示例中受益。我们推测,额外的示例会通过分散自注意力机制对正在评估的示例的注意力来混淆较弱的模型,而在训练良好、高容量的模型中,自注意力仍然可以选择性地关注提示中最相关的样本以及正在评估的样本。
样本分布: 为了进一步阐明在什么情况下更多的示例会有帮助,我们在两种不同的设置中重复了评估:在第一种设置中,我们强制出现在少样本提示中的示例仅来自与正在评估的示例不同的子案例——这是“净化”设置。我们在图5和本文其他地方的所有HANS评估中都遵循此设置,除非另有说明。在第二种设置中,我们没有按子案例控制示例,因此,随着示例数量的增加,模型遇到与正在评估的示例相同子案例的示例的机会也在增加。事实上,我们观察到,当不过滤示例时,性能随着示例数量的增加而显著提高,而当示例类型与正在评估的示例不相似时,情况恰恰相反。因此,我们可以得出结论,示例的作用不仅仅是提供任务格式的指导。相反,就像微调一样,即使在上下文学习的情况下,用于指导模型的样本分布和在其上评估的样本分布也需要匹配,以获得最佳性能,因为我们观察到模型在与提示中暴露的样本分布相同的样本上表现明显更好。这作为第一个证据表明,上下文学习并不能自动解决“过拟合”狭窄分布的问题,我们预计这种效果在其他NLP数据集中也会成立,在这些数据集中,作为提示示例的样本类型/分布要么无法明确控制,要么尚未被检查。同时,图5似乎暗示,更大的模型规模结合更多的预训练可以提高依赖上下文学习的模型的泛化能力,因为这样的模型(特别是2700亿标记的MT-NLG检查点)即使从与评估样本分布不那么严格匹配的提示示例中也能受益。
示例标签和标签顺序: 此外,我们发现与提示中包含的示例集的组成相关的其他因素显著影响性能,其方式等同于传统的参数训练过程。例如,示例的顺序起着重要作用,我们发现示例样本应相对于其类别标签进行打乱或交错,以最大化性能。更重要的是,示例集相对于类别标签的组成,即“正”与“负”标签的比例,似乎极大地影响了正在评估的示例的预测概率:少量的“正”示例导致预测任何正在检查的样本为“正”(在我们的数据集中为“非蕴含”)的概率显著降低,而随着“正”示例比例的增加,预测任何正在评估的示例为“正”标签的概率迅速增加。通过控制示例集中类别存在的比例引入的这种预测标签分布的变化,允许我们抵消模型中的内在偏差:例如,它允许我们将2-shot的准确性从70.2%提高到73%,当仅包括“负”示例时。此外,增加示例数量也深刻改变了类别预测分布的均值、方差和偏度,当与移动决策阈值结合时,它可以用于抵消模型的偏差,并显著提高准确性至78.6%。
克服推理偏差和依赖启发式: 最后,我们继续检查我们的模型在处理30种不同的语言“子案例”时的表现,例如被动语态,或解开关系从句。我们在附录的表12中展示了结果。尽管模型的强烈内在偏差最初使其非常容易受到词汇重叠、子序列和成分启发式的影响,但我们能够通过控制预测分布来显著提高模型的性能,通过增加示例数量,同时通过考虑无条件预测概率来差异性地移动分布均值。因此,最终可以确认,模型可以一致地“应用”(即在推理中考虑)许多人类认为对理解自然语言至关重要的语法/句法规则。令人鼓舞的是,模型难以处理的子案例大多与人类(尤其是新手说话者)通常会感到困惑的子案例相同(见表11和表12中的示例)。
6.4 评估总结
我们发现,非常大的预训练语言模型可以被证明“理解”(即考虑)提示中的语法和句法结构,从而利用语言的系统性来解决任务,而无需进行微调。这种基本的语言性能随着模型大小和预训练量的增加而增加。重要的是,它与NLP基准性能相称,表明尽管各个基准数据集存在局限性和虚假效应,但总体上确实与语言理解能力密切相关。
然而,我们也发现,这些模型默认情况下也依赖于表面启发式,如词汇重叠和前提与假设之间共享句子子序列的存在来进行推理。此外,它们可能对样本类别有强烈的内在偏差,并且对任务表述(格式)非常敏感。
重要的是,我们发现上下文学习似乎遵循与通过调整参数进行标准学习类似的原则:例如,示例的顺序很重要。更关键的是,示例的数据分布(无论是示例类型还是类别标签的比例)决定了评估样本的性能,只有在示例和评估分布匹配时才能获得最佳性能。因此,上下文学习不能被视为自动解决在狭窄分布上过拟合问题(即分布外泛化性能差)的方案。
综上所述,上述观察表明,在基于提示的设置中,需要特别努力才能从大型语言模型中引出正确的响应,并表明在使用通用、任务无关的生成模型来替代微调模型解决任务的目标方面,仍有很大的改进空间。
7. MT-NLG生成能力的定性示例
除了在基准数据集上的定量评估和分析外,我们还定性地检查了MT-NLG在新场景中的语言生成能力。令我们惊喜的是,MT-NLG在解决谜语、回答Jeopardy问题甚至生成代码方面表现出色。我们在下面展示了一些每个类别的示例。
谜语生成: 我们使用谜语来探测模型在模糊上下文中的推理能力,为了避免谜语出现在训练集中,我们自己设计了每个谜语。我们首先观察到,在谜语解答的上下文中,模型倾向于生成其对谜语每一行的解释以及答案。虽然并不总是完美,但这些解释大多数时候都很有道理。表13中展示了这样一个示例。对于足够模糊的谜语,MT-NLG不仅通过随机采样生成多个合理的替代答案,还可以生成与生成的答案相匹配的替代解释(表14)。
Jeopardy问题: 问答数据集[30, 25]通常提出具体和直接的问题来对模型进行基准测试。然而,我们也对模型如何利用其记忆的知识在猜测游戏设置中进行推理感兴趣,这需要一些对提示的推理。为此,我们从最近的Jeopardy!剧集中选取了几个问题,并让我们的模型生成答案。由于Jeopardy!问题采用反向问答格式,其中“问题”以答案的形式呈现,参赛者被要求选择匹配的问题,我们选择使用少样本设置来告知模型任务格式。MT-NLG可以生成相当合理的答案,并且在大多数情况下实际上得到了正确的答案。表15中展示了一些示例。
代码生成: 最近使用语言模型进行代码生成的发展表明,大规模预训练的LM已经显示出从预训练中生成代码的体面能力。为此,我们研究了MT-NLG的代码生成能力。我们提供了一些带有详细注释的函数签名,看看MT-NLG如何完成缺失函数的实现。我们观察到,MT-NLG能够一致地生成语法正确的代码,并且也能够为简单任务得出正确的实现。我们有时观察到,模型会生成一个使用另一个函数的答案,然后在当前函数完成后继续生成被调用的函数。表16中展示了一些这样的示例。
推断算术运算: 理解和使用数学运算是语言理解的另一个方面。之前的工作[9]已经证明,即使没有专门训练解决数学问题,强大的语言模型也可以以一定程度的准确性回答简单的算术问题,而不仅仅是随机猜测。然而,一些怀疑仍然存在,即模型是否确实对数学表达式有一些理解,或者它是否只是重复训练中遇到的示例。为此,我们设计了一个新任务,其中我们混淆表达式中的运算符符号,并检查我们的模型是否可以逆向工程算术运算。我们观察到,常见的运算如加法、减法、乘法和除法通常可以正确推断。表17中展示了一些此任务的示例。
自由生成写作辅助: 我们通过让模型帮助撰写本文的摘要部分,定性地检查了MT-NLG的自由生成能力。这是通过提示MT-NLG第1节的文本,然后逐句采样模型来完成的。对于每个句子,生成了多个候选,从中选择一个并在必要时进行编辑。我们重复此过程,直到摘要摘录看起来完整。
8. 相关工作
通过扩展模型和数据集大小来提高模型性能在近年来取得了巨大成功,特别是在自然语言处理领域。在当前大规模预训练范式盛行之前,已经有努力将LSTM模型[26]扩展到超过十亿参数。当使用Transformer架构进行大规模预训练变得流行时,这一趋势得以延续,BERT [12]扩展到3亿参数,随后是GPT-2 [52]的15亿参数。超过这一点的扩展需要更复杂的训练技术,但新系统软件、数据、模型和管道并行技术的快速发展使得另一波更大的模型成为可能。
一些先前的工作选择使用专家混合(MoE)[32, 35, 61]技术以更经济的方式扩展到更大的模型规模,生成在每个前向传递中选择性使用其参数子集的大规模模型。MoE允许在模型大小方面进行极端扩展,最近的工作达到了1.6、1.75甚至10万亿[5, 15, 36]参数。然而,与MT-NLG更相关的工作是单体、密集Transformer架构的扩展。GPT-2之后的工作产生了80亿[63]、110亿[54]和170亿[4]参数的密集Transformer模型,GPT-3 [9]的1750亿参数首次展示了这种规模的语言模型开始表现出在较小模型中缺失的零样本/少样本学习能力。自那时以来,已经宣布了其他数百亿规模的密集Transformer模型,其中包括Jurassic-1 [34]、Yuan 1.0 [74]、PanGu-α[78]和Gopher [53]。我们的工作进一步扩展了这一系列工作,将我们自己定位为迄今为止最大的单体Transformer语言模型,拥有5300亿参数,实现了前所未有的训练效率和模型质量。
最近也有工作专注于通过大规模多任务微调直接提高语言模型的零样本学习能力。T0 [59]和FLAN [70]都采取了这一路径,并表明这种方法可以提高语言模型的零样本学习能力。这种方法已被证明适用于预训练语言模型[70],观察到模型越大,从这种训练方法中提取的益处越多。我们希望我们在大规模预训练方面的突破与这些方法协同作用,并将在未来产生更好的模型。
9. 结论
在这项工作中,我们介绍了MT-NLG,一个拥有5300亿参数的从左到右、自回归、生成式的基于Transformer的语言模型,具有强大的上下文学习能力。MT-NLG在多个NLP基准测试中实现了卓越的零样本/单样本和少样本学习性能,建立了新的最先进结果。我们讨论了在这种规模下训练神经网络的挑战,并介绍了我们的3D并行策略以及使MT-NLG高效训练的硬件基础设施。大规模语言模型训练难以稳定,实验成本高昂,因此,我们详细记录了我们的训练配置和数据集,以促进未来的研究。最后但同样重要的是,我们分析了MT-NLG表现出的社会偏见,并检查了影响上下文学习的各种因素,提出了当前一代大型语言模型的某些局限性。我们相信,我们的结果和发现将有助于塑造和促进未来在基础、大规模预训练方面的研究。