您现在的位置:中国传动网  >  新闻首页  >  技术前沿  >  揭秘英伟达GPU在深度学习取得突破背后的技术细节

揭秘英伟达GPU在深度学习取得突破背后的技术细节

2018年05月21日 11:56:38 中国传动网

【揭秘英伟达GPU在深度学习取得突破背后的技术细节】2017年5月,在GTC2017上,英伟达CEO黄仁勋发布Volta架构TeslaV100,它被称为史上最快GPU加速器。2018年3月,同样也是在GTC上,黄仁勋发布「全球最大的GPU」——DGX-2,搭载16块V100GPU,速度达到2petaflops。

近年来,英伟达在高速计算之路上越走越快。日前,英伟达DeveloperBlog上一篇博文详细陈述了英伟达VoltaTensorCoreGPU在深度学习社群取得的巨大突破,以及种种突破背后的技术细节。正文如下:

由深度学习驱动的人工智能现在解决了曾一度被认为不可能的挑战,比如让计算机理解自然语言、进行对话以及自动驾驶。既然深度学习能如此有效地解决一系列挑战,随着算法复杂度呈现指数级增长,我们是否能将计算变得更快呢?基于此,英伟达设计了VoltaTensorCore架构。

为了更快地计算,英伟达与许多公司以及研究人员一样,一直在开发计算的软件和硬件平台。Google是个典型的例子——他们的研究团队创建了TPU(张量处理单元)加速器,当利用TPU进行加速时,在训练神经网络时可以达到优异的性能。

这篇文章中,我们分享了英伟达实现GPU巨大的性能提升后,在AI社群中取得的一些进步:我们已经在单芯片和单服务器上创造了ResNet-50的训练速度记录。最近,fast.ai也宣布了他们利用英伟达VoltaTensorCoreGPU在单个云实例上的创纪录表现。

以下是我们的结果:

在训练ResNet-50时,一个V100TensorCoreGPU的处理速度能达到1075张图像/秒,与上一代PascalGPU相比,它的性能提高了4倍。

一个由8个TensorCoreV100驱动的DGX-1服务器的处理速度能达到7850张图像/秒,几乎是去年在同一系统上处理速度(4200张图像/秒)的两倍。

一个由8个TensorCoreV100驱动的AWSP3云实例可以在不到3小时内完成ResNet-50的训练,比TPU实例快3倍。

图1:VoltaTensorCoreGPU在训练ResNet-50时所取得的速度突破

英伟达GPU在对算法进行大规模并行处理时效果极好,因此它极其适合用于深度学习。我们一直都没有停止探索的脚步,TensorCoreGPU是我们利用多年的经验和与世界各地的人工智能研究人员的密切合作,为深度学习模型创造的一种新的架构。

结合高速NVLink互连以及在当前所有框架内的深度优化,我们获得了最先进的性能。英伟达CUDAGPU的可编程性在这里也非常重要。

V100TensorCore打破了单处理器的最快处理速度记录

英伟达VoltaGPU中引入了TensorCoreGPU架构,这是英伟达深度学习平台的巨大进步。这种新硬件能加速矩阵乘法和卷积计算,这些计算在训练神经网络时占总计算的很大一部分。

英伟达TensorCoreGPU架构能够提供比功能单一的ASIC更高的性能,在不同工作负载下仍然具备可编程性。例如,每一个TeslaV100TensorCoreGPU用于深度学习可以达到125teraflop的运算速度,而GoogleTPU芯片只能达到45teraflop。包含4个TPU芯片的「CloudTPU」可以达到125teraflop,相比之下,4个V100芯片可以达到500teraflop。

我们的CUDA平台使每一个深度学习框架都能充分利用TensorCoreGPU的全部能力,加速诸如CNN、RNN、GAN、RL等各类神经网络,以及基于这些网络每年出现的成千上万个变种。

接下来是对TensorCore架构的更深入讲解,大家可以在这里看到它独特的功能。图2显示了TensorCore计算张量的过程,虽然存储是在低精度的FP16中,但是用精度更高的FP32来进行计算,可以在维持精度时最大化吞吐量。

图2:VoltaTensorCore矩阵乘法计算

随着最近的软件改进,目前在单个V100上训练ResNet-50的速度达到了1360张图像/秒。我们现在正努力将这一训练软件集成到流行的框架中,详情如下。

