英伟达83亿参数打造史上最大语言模型MegatronLM,1小时成功训练BERT

  • 时间:
  • 浏览:2
  • 来源:5分PK10投注平台-5分PK10娱乐平台_5分PK10下注平台

世界上最大的语言模型来了,顺便还破了个记录!英伟达提前大选,目前原困分析训练出了世界上最大的语言模型——MegatronLM。你這個 模型有多大?83亿个参数!比谷歌的 BERT 大24倍,比 OpenAI 的 GPT-2 大5.6倍!不仅不难 ,英伟达还提前大选打破了实时对话 AI 的记录——耗时53分钟就都都要训练出行业标准的BERT模型、2毫秒左右就能对答案做出推断。AI硬(he)件(dan)厂商英伟达今天提前大选,或多或少人在NLP模型上取得了三大突破,为今有的是话AI的落地应用铺平了道路。

英伟达用当时人的硬件与并行计算软件相结合,在BERT模型的训练和推理上创下三项世界纪录:

1.最快的BERT训练传输传输速率,只需53分钟

2.最快的BERT推理传输传输速率,只需2.2ms

3.最大的BERT模型,带有83亿参数

今年以来,NLP领域的“军备竞赛”不难 激烈。基于Transformer架构的模型,如谷歌的XLNet和Facebook的RoBERTa,在GLUE、SQuAD什么基准测试榜单头名争夺中你方唱罢我登场。

两大公司为了刷榜的消耗了少许的时间和计算资源。为了提高BERT的训练传输传输速率,谷歌堆上了1024块TPU,用76分钟训练出了BERT模型。Facebook用上了102有有哪十几个 多英伟达V60 GPU。

英伟达太少太少甘示弱,用147有有哪十几个 多V60 GPU首次实现在有有哪十几个 多小时之内训练完BERT模型。

英伟达表示,这项研究太少再 帮助企业使用实有的是话AI更自然地与客户互动,帮助开发人员将最先进的NLP模型大规模部署在应用进程中。

最大的BERT模型

英伟达使用了9有有哪十几个 多DGX-2H节点、1,47有有哪十几个 多V60 GPU的DGX SuperPOD系统来训练BERT模型,将BERT-Large训练时间从几天缩短到到53分钟。

原困分析你虽然中间的堆硬件太过暴力,英伟达也给出更低配置下的训练传输传输速率。或多或少人在“非要”16个V60 GPU的NVIDIA DGX-2用2.8天内训练了BERT-Large,展示了英伟达GPU对于会话AI的可扩展性。

考虑到开发人员对大型NLP模型不断增长的需求,英伟达建立并训练了世界上最大的基于Transformer的语言模型GPT-2 8B,它具有83亿个参数,是BERT-Large的24倍、GPT-2的5.6倍。

GPT-2 8B模型使用原生PyTorch进行训练,在512 GPU上有8路模型并行和的64路数据并行。实验是在DGX SuperPOD上进行的,其基准模型为12亿个参数,适用于单个V60 GPU。在单个GPU上运行此基线模型的端到端训练pipeline可实现39 TeraFLOPS的算力,这是V60 GPU的理论峰值算力的60 %。

通过8路并行模型将模型扩展到51有有哪十几个 多GPU上的83亿个参数,NVIDIA团队在整个应用进程中实现了高达15.1 PetaFLOPS的持续性能,或者 与基线相比达到了76%的扩展传输传输速率。

为了研究什么几十亿参数的Transformer(变形金刚)网络,英伟达还开源了Megatron(威震天)项目。

最快的推理传输传输速率

中间的推理每种太过“烧钱”,而英伟达在BERT推理上取得的进步都都要让普通开发者太少再 用上。原困分析现在或多或少实时外理的任务也但是但是结束了了用上了Transformer,比如语音合成(TTS)、语音识别(ASR)。

或者 Transformer在什么落地化场景中却遇到了困难。这是原困分析在推理部署阶段,计算性能会面临巨大的挑战。以BERT为原型的多层Transformer模型,其性能常常难以满足在线业务对于低延迟和高吞吐的要求。

于是,英伟达提出了Faster Transformer,并在GitHub上开源了代码。

Faster Transformer是有有哪十几个 多BERT Transformer单层前向计算的高效实现,代码简洁,后续都都要通过简单修改支持多种Transformer价值形式。

