英伟达首席科学家:深度学习硬件的过去、现在和未来

3dab9f143af54acf9db8c5501ed8a9e7.png

作者|Bill Dally

翻译|胡燕君、沈佳丽、贾川

过去十年是深度学习的“黄金十年”,它彻底改变了人类的工作和娱乐方式,并且广泛应用到医疗、教育、产品设计等各行各业,而这一切离不开计算硬件的进步,特别是GPU的革新。

深度学习技术的成功实现取决于三大要素:第一是算法。20世纪80年代甚至更早就提出了大多数深度学习算法如深度神经网络、卷积神经网络、反向传播算法和随机梯度下降等。

4432f1ace80752e8e5765963765d7477.png

第二是数据集。训练神经网络的数据集必须足够大,才能使神经网络的性能优于其他技术。直至21世纪初,诸如Pascal和ImageNet等大数据集才得以现世。

第三是硬件。只有硬件发展成熟,才能将大型数据集训练大型神经网络的所需时间控制在合理的范围内。业内普遍认为:比较“合理”的训练时间大概是两周。至此,深度学习领域燃起了燎原之火。

如果把算法和数据集看作是深度学习的混合燃料,那么GPU就是点燃它们的火花,当强大的GPU可用来训练网络时,深度学习技术才变得实用。

此后,深度学习取代了其他算法,被广泛应用在图像分类、图像检测、语音识别、自然语言处理、时序分析等领域,甚至在围棋和国际象棋方面也能看到它的身影。随着深度学习潜入人类生活的方方面面,模型训练和推理对硬件的要求也越来越高。

7e309de820b5761790d7baf72a07a0bb.png

从2012年AlexNet出现到2016年ResNet问世,图像神经网络的训练算力消耗(以petaflop/s-day为单位)增长了将近2个数量级,而从2018年的BERT到近年的GPT-3,训练算力消耗增加了近4个数量级。在此期间,得益于某些技术的进步,神经网络的训练效率明显提升,由此节省了不少算力,否则算力消耗的增长还会更夸张。

研究人员想用更大的无监督语言数据集训练更大的语言模型,然而,尽管他们已经拥有4000个节点的GPU集群,但在合理训练时间内能处理的运算还是非常有限。这就意味着,深度学习技术的发展有多快,取决于硬件发展有多快。

如今,深度学习模型不但越来越复杂,而且应用范围越来越广泛。因此,还需要持续提升深度学习的性能。

那么,深度学习硬件究竟如何继续提升?英伟达首席科学家Bill Dally无疑是回答这一问题的权威,在H100 GPU发布前,他在一次演讲中回顾了深度学习硬件的现状,并探讨摩尔定律失效的情况下持续提升性能扩展的若干方向。OneFlow社区对此进行了编译。

1

GPU架构演进史

从2012年的K20X到2020年的A100,GPU的推理性能提高到原来的317倍。这就是我们所说的“黄氏定律”,这种发展速度比“摩尔定律”快得多。

659310d3d0b8a069dd621e3674a77879.png GPU的推理性能提升

但不同于“摩尔定律”,在“黄氏定律”中,GPU的性能提升不完全依赖制程技术的进步。上图用黑、绿、蓝三色分别标注了这几种GPU,分别代表它们使用了三种不同的制程技术。早期的K20X和M40使用的是28纳米制程;P100、V100和Q8000使用的是16纳米制程;A100使用的是7纳米制程。制程技术的进步大概只能让GPU的性能提高到原来的1.5或2倍。而总体317倍的性能提升绝大部分归功于GPU架构和线路设计的完善。

2012年,英伟达推出了一款Kepler架构GPU,但它并不是专为深度学习设计的。英伟达在2010年才开始接触深度学习,当时还没有考虑为深度学习量身定制GPU产品。

fd11d6d23eb307a4ad989b30b69ea8e9.pngKepler (2012)

Kepler的目标使用场景是图像处理和高性能运算,但主要还是用于图像处理。因此,它的特点是高浮点运算能力,它的FP32计算(单精度浮点数计算)速度达到近4 TFLOPS,内存带宽达到250 GB/s。基于Kepler出色的性能表现,英伟达也将它视为自家产品的基准线。

830c217fa5e1aa31d2c11240109c879a.png

Pascal (2016)

后来,英伟达在2016年推出了Pascal架构,它的设计更适合深度学习。英伟达经过一些研究后发现,不少神经网络都可以用FP16(半精度浮点数计算)训练,因此Pascal架构的大部分型号都支持FP16计算。下图这款Pascal GPU的FP32计算速度可达10.6 TFLOPS,比前一款Kepler GPU高出不少,而它的FP16计算则更快,速度是FP32的两倍。

Pascal架构还支持更多复杂指令,例如FDP4,这样就可以将获取指令、解码和获取操作数的开销分摊到8个算术运算中。相较于之前的融合乘加(Fuse Multiply-Add)指令只能将开销分摊到2个算术运算,Pascal架构可以减少额外开销带来的能耗,转而将其用于数学运算。

Pascal架构还使用了HBM显存,带宽达到732 GB/s,是Kepler的3倍。之所以增加带宽,是因为内存带宽是深度学习性能提升的主要瓶颈。此外,Pascal使用了NVLink,可以连接更多机器和GPU集群,从而更好地完成大规模训练。英伟达为深度学习推出的DGX-1系统就使用了8个基于Pascal架构的GPU。

a42385275d4df3d045dccb6eb7a43ab5.png

Volta (2017)

2017年,英伟达推出了适用于深度学习的Volta架构,它的设计重点之一是可以更好地分摊指令开销。Volta架构中引入了Tensor Core,用于深度学习的加速。Tensor Core可以用指令的形式与GPU连接,其中的关键指令是HMMA (Half Precision Matrix Multiply Accumulate,半精度矩阵乘积累加),它将2个4×4 FP16矩阵相乘,然后将结果加和到一个FP32矩阵中,这种运算在深度学习中很常见。通过HMMA指令,就可以将获取指令和解码的开销通过分摊降低到原来的10%到20%。

剩下的就是负载问题。如果想要超越Tensor Core的性能,那就应该在负载上下功夫。在Volta架构中,大量的能耗和空间都被用于深度学习加速,所以即使牺牲可编程性,也不能带来太多性能提升。

Volta还升级了HBM显存,内存带宽达到900 GB/s,还使用了新版本的NVLink,可以让构建集群时的带宽增加到2倍。此外,Volta架构还引进了NVSwitch,可以连接多个GPU,理论上NVSwitch最多可以连接1024个GPU,构建一个大型共享内存机器。

af2e7808551ca39eefc19b952ab701f9.png

Turing (2018)

2018年,英伟达推出了Turing架构。由于之前的Tensor Core大获成功,所以英伟达又顺势推出了Integer Tensor Core。因为大部分的神经网络用FP16即可训练,做推理时也不需要太高的精度和太大的动态范围,用Int8即可。所以,英伟达在Turing架构中引进了Integer Tensor Core,使性能提高到原来的2倍。

Turing架构还使用了GDDR显存,以支持那些有高带宽需求的NLP模型和推荐系统。当时有人质疑称,Turin

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值