为了让性能最佳,基于TensorCore进行张量操作的存储器布局应该为channel-interleaved型数据布局(Number-Height-Width-Channel,常被称为NHWC),但往往默认是channel-major型数据布局(Number-Channel-Width-Height,通常称为NCHW)。因此,cuDNN库会在NCHW和NHWC之间执行张量转置操作,如图3所示。正如前面所提到的,由于卷积运算现在的速度非常快,所以这些转置操作占了总运行时间中相当大的一部分。

为了消除这些转置操作,我们直接用NHWC格式表示RN-50模型图中的每个张量,MXNet框架支持这一功能。此外,对所有其他非卷积层,我们还将优化的NHWC实现添加到MXNet和cuDNN中,从而消除了训练过程中对张量转置的需求。

图3:优化NHWC格式,以消除张量转置

另一个优化是基于阿尔达姆定律(并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的,它表示了在并行化之后的效率提升情况),这一法则能预测并行处理的理论加速。由于TensorCore显著地加速了矩阵乘法和卷积层的计算,因此在训练时对其他层的计算占据了总运行时间很大的一部分。我们可以确定这些新的性能瓶颈并进行优化。

如图4所示,数据会移动到DRAM或从DRAM中移出,因此许多非卷积层的性能会受到限制。可以利用片上存储器将连续的层融合在一起,避免DRAMtraffic。例如,我们在MXNet中创建一个图优化传递功能,以检测连续的ADD和ReLu层,只要有可能就将这些层替换成融合层。在MXNet中可以非常简单地使用NNVM(神经网络虚拟机,NeuralNetworkVirtualMachine)来实现这些类型的优化。

图4:进行层融合操作,消除反复数据读/写

最后,我们继续为常见的各类卷积创建额外的专用kernel,以进行优化。

我们目前正在将许多这种优化应用于多个深度学习框架之中,包括TensorFlow、PyTorch和MXNet。我们利用单个TensorCoreV100GPU进行标准的90-epoch训练,基于在MXNet上做的改进,处理速度达到1075张图像/秒,与此同时,我们的训练与单精度训练一样达到了相同的Top-1分类精度(超过75%)。我们在单机测试中的处理速度可以达到1360张图像/秒,这意味着性能还有很大的提升空间。可以在NGC(NVIDIAGPUCLOUD)上利用NVIDIA-optimizeddeeplearningframeworkcontainers实现性能的提升。

创纪录的最高单节点速度

多个GPU可以作为单节点运行,以实现更高的吞吐量。然而,在将多个GPU缩到单服务节点中工作时,需要GPU之间存在高带宽/低延迟通信路径。英伟达NVLink高速互连结构允许我们将8个GPU作为单服务器运行,实现性能扩展。这些大规模的加速服务器可以让深度学习的计算达到petaflop量级的速度,并且在云端和本地部署中都可以被广泛使用。

然而,虽然将GPU扩展到8个可以显著提高训练性能,但在这种框架下,主CPU执行其他工作时性能会受到限制。而且,在这种框架下,对连接GPU的数据管道性能要求极高。

数据管道从磁盘中读取编码的JPEG样例,然后再执行解码、调整图像大小、图像增强(如图5所示)操作。这些操作提高了神经网络的学习能力,从而提高了训练模型的预测准确性。而因为在训练时,有8个GPU在进行运算操作,这会限制框架的整体性能。

图5:图像解码和增强数据管道

为了解决这个问题,我们开发了DALI(DataAugmentationLibrary,数据扩充库),这是一个与框架无关的库,可以将计算从CPU转移到GPU上。如图6所示,DALI将JPEG解码的一部分、调整图像大小以及其他所有增强操作移动到GPU上。这些操作在GPU上的执行速度要比在CPU上快得多,这缓解了CPU的负荷。DALI使得CUDA的并行处理能力更加突出。消除CPU瓶颈之后,在单节点上的计算速度可以达到7850张图像/秒。

图6:利用DALI优化工作负荷

英伟达正在帮助将DALI融入到所有主流人工智能框架中。这一解决方案有助于提升具备8个以上GPU的系统的性能,比如英伟达最近发布的带有16个TeslaV100GPU的DGX-2。

创纪录的单个云实例处理速度

我们使用单GPU和单节点运行来训练ResNet-50(90epoch),使预测准确率超过75%。通过算法的创新和超参数调节,可以进一步减少训练时间,在更少的epoch下达到更高精度。GPU具备可编程的特性,并支持所有深度学习框架,这使得AI研究者能够探索新的算法,并利用现有的算法进行研究。