目前优化集中在编码器(encoder)的前向计算。底层由CUDA和cuBLAS实现,支持FP16和FP32有一种计算模式,其中FP16都都要充分利用Volta和Turing架构GPU上的张量核心单元。

英伟达使用运行TensorRT的T4 GPU,仅在2.2毫秒内就对BERT-Base SQuAD数据集进行了推理,远低于或多或少实时应用的10毫秒外理阈值。

英伟达测试了不同生产环境下Faster Transformer前向计算的执行时间以及与TensorFlow XLA的性能比较。

在小batch size清况 下,12层Transformer在P4和T4上的性能表现如下:

固定一句话长度为32,标准模型和裁剪模型在不同batch size下,12层Transformer在V60 上实现了2倍的传输传输速率提升:

为了实现你這個 壮举,英伟达利用模型的并行性,将有有哪十几个 多神经网络分割成多个每种,创建了因数据太少无法容纳在单个GPU的训练模型。

最重要的是,代码已开源!

GitHub项目地址:https://github.com/NVIDIA/Megatron-LM

MegatronLM,堪称 NLP 界的“威震天”!

有钱任性:训练史上最大语言模型都要哪十几个 GPU?

更大的语言模型对于诸如文章完成、难题图片回答和对话系统等NLP任务非常有用。最近,训练最大的神经语言模型原困分析成为提高NLP应用水平的最佳法律法律法子。

最近的两篇论文,BERT和GPT-2,展示了大规模语言建模的好处。这两篇论文都利用了计算机和可用文本语料库的进步,在自然语言理解、建模与生成方面显著超越了当前的最优水平。

训练什么模型都要数以百计exaflops级的计算力和巧妙的内存管理,以换取减少内存占用的重新计算。然而,对于超过10亿参数的超大型的模型,单个GPU上的内存严重不足以匹配模型以及训练所需的参数,都要利用模型并行性来将参数分割到多个GPU上。有几种建模并行性的法律法律法子,或者 它们不难 使用,原困分析它们依赖于自定义编译器,原困分析扩展性很差,原困分析都要对优化器进行更改。

在这项工作中,或多或少人通过对现有PyTorch transformer实现进行少许有针对性的修改,实现了有一种简单而有效的模型并行法律法律法子。或多或少人的代码是用原生Python编写的,利用混合精度训练,并利用NCCL库在GPU之间进行通信。

或多或少人通过在51有有哪十几个 多GPU上训练有有哪十几个 多transformer语言模型证明了你這個 法律法律法子的有效性,该模型具有8路模型并行性和64路数据并行性,83亿参数,使其成为有史以来规模最大的基于transformer的语言模型,其大小为BERT的24倍,GPT-2的5.6倍。或多或少人原困分析在GitHub存储库中发布了实现此法律法律法子的代码。

或多或少人的实验是在英伟达的DGX SuperPOD上进行的。在不难 模型并行性的清况 下,或多或少人都都要在单个V60 32GB GPU上训练有有哪十几个 多12亿参数的基线模型,并在整个训练过程中保持39 TeraFLOPS,这是DGX2-H服务器上单个GPU理论峰值的60 %。

或多或少人将模型参数扩展到83亿,使用51有有哪十几个 多GPU,通过8路模型并行化,在整个应用进程中或多或少人实现了高达15.1 PetaFLOPS的持续性能,与单GPU相比,扩展传输传输速率达到76%。图1显示了扩展的结果。

图1:模型并行(蓝绿色):多达8路模型并行弱扩展,每个GPU大约有10亿个参数(之类有有哪十几个 多GPU有20亿参数,有有哪十几个 多GPU有40亿参数)。模型+数据并行(绿色):之类于模型并行的64路数据并行的配置。

多GPU并行性

训练模型的典型范例是利用 weak scaling 法律法律法子和分布式数据并行性,根据GPU的数量来扩展训练批大小。你這個 法律法律法子允许模型在更大的数据集上进行训练,但有有哪十几个 多多约束,即所有参数都要适合有有哪十几个 多GPU。

