作者|Bill Dally
翻译|胡燕君、沈佳丽、贾川
过来十年是深度学习的“黄金十年”,它彻底改变了人类的工作和娱乐形式,并且广泛应用到医疗、教育、产品设计等各行各业,而这所有离不开计算硬件的提高,特地是 GPU 的变革。
深度学习技术的胜利实现取决于三大因素:第一是算法。20 世纪 80 年代甚至更早就提出了大多数深度学习算法如深度神经网络、卷积神经网络、反向流传算法和随机梯度降落等。
第二是数据集。训练神经网络的数据集必须足够大,能力使神经网络的性能优于其余技术。直至 21 世纪初,诸如 Pascal 和 ImageNet 等大数据集才得以现世。
第三是硬件。只有硬件倒退成熟,能力将大型数据集训练大型神经网络的所需工夫管制在正当的范畴内。业内普遍认为:比拟“正当”的训练工夫大略是两周。至此,深度学习畛域燃起了燎原之火。
如果把算法和数据集看作是深度学习的混合燃料,那么 GPU 就是点燃它们的火花,当弱小的 GPU 可用来训练网络时,深度学习技术才变得实用。
尔后,深度学习取代了其余算法,被广泛应用在图像分类、图像检测、语音辨认、自然语言解决、时序剖析等畛域,甚至在围棋和国际象棋方面也能看到它的身影。随着深度学习潜入人类生存的方方面面,模型训练和推理对硬件的要求也越来越高。
从 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 倍。这就是咱们所说的“黄氏定律”,这种倒退速度比“摩尔定律”快得多。
GPU 的推理性能晋升
但不同于“摩尔定律”,在“黄氏定律”中,GPU 的性能晋升不齐全依赖制程技术的提高。上图用黑、绿、蓝三色别离标注了这几种 GPU,别离代表它们应用了三种不同的制程技术。晚期的 K20X 和 M40 应用的是 28 纳米制程;P100、V100 和 Q8000 应用的是 16 纳米制程;A100 应用的是 7 纳米制程。制程技术的提高大略只能让 GPU 的性能进步到原来的 1.5 或 2 倍。而总体 317 倍的性能晋升绝大部分归功于 GPU 架构和线路设计的欠缺。
2012 年,英伟达推出了一款 Kepler 架构 GPU,但它并不是专为深度学习设计的。英伟达在 2010 年才开始接触深度学习,过后还没有思考为深度学习量身定制 GPU 产品。
Kepler (2012)
Kepler 的指标应用场景是图像处理和高性能运算,但次要还是用于图像处理。因而,它的特点是高浮点运算能力,它的 FP32 计算(单精度浮点数计算)速度达到近 4 TFLOPS,内存带宽达到 250 GB/s。基于 Kepler 杰出的性能体现,英伟达也将它视为自家产品的基准线。
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。
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,构建一个大型共享内存机器。
Turing (2018)
2018 年,英伟达推出了 Turing 架构。因为之前的 Tensor Core 大获胜利,所以英伟达又趁势推出了 Integer Tensor Core。因为大部分的神经网络用 FP16 即可训练,做推理时也不须要太高的精度和太大的动静范畴,用 Int8 即可。所以,英伟达在 Turing 架构中引进了 Integer Tensor Core,使性能进步到原来的 2 倍。
Turing 架构还应用了 GDDR 显存,以反对那些有高带宽需要的 NLP 模型和举荐零碎。过后有人质疑称,Turing 架构的能源效率比不上市面上的其余加速器。但如果认真计算,会发现其实 Turing 架构的能源效率更高,因为 Turing 用的是 G5 显存,而其余加速器用的是 LPDDR 内存。我认为,抉择 G5 显存是一个正确的决定,因为它能够反对同类产品没能反对的高带宽需要的模型。
我对 Turing 架构深感自豪的一点是,它还装备了反对光线追踪(Ray Tracing)的 RT Core。英伟达在 2013 年才开始钻研 RT Core,在短短 5 年后就正式推出了 RT Core。
Ampere (2020)
2020 年,英伟达公布了 Ampere 架构,让当年公布的 A100 实现了性能飞跃,推理速度可达 1200 Teraflops 以上。Ampere 架构的一大长处是,它反对稠密性。咱们发现,大部分神经网络都是能够稠密化的,也就是说,能够对神经网络进行“剪枝”,将大量权重设置为 0 而不影响它的准确率。但不同神经网络的可稠密化水平不同,这就有些辣手。比方,在保障不损失准确率的前提下,卷积神经网络的密度能够升高至 30% 到 40%,而全连贯神经网络则可升高至 10% 到 20%。
传统观点认为,因为运算稠密矩阵包的开销较大,所以如果密度不能降到 10% 以下,衡量之下不如运算密集矩阵包。咱们一开始和斯坦福大学单干钻研稠密性,起初做出了很好的机器,它们在矩阵密度达到 50% 时也能高效运行,但要想让稠密矩阵在电源门控(power gating)方面比密集矩阵更优越还是很艰难,这是咱们始终想冲破的中央。最终,咱们攻破难题研发出了 Ampere,而秘诀就是结构化稠密。
结构化稠密
Ampere 架构规定矩阵的每 4 个数值中,非零值不能超过 2 个,也就是通过去掉非零值对权重进行压缩。通过输入码字(code word)判断哪些权重应被保留,并用码字判断这些非零权重应该乘以哪些输出激活,而后相加,实现点乘操作。这种做法十分高效,让 Ampere 架构在大多数神经网络上的性能晋升到原来的 2 倍。
此外,Ampere 架构还有不少翻新点,例如 Ampere 内置了 TF32(即 TensorFloat-32)格局,它联合了 FP32 的 8 位指数位和 FP16 的 10 位尾数位。Ampere 还反对 BFLOAT 格局,BFLOAT 的指数位与 FP32 雷同,尾数位比 FP32 少,所以能够视为 FP32 的缩减版。上述的所有数据格式都反对结构化稠密,所以无论用 FP16 和 TF32 训练,还是用 Int8 和 Int4 推理,都能够取得结构化稠密带来的高性能。
随着 Ampere 在量化方面做得越来越好,它能够利用在很多神经网络上并保障高性能。Ampere 有 6 个 HBM 堆栈,且 HBM 显存的带宽也有所降级,达到 2TB/s。端到端推理时,Ampere 的运算能力可达 3.12 TOPS/W(Int8) 和 6.24 TOPS/W(Int4)。
2
GPU 推理性能晋升的三大因素
总结深度学习过来的倒退,GPU 推理性能在 8 年内晋升 317 倍次要归功于三大因素:
首先,最重要的是数字示意(number representation)法的倒退 。FP32 的精度太高,导致算术运算的老本太高。起初 Turing 和 Ampere 架构反对 Int8,极大晋升了 GPU 的每瓦性能。Google 发表论文颁布 TPU1 时示意,TPU1 的劣势就在于它是专门为机器学习量身定制的。实际上,Google 应该是在拿自家的 TPU1 和英伟达的 Kepler 进行比拟(如前所述,Kepler 并非专门为深度学习而设计),所以 TPU1 的劣势归根结底能够说是 Int8 相较于 FP32 的劣势。
其次,GPU 反对简单指令 。Pascal 架构新增了点乘指令,而后 Volta、Turing 和 Ampere 架构新增了矩阵乘积指令,让开销失去摊派。在 GPU 中保留可编程引擎能够带来很多益处,它能够像加速器一样高效,因为每项指令实现的工作十分多,每项指令的开销摊派简直能够忽略不计。
最初,制程技术的提高 。芯片制程从 28 纳米倒退到现在的 7 纳米,为 GPU 性能晋升作出了肯定的奉献。
下列例子能够让你更好地了解开销摊派的成果:如果执行 HFMA 操作,“乘”和“加”2 个操作共计只需 1.5pJ(皮焦耳,Picojoules),然而获取指令、解码和获取操作数须要 30pJ 的开销,摊派下来开销就会高达 2000%。
而如果执行 HDP4A 操作,就能够将开销摊派到 8 个操作,使开销降落至 500%。而 HMMA 操作,因为绝大部分的能耗都用于负载,开销仅为 22%,IMMA 则更低,为 16%。因而,尽管谋求可编程性会减少大量开销,但采取不同的设计可带来的性能晋升更加重要。
3
从单卡性能到 GPU 集群连贯
以上议论的都是单个 GPU 的性能,但训练大型语言模型显然须要多个 GPU,因而还要改善 GPU 之间的连贯形式。
咱们在 Pascal 架构中引入 NVLink,起初的 Volta 架构采纳了 NVLink 2,Ampere 架构采纳了 NVLink 3,每一代架构的带宽都翻了一倍。此外,咱们在 Volta 架构中推出了第一代 NVSwitch,又在 Ampere 架构推出了第二代。通过 NVLink 和 NVSwitch,能够构建超大型的 GPU 集群。另外,咱们还推出了 DGX box。
DGX box
2020 年,英伟达收买了 Mellanox,所以当初能够提供蕴含 Switches 和 Interconnect 在内的整套数据中心解决方案,供构建大型 GPU 集群之用。此外,咱们还装备了 DGX SuperPOD,它在 AI 性能记录 500 强名单上排行前 20。以往,用户须要定制机器,当初只须要购买一台能够部署 DGX SuperPOD 的预配置机器,就能够取得 DGX SuperPOD 带来的高性能。此外,这些机器还十分实用于科学计算。
从前,用单台机器训练单个大型语言模型须要几个月之久,但通过构建 GPU 集群就能够大大提高训练效率,因而,优化 GPU 集群连贯和晋升单个 GPU 的性能同样重要 。
4
深度学习加速器:新技术的试验场
接下来谈谈英伟达的加速器研发工作。英伟达把加速器视为试验新技术的载体,胜利的技术最终会被利用到支流 GPU 中。
能够这样了解加速器:它有一个由内存层次结构输出的矩阵乘法单元,接下来要做的是让大部分的能耗用于矩阵乘法计算,而不是用于数据搬运。
为了这个指标,咱们在 2013 左右启动了 NVIDIA DLA 我的项目,它是一款开源产品,配套十分欠缺,与其余深度学习加速器别无二致。但 DLA 有大型 MAC 阵列,反对 2048 次 Int8、1024 次 Int16 或 1024 次 FP16 操作。
DLA 有两个独特之处:一是反对稠密化。咱们从容易实现的指标开始着手,所有的数据传输,包含从 DMA 到 Unified Buffer 和从 Unified Buffer 到 MAC 阵列,都只波及非零值,通过编码决定哪些元素被留下,而后对这些元素进行解压缩,再输出 MAC 阵列进行运算。
DLA 解压缩的形式比拟奇妙,它并不向 MAC 阵列中输出零值,因为这会让一连串的数据都变为零。相同,它设置了独自的线路示意零值,当乘法器在任一输出中接管到该线路时,就会锁定乘法器内的数据,而后发送输入,输入的数据不会减少任何数值,这种数据门控(Data Gating)的能源效率十分高。
二是在硬件层面反对 Winograd 变换。要晓得,如果要做卷积,例如一个 m×n 的卷积核,在空间域就须要 n 的 2 次方个乘法器和加法器,但如果在频域,就只须要逐点相乘。
所以大型卷积核在频域运算比在空间域运算更高效。依据卷积核大小的不同,对局部图像网络而言,Winograd 变换能够带来 4 倍的性能晋升。
EIE(2016)
2016 年,我在斯坦福和我过后的学生韩松(MIT EECS 助理传授、原深鉴科技联结创始人)一起钻研 EIE (Efficient Inference Engine)。这是对稠密化的初步摸索之一。咱们在硬件层面反对 CSR(Compressed Sparse Row)矩阵示意,这种做法十分高效,在密度为 50% 时,甚至比全密度计算还要节能。
起初发现,如果想让加速器更高效,应该构建向量单元阵列,这样每个引擎不会只执行单个乘加,而是每个循环每个 PE(Processing Element)执行 16×16=256 个乘加。但当咱们开始构建向量单元阵列时,发现很难高效实现稠密化,于是转而采纳结构化稠密。
EIE 解决标量单元时,它将指针构造贮存在独自的内存中,而后通过流水阶段来解决指针构造,决定哪些数据能够相乘,继而执行乘法,将运算后果搁置在适合的地位。这一整套流程运行得十分高效。
咱们还发现,进步神经网络运算效率的办法除了“剪枝”实现稠密化之外,还有量化。因而,咱们决定应用码本量化(codebook quantization)。在用比特数示意的数据方面,码本量化是晋升效率的最佳办法。所以咱们对 codebook(码本)进行了训练。
事实证明,如果你能应用反向流传来捕获梯度降落,那就能够将反向流传使用到任何事物中。所以咱们在码本中应用反向流传,训练了给定精度的最优码字集。假如码本有 7 个比特,那么你将失去 128 个码字,咱们就在神经网络中找到最优的 128 个码字进行训练。
码本量化面临一个问题:数学运算的开销很高。因为不论码本有多大,理论数值是多少,你都须要在 RAM(随机拜访内存)中进行查找。理论数值必须以高精度示意,而你无奈将这些码字精确地示意进去。
因而,咱们在高精度数学方面花了很多精力。从压缩的角度来看,这样做的成果很好,但从数学能量(math energy)的角度来看,就显得不是很划算,所以在后续工作中咱们就放弃了这项技术。
Eyeriss(2016)
Joel Emer(同时供职于英伟达和麻省理工大学)和麻省理工大学的 Vivienne Sze 一起构建了 Eyeriss,次要解决了平铺问题,或者说是如何限度计算,以此来将数据搬运(data movement)最小化。典型的办法是应用行固定(row stationary),在行中流传权重,输入在列中激活,并最大限度地缩小数据搬运耗费的能量。
SCNN(2017)
咱们当初仍在进行稠密性钻研。2017 年,咱们为稠密编译(神经网络的进化版)搭建了一台名为 SCNN(Sparse CNNs)的机器,咱们所做的是:将与解决稠密性相干的所有简单问题都转移到输入上。读取所有的输出激活,同时明确它们须要去往哪里,因而这里的“f 宽向量”是典型的向量输出激活。咱们一次会读取四个输出激活,四个权重,每个权重都须要乘以每个输出激活。这只是一个对于把后果放在哪里的问题,所以咱们用 f 乘 f 计算。
在坐标计算中,咱们取输出激活和权重的指数,并计算出在输入激活中须要求和后果的地位。而后在这些累加器缓冲区上做了一个数据发散(scatter_add)计算。在此之前,所有都十分无效。但事实证明,将不规则性转移到输入上不是一个好方法,因为在输入中,精度实际上是最宽泛的。当你偏向于累加,做了八位权重,八位激活,累加到了 24 位。在这里咱们用宽位累加器(wide accumulators)做了大量的数据搬运,成果优于做更密集一点的数据搬运。不过晋升也没有设想的那么多,兴许是密度单元能量的 50%。
SIMBA(RC18)(2019)
咱们要做的另一件事是:用现有加速器建造一个多芯片模块——SIMBA(RC18),在 2018 年产生了做此钻研的想法,同时这款芯片也展现了很多奇妙的技术。它有一个很好的 PE 架构,该芯片则在其中间提供了一项十分无效的信令技术(signaling technology)。当初该架构扩大到了残缺的 36 个芯片,其中每个芯片都有一个 4 ×4 的 PE 矩阵,在这个单位中,每个 PE 又有 8 个宽矢量单位,因而咱们可能失去 128 TOPS 的运算能力,每个 Op 有 0.1 pJ,大概相当于 10 TOPS/W。从中咱们学到了很多对于衡量(trade-offs)的货色。
咱们意识到:构建这些 PE 阵列宛如建设一个十分大的设计空间(design space),关乎如何构建内存层次结构,如何调度数据等等,对此咱们建设了一个叫做 MAGNET 的零碎。
MAGNET
上图是一个于 2019 年发表在 ICCAD(国内计算机辅助设计会议)上的设计空间摸索零碎,次要用于枚举其设计空间,如:每个向量单元应该有多宽,每个 PE 有多少向量单元,权重缓冲区有多大,累加器缓冲区有多大,激活缓冲区有多大等等。起初发现,咱们须要去做另一个级别的缓存,于是增加了权重收集器和累加器收集器。
MAGNET RESULTS
通过这种额定的缓存级别,咱们最终获得了胜利。这表明这里的数据流是不同的,而权重固定数据流最后是由 Sze 和 Joel 来实现的。你将大部分能量投到了数据门路以外的事件上,比方投入到累积缓冲区、权重缓冲区和输出缓冲区中。但通过这些混合数据流,权重固定,部分输入固定,输入固定,部分权重固定,可能在数学运算中取得简直三分之二的能量,并且能够缩小花在这些内存阵列中的能量,从而在内存层次结构的另一个层上进行解决。这使得当初的每瓦性能达到约为 20 TOPS。
VS-Quant
2021 年,在 MLSYS(The Conference on Machine Learning and Systems,机器学习与零碎会议)会议上,咱们引入了 VS-Quant,以此来摸索出一种在压缩比特数(这方面码本量化成果很好)和数学开销方面都很划算的量化形式。咱们应用整数示意,但同时想要缩放该整数示意,以便能够示意出整数的动静范畴。
但事实证明,如果你当初将其利用到整个神经网络,那么成果不会很好,因为神经网络上有很多不同的动静范畴,所以 VS-Quant 的要害是:咱们对一个绝对较小的向量施加了一个独自的比例因子(scale factor),大概通过在 32 个权重上进行上述操作,动静范畴会小得多。咱们能够把这些整数放在下面,也能够对其调整优化。
兴许咱们没有将离群值精确地示意进去,但更好地示意出了其余数字。如此一来,咱们就能够用绝对低精度的权重和激活来换取较高的精度。所以咱们当初有多个比例因子(scale factors):一个是权重因子,一个是激活因子。
Energy, Area, and Accuracy Tradeoff
咱们基本上是在向量层级进行这些操作,后果如 Bert-base 所示。与不进行权重训练相比,咱们能够通过训练在某些状况下节俭 20% 的能量和 70% 的空间,上图的绿色示意基本上没有损失准确性;蓝色、橙色和红色示意准确性更高或更低。但即便在蓝色程度,准确性也相当高了。
通过 VS-Quant 和一些其余调整,咱们在这些语言模型上进行了试运行。在语言模型上运行比在大概为 120 TOPS/ W 的图像模型上运行要艰难得多。
Accelerators
所以对于加速器,要先做一个矩阵乘法器。咱们须要提出一种平铺办法,一种采纳神经网络的七个嵌套循环计算方法。实质上是将其中一些循环复制到内存零碎的各层,以最大限度地重复使用每层的内存层次结构,并尽量减少数据搬运。
咱们还钻研了稠密性,在压缩方面很不错。它基本上减少了内存带宽和通信带宽,缩小了内存和通信的能量。稠密性倒退的下一个档次是:当你有一个零值,只需独自发送一条线示意零值,而不用在每个循环中切换到 8 或 16 位。
Ampere 架构能够通过应用结构化稠密来重用乘法器,这是一种很无效的办法,只须要几个多路复用器的开销(基本上能够忽略不计)。在进行指针操作时,咱们也能够重用乘法器,从中可取得 2 倍的性能。数值表征(number representation)十分重要。咱们从 EIE 开始(译者注:Efficient Inference Engine,韩松博士在 ISCA 2016 上的论文。实现了压缩的稠密神经网络的硬件加速。与其近似办法的 ESE 取得了 FPGA2017 的最佳论文。),试图做码本,但这使得数学上的缩放很低廉。
最初,在加速器里试验胜利的技术最终会被使用到 GPU 中。这是一种很好的测试形式,咱们认为,GPU 是一个针对特定畛域硬件的平台,它的内存零碎十分好,网络晦涩,可能让深度学习利用运行得十分快。
5
深度学习硬件的将来
Future Directions
接下来谈谈深度学习硬件的将来。上图是一个能量流向饼状图,从中能够看到大部分都流向于数据门路,其背地有大概 50% 是对于数学运算,所以咱们想让数学运算的能量消耗更少;剩下很多流向内存和数据搬运。其中绿色的是数据搬运,其余部分是输出缓冲区、权重缓冲区、累加缓冲区和累加收集器,占比都有不同。
咱们正在钻研升高数学运算的能量消耗,最好的一个方法就是将其转移到对数零碎。因为在对数零碎中,乘法变成了加法,而加法的耗能通常要低得多。另一个方法是转为更小的数值,这一点能够通过 VS-Quant 实现。通过更准确地量化,咱们能够用较低的精度数从神经网络中取得等同的精度。
咱们心愿能将平铺做得更好,比方在某些状况下,可能会在内存层次结构中增加更多层,这样就能够升高内存能量,也能够使内存电路和通信电路的成果更好。
在 Ampere 架构上,咱们曾经在结构化稠密的工作是一个很好的开始,但我认为咱们能够通过升高密度或抉择多个密度来调整激活和权重,以此做得更好。
随着钻研的深刻,工艺技术也会带来一些电容缩放的停顿。
6
总结
2012 年公布 Kepler 架构以来,GPU 的推理性能(inference performance)每年都在翻倍增长。倒退到当初,很大水平上要归功于一直更好的数字示意。本次咱们谈了很多内容,比方从 Kepler 架构的 FP32 到 FP16 到 Int8 再到 Int4;谈到了通过调配指令开销,应用更简单的点积;谈到了 Pascal 架构,Volta 架构中的半精细矩阵乘累加,Turing 架构中的整数矩阵乘累加,还有 Ampere 架构和构造稠密。
对于 Plumbing 我谈得很少,但 Plumbing 却十分重要。通过 Plumbing 来安排片上内存零碎和网络,由此能够充分利用弱小的 Tensor Cores(张量外围)。对于 Tensor Cores 来说,使其在 Turing 架构中每秒执行一千兆的操作,并将数据输出到执行通用基准测试中,以此来安顿分支存储器、片上存储器和它们之间的互连互通以及失常运行,都十分重要。
展望未来,咱们筹备尝试将各种新技术利用到加速器中。后面提到,咱们曾经就稠密性战争铺技术进行了屡次试验,并在 MAGNet 我的项目中试验了不同的平铺技术和数值示意等等。但咱们依然倍感压力,因为深度学习的提高其实取决于硬件性能的继续晋升,让 GPU 的推理性能每年都翻一番是一项微小的挑战。
其实咱们手里的牌打得差不多了,这意味着咱们必须开始研发新的技术,以下是我认为值得关注的四个方向: 首先,钻研新的数字示意,比方对数(Log number),以及比 EasyQuant 更加奇妙的量化计划;其次,持续深入研究稠密性;而后,钻研存储电路和通信电路;最初,改进现有的工艺技术 。
7
答听众问
Dejan Milojicic:须要多大的矩阵卷积能力将 Winograd 算法转换成更高效的卷积实现?
Bill Dally: 我认为,3×3 的矩阵卷积就很高效。当然,卷积越大,效率越高。
Dejan Milojicic:高带宽存储器(High Bandwidth Memory, HBM)的内存带宽是如何计算的?是通过所有的 GPU 核同时拜访内存吗?
Bill Dally: 每个 HBM 堆栈都有一个独自的帧缓冲区,像 Ampere 架构有六个堆栈。咱们的内存带宽是通过每个内存控制器以全带宽运行来计算的。各个 GPU 核之间都有一个缓存层,而后咱们的片上网络的带宽是 HBM 带宽好几倍,所以基本上只需运行一小部分的流式多处理器就能使 HBM 达到饱和。
Dejan Milojicic:带有 NVLink 的分布式计算如何工作?谁来决定具体执行哪一个计算?在多个 GPU 上做 scatter-gather 时,哪些地方会产生开销以及会产生哪些开销?
Bill Dally: 程序员会决定把数据和线程放在什么地位,而你只需在 GPU 上启动线程和数据以及确定它们的运行地位。采纳 NVLink 进行连贯的零碎具备一大劣势,那就是它是一个共享的地址空间,传输绝对较小数据时的开销也相当小,所以咱们在网络中采取集群通信。
通常状况下,如果你在深度学习中做数据并行,那么每个 GPU 都会运行雷同的网络,但解决的是同一数据集的不同局部,它们会各自累积权重梯度,之后你再共享各个 GPU 上的梯度并累积所有梯度,而后增加到权重中。集群通信就十分善于解决这样的工作。
Dejan Milojicic:咱们到底是应该为所有利用创立通用的深度学习加速器,还是别离创立专用的加速器,比方视觉加速器或自然语言解决加速器?
Bill Dally: 在不影响效率的状况下,我认为加速器当然越通用越好,英伟达的 GPU 在减速深度学习效率方面堪比专用加速器。真正重要的是,机器学习畛域正在以惊人的速度向前倒退。
几年前,大家还在应用循环神经网络解决语言,而后 Transformer 呈现并以风驰电掣之速取代了 RNN,转眼间所有人都开始应用 Transformer 进行自然语言解决。同样,就在几年前,每个人都在应用 CNN 来解决图像,尽管当初仍有不少人在应用卷积神经网络,但越来越多人开始应用 Transformer 来解决图像。
因而,我并不反对产品适度专用化或者为某一网络创立专用加速器,因为产品的设计周期通常须要继续好几年工夫,而在此期间,人们很可能曾经不再应用这种网络了。咱们必须具备敏锐的眼光,及时洞察行业变动,因为它时刻都在以惊人的速度倒退。
Dejan Milojicic:摩尔定律对 GPU 性能和内存占用有何影响?
Bill Dally: 摩尔定律认为,晶体管老本会随工夫逐年升高。明天,集成电路上可包容的晶体管数量的确越来越多,芯片制程也实现了从 16 纳米到 7 纳米的飞跃,集成电路上的晶体管密度越来越大,但单个晶体管的价格却并未升高。因而,我认为摩尔定律有些过期了。
尽管如此,集成电路上能包容更多的晶体管仍是一件坏事,这样咱们就可能建造更大规模的 GPU。尽管大型 GPU 的能耗也会更高,价格也更加低廉,但这总归是一件坏事,因为咱们可能构建一些从前无奈构建的产品。
Dejan Milojicic:如果开发者比拟器重 PyTorch 这样的框架,那么他们应该从硬件的提高中学习什么来让本人的深度学习模型运行更高效?
Bill Dally: 这个问题很难答复。框架在形象硬件方面做得很好,但依然有一些影响模型运行速度的因素值得钻研。咱们能够尝试去做的是,当想出一项更好的技术时,比方更好的数值示意办法,能够尝试将各种不同的技术与框架相结合,看看哪种办法更加无效,这是研发工作不可或缺的环节。
Dejan Milojicic:英伟达是否正在试验新的封装办法?
Bill Dally: 咱们始终在对各种封装技术进行各种试验,弄清楚它们能做什么和不能做什么,以便在适合的机会将它们部署到产品。比方其中一些我的项目在钻研多芯片模块,用焊接凸点、混合键合做芯片重叠,其实有很多简洁的封装技术。
Dejan Milojicic:英伟达的 Tensor Core 和谷歌的 TPU 相比,谁更胜一筹?
Bill Dally: 咱们对谷歌最新的 TPU 并不理解,但他们之前推出的 TPU 都是专用引擎,基本上都内置了大型的乘加器阵列。
TPU 独立的单元来解决非线性函数和批量归一化(batch norm)之类的事件,但咱们的办法是建设一个十分通用的计算单元流式多处理器(SM),只需十分通用的指令就能够让它做任何事件,而后再用 Tensor Core 来减速矩阵乘法局部。因而,Tensor Core 和谷歌的 TPU 都有相似的乘加器阵列,只是咱们应用的阵列绝对较小。
Dejan Milojicic:英伟达最大的对手是谁?
Bill Dally: 英伟达从来不跟其余公司比拟,最大的对手就是咱们本人,咱们也在一直地挑战本人,我认为这才是正确的态度。如果咱们一味地把其他人视作竞争对手,反而放缓咱们后退的脚步。不用过多关注其他人在做什么,咱们真正应该关注的是哪些事件是可能实现的。咱们所做的事就像在谋求光速,咱们更关注怎样才能做到最好,以及间隔光速还有多远,这才是真正的挑战。
Dejan Milojicic:你对量子计算有何认识?量子模仿是深度学习挑战的天然延长吗?
Bill Dally:2021 年 3 月,咱们公布了一款名为“cuQuantum”的软件开发工具包。Google 之前也研制出了具备 53 个量子比特的计算机,并称本人实现了“量子优越性”。一些传统计算机无法实现的计算,用 cuQuantum 在五分钟内就能实现了。所以,如果想真正做到精准的量子算法,而不是明天的嘈杂中型量子(Noisy Intermediate-Scale Quantum,NIST)计算,GPU 应该是最佳抉择。
英伟达的传统 GPU 计算机是目前最快的量子计算机之一,阿里巴巴也在相似的经典计算中获得了不错的问题,这恰好印证了咱们的论断。咱们对量子计算的认识是:英伟达不会因为这一技术畛域的任何动静而感到诧异。
实际上,咱们还成立了一个钻研小组来追踪量子计算畛域的前沿动静,比方 IBM 发表研制出了具备 127 个量子比特的芯片。咱们也始终在跟踪量子比特数量和相干工夫(coherence time)等方面的停顿。
思考到所需的量子比特数量、量子比特的准确性、乐音对量子的烦扰以及量子纠错所需的开销,我认为将来五到十年内,量子计算都无奈实现商用。
我最乐观的认识是,大略五年后,人们将开始进行量子化学模仿,这应该最有可能做到的。但在那之前,还有很多物理上的难题须要解决。很多人还没有意识到,量子计算机就是模仿计算机,而模仿计算机须要十分准确且易于隔离,否则任何与环境的耦合都会导致后果不统一。
Dejan Milojicic:在你看来,机器何时能力达到通用人工智能(AGI)的程度?
Bill Dally: 我对这个问题的认识比拟消极。试看一些比拟胜利的人工智能用例,例如神经网络,其实它实质上就是通用函数拟合器。神经网络能够通过观察来学习一个函数,所以它的价值还是体现在人工感知而不是人工智能。
尽管咱们目前曾经获得了不错的成绩,但还是能够持续钻研如何应用人工智能和深度学习来进步生产力,从而改善医疗、教育,给人们带来更加美妙的生存。其实,咱们不须要 AGI 来做到这些,而应该器重如何最大水平地利用现有技术。间隔 AGI 还有很长的路要走,咱们也必须弄清到底什么是 AGI。
(原文:https://www.youtube.com/watch…)
欢送下载体验 OneFlow v0.8.0 最新版本 :https://github.com/Oneflow-In…