最快BERT训练和最大Transformer模型 为实现实时会话AI铺平道路
2019-08-21 21:00
在人类与机器人、汽车、家居助手和移动应用程序等各类智能机器和应用程序进行人机交互的过程中,会话AI扮演着至关重要的角色。对于AI研究者们来说,如何让计算机准确地理解人类语言以及其中的细节,并做出适当的反应,是一项重要的课题。随着基于加速计算的现代AI技术的到来,构建具有真正自然语言处理(NLP)功能的系统也正在逐渐成为可能。
我们人类拥有强大的语言能力,在人与人的交流过程中,我们既能通过交流,传达细微的情感,也能表述我们所公认的通识认知。然而,对于AI来说,现在虽然已经有了很多种自然语言处理的方法,但是让AI完全达到与人类相当的语言能力依然是一个难以实现的目标。然而,随着诸如BERT(Bidirectional Encoder Representations from Transformer)和拥有10亿多参数的GPT-2(Generative Pretrained Transformer 2)的这类大量基于Transformer的语言模型的出现,高难度的语言理解任务也开始取得快速进展。
在本文中,我们将主要介绍NVIDIA目前在NLP网络方面的两大最新进展:BERT和GPT-2 8B。GPT-2 8B是一个具有83亿参数版本的GPT-2模型,也是有史以来训练的最大规模的Transformer网络。我们还将谈到NVIDIA最近所取得的GPU性能纪录,这些新纪录充分说明了,GPU作为出色的技术架构平台,非常适用于这些最先进的模型。
BERT引领新一代语言模型
BERT可针对多种NLP任务进行调优。它非常适用于语言理解任务,如翻译、问答、情感分析和句子分类。在SQuAD (用于问答评估)和GLUE (适用于多种任务中的通用语言理解)等常用基准测试中,BERT以及XLNet和RoBERTa等Transformer模型的测试结果甚至已经达到了超人类水平。
BERT的一项重要优势是无需使用标记数据进行预训练,其可使用任何纯文本进行学习。正是这一优势,为大规模数据集开启了大门,从而进一步提升了准确性。例如,BERT通常基于BooksCorpus(含有8亿词汇)和英文版维基百科(含有25亿词汇)中的海量内容进行预训练,总数据集中共有33亿词汇。
模型的复杂程度是Transformer网络的另一属性,能够提高NLP的准确性。通过对两种不同版本的BERT进行比较,我们发现了模型规模大小和性能之间的相关性:BERTBASE拥有1.1亿参数,而BERT-Large的参数为3.4亿,其GLUE得分平均提升了3%。预计这些模型规模的增长将持续提高语言准确性。
NVIDIA Tensor 核心 GPU
将BERT的训练缩短至一小时内
拥有92个DGX-2H节点的NVIDIA DGX SuperPOD在短短53分钟内就完成了BERT-Large的训练任务,创下新的纪录。NVIDIA DGX SuperPOD使用了1,472个 V100 SXM3-32GB 450W GPU,每节点配有8个Mellanox Infiniband计算适配器,同时采用自动混合精度(Automatic Mixed Precision)运行PyTorch以加速吞吐量。而对于只能访问单一节点的研究人员来说,使用搭载16个V100的DGX-2服务器,也可在3天内完成对BERT-Large的训练。下表显示了基于不同数量的GPU对BERT-Large进行训练所需的时间,其结果显示出了随着节点数增加而实现的高效扩展:
基于GPU的BERT-Large训练时间
基于DGX SuperPOD对BERT-Large进行训练时,相较于16个节点,使用64个节点进行训练,结果实现了88%的扩展效率。随着节点数的的增加,GPU性能还能得到持续扩展——当使用92个节点进行训练时,训练时长实现了创纪录的53分钟。
单一DGX-2H节点具有2 petaFLOPs的AI计算性能,可处理复杂的模型。BERT模型规模巨大,需要大量内存,每个DGX-2H节点可在运行时提供0.5TB的高带宽GPU内存,整个DGX SuperPOD集群的内存总计高达46TB。同时,借助于NVLink、NVSwitch和Mellanox Infiniband等NVIDIA互连技术还可实现高带宽通信,进而实现高效扩展。拥有巨大算力的GPU结合对大量DRAM的高带宽访问、以及快速互连技术,这样的组合使NVIDIA数据中心平台成为了能够大幅加速BERT等复杂网络的最佳选择。
GPT-2 8B:
史上最大Transformer语言模型
另一类基于Transformer的语言模型是用于生成式语言的建模。这些模型旨在预测并生成文本(例如,基于给定的文档首段写出后续文档)。最近,拥有15亿参数的GPT-2模型显示出,当使用比BERT所用数据集更大规模的未标记数据集,扩展至更大规模的生成式网络,能够打造出更先进的模型,进而生成连贯、有意义的文本。
模型复杂度呈爆炸式增长– 网络的参数数量
为了对那些高达数十亿的Transformer网络进行研究,NVIDIA Research还推出了Megatron项目,该项目旨在打造适用于最先进的NLP的Transformer模型。具有15亿参数GPT-2模型被扩展为更大规模的GPT-2 8B模型,GPT-2 8B是一个具有83亿参数的Transformer语言模型。该模型的训练采用原生PyTorch,基于512个GPU进行8路模型并行计算和64路数据并行计算。GPT-2 8B是有史以来最大规模的Transformer语言模型,是BERT的24倍,GPT-2的5.6倍。
这些实验是在NVIDIA的DGX SuperPOD上进行的,其采用的基准模型具有12亿参数,适用于单一V100 GPU。在单一GPU上运行此基线模型的端到端训练管线,可实现39 TeraFLOPS,这是该GPU的FLOPS理论峰值的30%。通过8路模型并行计算将模型扩展至512个GPU上的83亿参数,NVIDIA团队为整体应用程序实现了高达15.1 PetaFLOPS的持续性能,且与基准相比,其扩展效率达到了76%。
模型并行计算自然会意味着一些开销,与BERT相比扩展效率也会略受影响(BERT可在单一GPU上运行且无需任何模型并行计算)。下图显示了扩展结果:
计算性能和扩展效率
该GPT-2模型是基于37GB WebText数据集进行训练的,此数据集通过导出Reddit链接下载而来。下图显示了针对不同规模的模型,WebText验证困惑度(perplexity)随迭代次数变化而变化的函数曲线。我们通过经验了解到,较大规模的模型训练速度更快且结果更佳(验证复杂度相对较低)。
在wikitext-103数据集上评估该模型时,也会观察到类似的行为。与规模较小的模型相比,参数增加至83亿时,准确度会有显著提升,且维基文本困惑度(wikitext perplexity)达到了17.41。这超过了Transformer-xl在早前达到的维基文本测试数据结果。然而,规模最大的83亿参数模型在约六次迭代之后开始出现过度拟合的现象,而这种过度拟合通过转向更大规模的问题和数据集就能够得到缓解,这与近期发表的论文中所使用的XLNet和RoBERTa等类似。
各规模GPT-2模型的Webtext验证困惑度与迭代次数之间的关系
基于NVIDIA平台的未来式会话AI
对于BERT和GPT-2 8B 等Transformer语言网络来说,其巨大性能需求的背后推手正是其较高的复杂度以及基于大型数据集的预训练,如此一来就需要一个强大的计算平台来处理所有必要的计算,以确保在实现快速执行的同时能够保证准确性。事实上,这些模型可处理大量未标记的数据集,使之成为了现代NLP的创新中枢,且在不久的将来,其可通过扩展成为打造新一代会话AI智能助手的绝佳选择。
采用了Tensor 核心的NVIDIA计算平台具有可编程性,可全面加速包括Transformer模型在内的多元化现代AI。此外,DGX SuperPOD的数据中心级设计和优化再结合软件库和对领先AI框架的直接支持,为开发者提供了一个可无缝衔接的端到端平台,让他们能够应对最艰巨的NLP工作任务。
针对GPU在多重框架上加速BERT和Transformer训练的持续优化可通过NVIDIA NGC免费获取。
NVIDIA TensorRT包括针对在BERT和大型Transformer模型上运行实时推理的优化。当前NVIDIA BERT GitHub存储库中的代码能够重现本文中提及的单节点训练性能。不久的将来,存储库还将进行更新,以提供能够重现大规模训练性能所需的脚本。
我们人类拥有强大的语言能力,在人与人的交流过程中,我们既能通过交流,传达细微的情感,也能表述我们所公认的通识认知。然而,对于AI来说,现在虽然已经有了很多种自然语言处理的方法,但是让AI完全达到与人类相当的语言能力依然是一个难以实现的目标。然而,随着诸如BERT(Bidirectional Encoder Representations from Transformer)和拥有10亿多参数的GPT-2(Generative Pretrained Transformer 2)的这类大量基于Transformer的语言模型的出现,高难度的语言理解任务也开始取得快速进展。
在本文中,我们将主要介绍NVIDIA目前在NLP网络方面的两大最新进展:BERT和GPT-2 8B。GPT-2 8B是一个具有83亿参数版本的GPT-2模型,也是有史以来训练的最大规模的Transformer网络。我们还将谈到NVIDIA最近所取得的GPU性能纪录,这些新纪录充分说明了,GPU作为出色的技术架构平台,非常适用于这些最先进的模型。
BERT引领新一代语言模型
BERT可针对多种NLP任务进行调优。它非常适用于语言理解任务,如翻译、问答、情感分析和句子分类。在SQuAD (用于问答评估)和GLUE (适用于多种任务中的通用语言理解)等常用基准测试中,BERT以及XLNet和RoBERTa等Transformer模型的测试结果甚至已经达到了超人类水平。
BERT的一项重要优势是无需使用标记数据进行预训练,其可使用任何纯文本进行学习。正是这一优势,为大规模数据集开启了大门,从而进一步提升了准确性。例如,BERT通常基于BooksCorpus(含有8亿词汇)和英文版维基百科(含有25亿词汇)中的海量内容进行预训练,总数据集中共有33亿词汇。
模型的复杂程度是Transformer网络的另一属性,能够提高NLP的准确性。通过对两种不同版本的BERT进行比较,我们发现了模型规模大小和性能之间的相关性:BERTBASE拥有1.1亿参数,而BERT-Large的参数为3.4亿,其GLUE得分平均提升了3%。预计这些模型规模的增长将持续提高语言准确性。
NVIDIA Tensor 核心 GPU
将BERT的训练缩短至一小时内
拥有92个DGX-2H节点的NVIDIA DGX SuperPOD在短短53分钟内就完成了BERT-Large的训练任务,创下新的纪录。NVIDIA DGX SuperPOD使用了1,472个 V100 SXM3-32GB 450W GPU,每节点配有8个Mellanox Infiniband计算适配器,同时采用自动混合精度(Automatic Mixed Precision)运行PyTorch以加速吞吐量。而对于只能访问单一节点的研究人员来说,使用搭载16个V100的DGX-2服务器,也可在3天内完成对BERT-Large的训练。下表显示了基于不同数量的GPU对BERT-Large进行训练所需的时间,其结果显示出了随着节点数增加而实现的高效扩展:
基于GPU的BERT-Large训练时间
基于DGX SuperPOD对BERT-Large进行训练时,相较于16个节点,使用64个节点进行训练,结果实现了88%的扩展效率。随着节点数的的增加,GPU性能还能得到持续扩展——当使用92个节点进行训练时,训练时长实现了创纪录的53分钟。
单一DGX-2H节点具有2 petaFLOPs的AI计算性能,可处理复杂的模型。BERT模型规模巨大,需要大量内存,每个DGX-2H节点可在运行时提供0.5TB的高带宽GPU内存,整个DGX SuperPOD集群的内存总计高达46TB。同时,借助于NVLink、NVSwitch和Mellanox Infiniband等NVIDIA互连技术还可实现高带宽通信,进而实现高效扩展。拥有巨大算力的GPU结合对大量DRAM的高带宽访问、以及快速互连技术,这样的组合使NVIDIA数据中心平台成为了能够大幅加速BERT等复杂网络的最佳选择。
GPT-2 8B:
史上最大Transformer语言模型
另一类基于Transformer的语言模型是用于生成式语言的建模。这些模型旨在预测并生成文本(例如,基于给定的文档首段写出后续文档)。最近,拥有15亿参数的GPT-2模型显示出,当使用比BERT所用数据集更大规模的未标记数据集,扩展至更大规模的生成式网络,能够打造出更先进的模型,进而生成连贯、有意义的文本。
模型复杂度呈爆炸式增长– 网络的参数数量
为了对那些高达数十亿的Transformer网络进行研究,NVIDIA Research还推出了Megatron项目,该项目旨在打造适用于最先进的NLP的Transformer模型。具有15亿参数GPT-2模型被扩展为更大规模的GPT-2 8B模型,GPT-2 8B是一个具有83亿参数的Transformer语言模型。该模型的训练采用原生PyTorch,基于512个GPU进行8路模型并行计算和64路数据并行计算。GPT-2 8B是有史以来最大规模的Transformer语言模型,是BERT的24倍,GPT-2的5.6倍。
这些实验是在NVIDIA的DGX SuperPOD上进行的,其采用的基准模型具有12亿参数,适用于单一V100 GPU。在单一GPU上运行此基线模型的端到端训练管线,可实现39 TeraFLOPS,这是该GPU的FLOPS理论峰值的30%。通过8路模型并行计算将模型扩展至512个GPU上的83亿参数,NVIDIA团队为整体应用程序实现了高达15.1 PetaFLOPS的持续性能,且与基准相比,其扩展效率达到了76%。
模型并行计算自然会意味着一些开销,与BERT相比扩展效率也会略受影响(BERT可在单一GPU上运行且无需任何模型并行计算)。下图显示了扩展结果:
计算性能和扩展效率
该GPT-2模型是基于37GB WebText数据集进行训练的,此数据集通过导出Reddit链接下载而来。下图显示了针对不同规模的模型,WebText验证困惑度(perplexity)随迭代次数变化而变化的函数曲线。我们通过经验了解到,较大规模的模型训练速度更快且结果更佳(验证复杂度相对较低)。
在wikitext-103数据集上评估该模型时,也会观察到类似的行为。与规模较小的模型相比,参数增加至83亿时,准确度会有显著提升,且维基文本困惑度(wikitext perplexity)达到了17.41。这超过了Transformer-xl在早前达到的维基文本测试数据结果。然而,规模最大的83亿参数模型在约六次迭代之后开始出现过度拟合的现象,而这种过度拟合通过转向更大规模的问题和数据集就能够得到缓解,这与近期发表的论文中所使用的XLNet和RoBERTa等类似。
各规模GPT-2模型的Webtext验证困惑度与迭代次数之间的关系
基于NVIDIA平台的未来式会话AI
对于BERT和GPT-2 8B 等Transformer语言网络来说,其巨大性能需求的背后推手正是其较高的复杂度以及基于大型数据集的预训练,如此一来就需要一个强大的计算平台来处理所有必要的计算,以确保在实现快速执行的同时能够保证准确性。事实上,这些模型可处理大量未标记的数据集,使之成为了现代NLP的创新中枢,且在不久的将来,其可通过扩展成为打造新一代会话AI智能助手的绝佳选择。
采用了Tensor 核心的NVIDIA计算平台具有可编程性,可全面加速包括Transformer模型在内的多元化现代AI。此外,DGX SuperPOD的数据中心级设计和优化再结合软件库和对领先AI框架的直接支持,为开发者提供了一个可无缝衔接的端到端平台,让他们能够应对最艰巨的NLP工作任务。
针对GPU在多重框架上加速BERT和Transformer训练的持续优化可通过NVIDIA NGC免费获取。
NVIDIA TensorRT包括针对在BERT和大型Transformer模型上运行实时推理的优化。当前NVIDIA BERT GitHub存储库中的代码能够重现本文中提及的单节点训练性能。不久的将来,存储库还将进行更新,以提供能够重现大规模训练性能所需的脚本。