模型并行训练都都要通过跨多个GPU划分模型来克服你這個 限制。近年来出先了哪十几个 通用模型并行框架,如GPipe和Mesh-TensorFlow。gPipe在不同的外理器上划分层组,而Mesh-TensorFlow使用层内模型并行性。或多或少人的法律法律法子在概念上之类于Mesh-TensorFlow,或多或少人关注层内并行性并融合GEMM以减少同步。然而,或多或少人只对现有PyTorch transformer实现进行了或多或少有针对性的修改,以便使用模型并行性来训练大型transformers。或多或少人的法律法律法子很简单,不都要任何新的编译器或代码重新连接来实现模型并行性,或者 都都要通过插入或多或少简单的primitives(图2中的f和g 算子)删改实现。

或多或少人利用 transformer网络的价值形式,通过再加或多或少同步primitives来创建有有哪十几个 多简单的模型并行实现。

transformer层由有有哪十几个 多self attention block和有有哪十几个 多2层的多层感知器(MLP)组成。或多或少人分别在你這個 个多多模块中引入模型并行性。

如图2a所示,这是MLP的价值形式,由有有哪十几个 多GEMM组成,中间有有哪十几个 多多GeLU非线性,中间有有哪十几个 多多dropout层。或多或少人以列并行法律法律法子划分第有有哪十几个 多GEMM。这使得GeLU 非线性都都要独立地应用于每个分块GEMM的输出。模块中的第五个GEMM沿着行并行化,直接获取GeLU层的输出,不都要任何通信。或者 ,在将输出传递到dropout层还会 ,跨GPU减少第五个GEMM的输出。你這個 法律法律法子将MLP block中的GEMM跨GPU分割了,只都要在正向传递(g算子)中执行有有哪十几个 多all-reduce操作,在反向传递(f算子)中执行有有哪十几个 多all-reduce操作。

图2:(a): MLP, (b):transformer的self attention block。

如图2(b)所示,在self attention block上,或多或少人利用multihead attention操作中的固有并行性,以列并行法律法律法子划分与键(K),查询(Q)和值(V)相关联的 GEMM。

这使得或多或少人都都要在GPU之间分割每个attention head参数和工作负载,或者 不都要任何即时通信来完成self attention。

你這個 法律法律法子对于MLP和self-attention层都融合了有有哪十几个 多GEMM的组,消除了中间的同步点,并获得了更好的scaling性能。这使或多或少人太少再 在有有哪十几个 多简单的transformer层中执行所有GEMM,只使用前向路径的有有哪十几个 多all reduce和后向路径的有有哪十几个 多all reduce,如图3所示。

图3:GPT-2 transformer层的模型并行性。

你這個 法律法律法子实现起来很简单,原困分析它只都要在向前和向后传递中再加或多或少额外的all-reduce操作。它不都要编译器,或者 与gPipe等法律法律法子提倡的那种pipeline模型并行性是正交的。

性能

为了测试或多或少人的实现的计算性能,或多或少人考虑了表1中四组参数的GPT-2模型。

表1:用于scaling 研究的参数。

所有的实验有的是在NVIDIA的DGX SuperPOD上进行的,或多或少人使用了多达32台DGX- 2h服务器(总共51有有哪十几个 多Tesla V60 SXM3 32GB GPU)。该系统针对多节点厚度学习应用进程进行了优化,服务器内部人员GPU之间的传输传输速率为60 GB/s,服务器之间的互连传输传输速率为60 GB/s。

图4显示了模型和模型+数据并行性的扩展值。或多或少人在你這個种设置中都观察到了出色的扩展数字。之类,8路(8 GPU)模型并行的83亿参数模型实现了77%的线性扩展。模型+数据并行性要求在反向传播步骤还会 进一步通信梯度,或者 扩展数略有下降。然而,即使是运行在51有有哪十几个 多GPU上的最大配置(83亿参数),相对于强大的基准单GPU配置(12亿个参数),或多或少人仍然都都要实现74%的扩展性。

图4:模型(左)和模型+数据(右)随着GPU的数量并行地进行weak scaling。

最后,或多或少人研究了attention heads对模型并行扩展的影响。为此,或多或少人考虑了83亿参数、具有8路模型并行性的参数配置,并将attention heads的数目从16个改为3有有哪十几个 多。结果如表2所示。随着attention heads数量的增加,self attention层中的或多或少GEMM变小,同時 softmax中的元素数量增加。这原困了轻微的scaling decrease。未来的研究在设计大型transformer模型时应该警惕你這個 超参数,平衡模型性能和模型传输传输速率。