fast.ai团队最近分享了基于英伟达硬件的优秀成果,他们使用PyTorch在远小于90epoch的训练下达到了很高的精确度。JeremyHoward和fast.ai的研究人员利用8个V100TensorCoreGPU,在一个AWSP3实例上用ImageNet训练ResNet-50。他们对算法进行创新,调节了一系列超参数,不到3个小时就将模型训练好了,这比基于云实例的TPU计算(需要将近9个小时来训练ResNet-50)快三倍。

我们进一步期望这一博客中描述的提高吞吐量的方法同样也适用于其他训练,例如前面提到的fast.ai的例子。

效果呈现指数级增长

自从AlexKrizhevsky利用两块GTX580GPU赢得了ImageNet比赛,我们在深度学习加速方面所取得的进步令人难以置信。Krizhevsky当时花了6天时间来训练他的神经网络——AlexNet,这一网络在当时的表现优于所有其他的图像识别方法,引发了一场深度学习革命。我们最近发布的DGX-2可以在18分钟内训练好AlexNet。从图7可以看到,在这5年多的时间里,随着硬件性能的提升,处理速度加快了500倍。

图7:在ImageNet上训练AlexNet所需要的时间

Facebook人工智能研究院(FAIR)开源了他们的语言翻译模型Fairseq,在不到一年的时间里,我们基于DGX-2和软件栈的改进(见图8),在训练Fairseq时实现了10倍的加速。

图8:训练Fairseq所需要的时间

图像识别和语言翻译仅仅是研究人员用AI力量解决无数难题的用例之一。Github上共有超过6万个使用GPU加速框架的神经网络项目,GPU的可编程性为AI社群正在构建的所有类型的神经网络提供加速。我们的快速改进使得AI研究人员能够想象出更复杂的神经网络,以解决更困难的挑战。

这些长久的进步得益于我们对GPU加速计算的全堆栈优化算法。从构建最先进的深度学习加速器到复杂的系统(HBM、COWOS、SXM、NVSwitch、DGX),从先进的数字计算库和深度软件栈(cuDNN,NCCL,NGC)到加速所有的DL框架,英伟达对AI的承诺为AI开发者提供了无与伦比的灵活性。

我们将继续优化整个堆栈,并持续实现性能的指数级提升,为AI社群提供推动深度学习创新研究的有力工具。

总结

AI继续改变着各行各业,驱动出无数用例。理想的AI计算平台需要提供出色的性能,能支持庞大且不断增长的模型,并具备可编程性,以应对模型的多样性需求。

英伟达的VoltaTensorCoreGPU是世界上最快的AI处理器,只用一块芯片就能让深度学习的训练速度达到125teraflop。我们很快会将16块TeslaV100整合到一个单服务器节点中,以创建世界上最快的计算服务器,提供2petaflops的计算性能。

除了在加速上的优异性能,GPU的可编程性以及它在云、服务器制造商和整个AI社群中的广泛使用,将带来下一场AI变革。

无论你选择什么深度学习框架(Caffe2,Chainer,CognitiveToolkit,Kaldi,Keras,Matlab,MXNET,PaddlePaddle,Pytorch,TensorFlow),都可以用英伟达硬件进行加速。此外,英伟达GPU还用于训练CNN、RNN、GAN、RL、混合网络架构以及每年基于这些网络的成千上万个变体。AI社群中目前存在很多惊人的应用,我们期待着为AI的下一步发展提供动力。

供稿:网络转载

本文链接:http://www.chuandong.com/news/news.aspx?id=213607

中国传动网

官方微信

扫一扫,信息随手掌控

运动与控制

官方微信

扫一扫,运动与控制信息随手掌控

相关新闻

联系我们

广告联系:0755-82048561
展会合作:0755-83736589
杂志投稿:0755-82048562

网站简介|会员服务|联系方式|帮助信息|版权信息|法律声明|网站地图|友情链接|法律支持|意见反馈

版权所有 2006-2016 中国传动网(ChuanDong.com)

  • 经营许可证
    粤B2-20150019

  • 粤ICP备
    14004826号

  • 不良信息
    举报中心

  • 网络110
    报警服务

网站客服热线

0755-82949541

QQ客服

2737591964