AI硬(he)件(dan)厂商英伟达今天宣布,他们在NLP模型上取得了三大突破,为今后会话AI的落地应用铺平了道路。
英伟达用自己的硬件与并行计算软件相结合,在BERT模型的训练和推理上创下三项世界纪录:
最快的BERT训练速度,只需53分钟
最快的BERT推理速度,只需2.2ms
最大的BERT模型,包含83亿参数
今年以来,NLP领域的“军备竞赛”越来越激烈。基于Transformer架构的模型,如谷歌的XLNet和Facebook的RoBERTa,在GLUE、SQuAD这些基准测试榜单头名争夺中你方唱罢我登场。
两大公司为了刷榜的消耗了大量的时间和计算资源。为了提高BERT的训练速度,谷歌堆上了1024块TPU,用76分钟训练出了BERT模型。Facebook用上了1024个英伟达V100 GPU。
英伟达也不甘示弱,用1472个V100 GPU首次实现在一个小时之内训练完BERT模型。
英伟达表示,这项研究能够帮助企业使用实时会话AI更自然地与客户互动,帮助开发人员将最先进的NLP模型大规模部署在应用程序中。
最大的BERT模型
英伟达使用了92个DGX-2H节点、1,472个V100 GPU的DGX SuperPOD系统来训练BERT模型,将BERT-Large训练时间从几天缩短到到53分钟。
如果你觉得上面的堆硬件太过暴力,英伟达也给出更低配置下的训练速度。他们在“只有”16个V100 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亿个参数,适用于单个V100 GPU。在单个GPU上运行此基线模型的端到端训练pipeline可实现39 TeraFLOPS的算力,这是V100 GPU的理论峰值算力的30%。
通过8路并行模型将模型扩展到512个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在V100上实现了2倍的速度提升:
领取专属 10元无门槛券
私享最新 技术干货