表2:attention heads 数量对scaling的影响。

GPT-2训练

为了训练GPT-2模型,或多或少人创建了有有哪十几个 多从_Reddit_下载的37 GB _WebText_ dataset,它之类于原始GPT-2论文中描述的webtext数据集。数据集最终有840万 个url。或多或少人将WebText数据集随机分割为95:5的比例,分别得到训练集和验证集。或多或少人考虑了4种参数规模的模型:3.45亿、7.75亿、25亿和83亿。

图5:训练子集的验证困惑度。在对37GB数据集过拟合还会 ,8.3B模型提前停止了。

图5显示了验证的困惑度(perplexity)。或多或少人发现。最大的83亿参数的语言模型在——6epoch还会 但是但是结束了了overfit,有一种1 epoch被定义为1560 次迭代。或多或少人认为这都都要通过使用更大规模的数据集来缓解,之类于XLNet和RoBERTa等最近论文中使用的数据集。

GPT-2评估

为了分析大型语言模型的训练性能,或多或少人在wikitext-103数据集上计算了perplexity,在Lambada数据集上计算了closize风格的预测精度。

正如预期的一样,wikitext perplexity随着模型尺寸的增大而减小,lambada准确率随着模型尺寸的增大而增加(表3)。

表3:wikitext perplexity(越低越好)和Lambada完形精度(越高越好)的评估结果。

结论

在这项工作中,或多或少人在现有的厚度学习硬件、软件和模型的基础上,构建了世界上最大的基于transformer的语言模型。

在此过程中,或多或少人成功地突破了传统的单GPU训练的限制,实现了有一种简单而高效的模型并行法律法律法子,只需对现有PyTorch transformer实现进行少许有针对性的修改。

或多或少人在512台NVIDIA V60 GPU上高效地训练了83亿参数的语言模型(分别比BERT和GPT-2大24倍和5.6倍),具有8路模型并行性,并在整个应用进程中实现了高达15.1千万亿次浮点运算(PetaFLOPS)。

或多或少人发现,与较小的transformer模型相比,更大的transformer模型都都要在相同的时间内进行训练,或者 都都要显著提高性能。

然而,正如或多或少人在工作中所展示的,NLP仍然都要大约的数据集、难题图片和技术来正确地训练什么大型语言模型,或者 会出先过拟合。

或多或少人将或多或少人的工作开源,以便社区就都都要群克隆并扩展它们。

英伟达官方GitHub项目已开源!

英伟达在官方GitHub上对MegatronLM开源了代码,也提供了相应的教程。

项目地址:https://github.com/NVIDIA/Megatron-LM

安装

官方只支持 Python 3.6。请安装支持GPU的最新版本PyTorch。

此外,代码库的一每种利用tensorflow-cpu(可选)执行TFRecords的数据加载以进行BERT训练。

建议要么使用./docker/中提供的Dockerfile,要么创建有有哪十几个 多虚拟环境(以外理破坏现有的tf安装)并安装requirements.txt。

用法

提供了五个预训练BERT的脚本和五个预训练GPT2的脚本。使用 --save 和 --load 保存并加载模型检查点(checkpoint)。

此外,还提供 GPT2 脚本,用于在wiki文本和LAMBADA上生成GPT2的交互式文本生成和零样本(zero shot)评估。

BERT预训练

此脚本运行单个gpu BERT预训练,主要用于调试目的。优化参数设置为64路分布式训练。

要使用此脚本,请 --train-data以loose json格式放置,每行有有哪十几个 多json。json字典的文本字段应该对应于 --text-key。

GPT2 预训练

此脚本运行单gpu gpt2预训练,主要用于调试目的。优化参数设置为64路分布式训练。

它与前有有哪十几个 多脚本格式大致相同,但有或多或少值得注意的差异:

--tokenizer-type已切换为GPT2BPETokenizer;

--lr-decay-style已切换为cosine decay等等。

另外,GPT2使用来自BERT的不同参数初始化,用于训练厚度残差网络。要使用此初始化来训练BERT,请使用--deep-init。

更多细节内容,读者可前往官方GitHub浏览:https://github.com/NVIDIA/Megatron-LM

Megatron开源地址:https://github.com/NVIDIA/Megatron-LM

Faster Transformer开源地址:https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer

文章来源:新智元