机器之心报道编辑:CZ、JennyHuang、李泽南、吴攀、蒋思源
当地时间5月8-11日,英伟达在加州圣何塞举行了年的GPU技术大会(GTC)。机器之心作为本次大会的特邀媒体,也来到了现场。昨天,英伟达CEO黄仁勋在大会上正式发布了目前最先进的加速器NVIDIATeslaV。之后,英伟达开发博客又更新了一篇深度解读文章,剖析了TeslaV背后的新一代架构Volta,其在提供了更好的高性能计算支持之外,还增加了专门为深度学习所设计的TensorCore。机器之心在本文中对这篇博客文章进行了编译介绍,同时还在文中加入了一些机器之心对英伟达应用深度学习研究副总裁BryanCatanzaro的采访内容。
在GPU技术大会(GTC)上,英伟达CEO黄仁勋正式发布了新一代处理器架构Volta,以及使用新架构的第一款设备——适用于深度学习任务的加速卡TeslaV,英伟达将这块显卡称为全球最先进的数据中心GPU。
从语音识别到训练虚拟助理进行自然交流,从探测车道线到让汽车完全自动驾驶,数据科学家们在技术的发展过程中正一步步攀登人工智能的新高度。而解决这些日益复杂的问题则需要日益复杂的深度学习模型,为深度学习提供强大的计算硬件是英伟达努力的目标。
图1.TeslaV加速卡内含VoltaGVGPU,以及SXM2FormFactor。
高性能计算设备(HPC)是现代科学的基础,从预测天气、发明新药到寻找新能源,大型计算系统能为我们模拟和预测世界的变化。这也是英伟达在新一代GPU架构推出时选择优先发布企业级计算卡的原因。黄仁勋在发布会上表示,全新的TeslaV专为HPC和AI的融合而设计,同时采用了具有突破性的新技术。英伟达的新架构能否让GPU再上一个台阶?让我们随着TeslaV一探究竟。
揭秘新架构与GPU特性
Volta并不是Pascal的升级,而是一个全新的架构!——NVIDIA应用深度学习研究副总裁BryanCatanzaro。
在NvdiaGTC第三天下午,NvidiaCUDA软件首席工程师LukeDurant与Nvidia首席构架师OliverGiroux进行了一个名为InsideVolta的技术讲座,解读了Volta构架的设计。此后机器之心作为不到五家受邀参与Volta深度采访的亚洲媒体之一,成为了第一批深入了解Volta与TeslaV的机构。
英伟达认为,硬件的可编程性正在驱动深度学习的发展。谈到Volta对人工智能带来的影响时,英伟达副总裁BryanCatanzaro表示,「Volta提供大量的FLOP,基于Volta,人们就可以使用需要更多FLOP的模型。如今很多流行的模型都需要很大的计算资源,例如卷积,我个人认为架构上将会有一定的转向,既更多地来利用更多地利用我们已有的大量的FLOP。当然,构架的进化也会经过一个『达尔文』过程,最终最适应的会成为终极形态」
在本次GTC中,我们没有看到联网移动端芯片的身影或为移动端人工智能计算性能提升进行的构架设计,关于这个问题,Volta设计团队表示,对于可以联网的设备,通过CPU结合GPU的混合云进行大量计算是必然趋势;而对于无法联网的应用场景,SOC是更好的选择。
TeslaV:人工智能计算和HPC的助推器
毫无疑问,全新的英伟达TeslaV加速器是世界上性能最高的并行处理器,旨在为计算量最大的HPC设备、人工智能和图形工作任务提供支持。它的核心GVGPU包含亿个晶体管,而芯片面积为前所未有的平方毫米(TeslaGP为平方毫米)。它采用了台积电(TSMC)的12nmFFN专属工艺打造。与其前身GPGPU及其他Pascal架构的显卡相比,GV提供了更强的计算性能,并增加了许多新功能。它进一步减小了GPU编程和应用程序移植难度,也通过制程的升级提高了GPU资源利用率。另外,GV也是一款能效极高的处理器,其在单位功耗的性能上表现卓越。图2给出了ResNet-50深度神经网络在TeslaV上进行训练的性能表现。
对于12nm制程的选择(AMD准备在年推出使用7nm制程的显卡),英伟达的首席工程师表示他们已在功耗和性能之间做出了最佳选择。
图2.TeslaV在ResNet-50深度神经网络训练任务中的速度比TeslaP快2.4倍。如果每张图像的目标延迟是7ms,那么TeslaV使用ResNet-50深度神经网络进行推理的速度比P快3.7倍(参与测试的V为原型卡)。
TeslaV的主要计算特征包括:
为深度学习优化过的新型流式多处理器(SM)架构。Volta对GPU核心的SM处理器架构进行了重要的重新设计。新的VoltaSM架构比前代Pascal设计能效高50%,在同样的功率范围下FP32和FP64性能有重大提升。新的TensorCore是专门为深度学习设计的,为浮点运算速度带来了12倍的提升。有了独立的、并行的整型和浮点型数据通路,VoltaSM在负载上也更高效,混合了计算与地址运算。Volta新的独立线程调度能力使得并行线程之间的细粒度同步协同(finer-grainsynchronizationandcooperation)成为可能。最终,新型的L1DataCache与SharedMemory子系统的结合也能极大地提升性能,同时还简化了编程。第二代NVLink。第二代英伟达NVLink高速互连技术能提供更高的带宽、更多连接,同时还改进了多GPU和多GPU/CPU系统配置的延展性。HBM2显存:更快、更高效。Volta高度调整的16GBHBM2显存子系统提供了GB/s的峰值显存带宽。来自三星的新一代HBM2显存和Volta中的新一代显存控制器的组合实现的显存带宽是PascalGP的1.5倍,而且在许多负载上的显存带宽效率更高。Volta多处理服务。Volta多服务处理(MPS:Multi-ProcessService)是VoltaGV的一项新特性,能够为CUDAMPS服务器的关键组件提供硬件加速,从而能为共享该GPU的多个计算应用提供更高的性能、隔离和更好的服务质量(QoS)。VoltaMPS还将MPS客户端的最大数量从Pascal的16提升到了Volta的48。增强统一存储和地址转换服务。VoltaGV中的GV统一存储(GVUnifiedMemory)技术包括新型访问计数器,让访问网页最频繁的处理器能更准确的迁移存储页。协作组(CooperativeGroups)和新的CooperativeLaunchAPI。协作组是CUDA9中新的编程模型,用来组织通信线程组。Volta增加了对新型同步模式的支持。最大性能和最大效率模式。在最大性能模式下,TeslaV加速器将不受限制的把TDP(热设计功耗)水平提高到W,从而加速需要最快计算速度和最高数据吞吐的应用。最大效率模式下,数据中心管理员可以调整TeslaV加速器的功率使用,从而用单位功耗下最优的性能进行运算。为Volta优化过的软件。Caffe2、MXNet、CNTK、TensorFlow等这样的深度学习框架的新版本,能够利用Volta的性能来获得更快的训练速度、更高的多节点训练性能。GPU加速库(比如cuDNN、cuBLAS等)的Volta优化版本利用VoltaGV架构的新特性能为深度学习和高性能计算应用提供更高的性能。
GVGPU硬件架构
装备有VoltaGVGPU的英伟达TeslaV加速器是目前世界上速度最快的并行计算处理器。GV的硬件创新十分显著,除了为HPC系统和应用提供远比现在更强的计算能力(如图3所示)之外,它还可以大大加快深度学习算法和框架的运行速度。
图3:在各种HPC任务中,TeslaV平均比TeslaP快1.5倍。(该性能基于TeslaV原型卡)
TeslaV可以提供业界领先的浮点和整型计算性能。峰值计算速度(基于GPUBoost时钟频率):
双精度浮点(FP64)运算性能:7.5TFLOP/s;单精度(FP32)运算性能:15TFLOP/s;混合精度矩阵乘法和累加:TensorTFLOP/s。
与前一代PascalGPGPU类似,GVGPU由多个图形处理集群(GraphicsProcessingCluster,GPC)、纹理处理集群(TextureProcessingCluster,TPC)、流式多处理器(StreamingMultiprocessor,SM)以及内存控制器组成。一个完整的GVGPU由6个GPC、84个VoltaSM、42个TPC(每个TPC包含了2个SM)和8个位的内存控制器(共位)。每个SM有64个FP32核、64个INT32核、32个FP64核与8个全新的TensorCore。同时,每个SM也包含了4个纹理处理单元。
图4:带有84个SM单元的完整VoltaGV。
加上84个SM,一个完整的GVGPU总共有个FP32核、个INT32核、个FP64核、个TensorCore与个纹理单元。每块内存控制器都连接了一个KB的2级缓存,每个HBM2DRAM堆栈都由一对内存控制器控制。一个完整的GVGPU包括了总共KB的二级缓存。图4展示了一个带有84个SM单元的完整GVGPU(不同产品可以使用不同的GV配置)。TeslaV加速器使用了80个SM单元。
表1.TeslaV与过去五年历代Tesla加速器的参数对比
VoltaSM(流式多处理器)
为提供更高的性能而设计的架构,VoltaSM比过去的SM设计有更低的指令与缓存延迟,也包括加速深度学习应用的新特性。
主要特性包括:
为深度学习矩阵计算建立的新型混合精度FP16/FP32TensorCore。为更高的性能、更低的延迟而增强的L1数据缓存。为更简单的解码而改进的指令集,并减少了指令延迟。更高的速度和能效。
图5:VoltaGVSM
TensorCore:深度学习专用核心
新的TensorCore是VoltaGV最重要的特征,有助于提高训练神经网络所需的性能。TeslaV的TensorCore能够为训练、推理应用的提供TensorTFLOPS。相比于在PFP32上,在TeslaV上进行深度学习训练有12倍的峰值TFLOPS提升。而在深度学习推理能力上,相比于PFP16运算,有了6倍的提升。TeslaVGPU包含个TensorCore:每个流式多处理器(SM)包含8个。
TensorCore非常省电,电力消耗大有可能将不再是深度学习的一大瓶颈。BryanCatanzaro表示:「通过底层数学计算的优化,TensorCore相较之前的构架要省电很多。深度学习的一个重要的限制是energyefficiency,TensorCore在解决这个问题的方面相当突出。」
矩阵-矩阵乘法运算(BLASGEMM)是神经网络训练和推理的核心,被用来获得输入数据和权重的大型矩阵的乘积。如下图6所示,相比于基于Pascal的GP,TeslaV中的TensorCore把这些运算的性能提升了至少9倍。
图6:TeslaVTensorCore和CUDA9对GEMM运算有了9倍的性能提升。(在TeslaV样机上使用预发布的CUDA9软件进行的测试)
TensorCore和与它们关联的数据通道进行了精心的定制,从而极大地提升了极小区域和能量成本下浮点计算的吞吐量。它也广泛地使用了时钟门控来尽可能节能。
每个TensorCore包含一个4x4x4的矩阵处理阵列来完成D=AxB+C的运算,其中A、B、C、D是4×4的矩阵,如下图7中所示。矩阵相乘的输入A和B是FP16矩阵,相加矩阵C和D可能是FP16矩阵或FP32矩阵。
图7:TensorCore的4x4x4矩阵乘法与累加。
每个TensorCore每个时钟可执行64次浮点FMA混合精度运算(FP16乘法与FP32累加),一个SM单元中的8个TensorCore每个时钟可执行共计次浮点运算。相比于使用标准FP32计算的PascalGP而言,单个SM下的每个深度学习应用的吞吐量提升了8倍,所以这最终使得VoltaVGPU相比于PascalPGPU的吞吐量一共提升了12倍。TensorCore在与FP32累加结合后的FP16输入数据之上操作。FP16的乘法得到了一个全精度结果,该结果在FP32和其他给定的4x4x4矩阵乘法点积的乘积运算之中进行累加。如图8所示。
图8.VoltaGVTensorCore流程图
在程序执行期间,多个TensorCore通过一组warp线程的执行而同时使用。warp内的线程提供了TensorCore来处理大型16×16×16矩阵运算。CUDA将这些操作作为Warp-Level矩阵运算在CUDAC++API中公开。这些C++接口提供了专门化的矩阵负载,如矩阵乘法和累加,矩阵存储操作可以有效地利用CUDAC++程序中的TensorCore。
除CUDAC++接口可直接编程TensorCore外,CUDA9cuBLAS和cuDNN库还包含了使用TensorCore开发深度学习应用和框架的新库接口。英伟达已经和许多流行的深度学习框架(如Caffe2和MXNet)合作以使用TensorCore在Volta架构的GPU系统上进行深度学习研究。英伟达将继续与其他框架开发人员合作以便在整个深度学习生态系统更广泛地使用TensorCore。
增强的L1数据缓存和共享显存
VoltaSM的L1数据缓存和共享显存子系统的组合能显著提高性能,同时也简化了编程并减少了达到或接近峰值应用性能所需的时间成本。
在共享显存块中进行集成可确保VoltaGVL1缓存具有比过去英伟达GPU中的L1高速缓存更低的延迟和更高的带宽。L1Volta作为流式数据的高吞吐量导管(conduit),同时为经常复用的数据提供高带宽和低延迟访问,这两个性能都是目前最好的。英伟达表示,这一特性是Volta独有的,其提供比以往更强大的性能。
图9.在Volta上,这些代码在没有使用共享显存的情况下只有7%的性能损失,而Pascal的性能下降了30%。虽然共享显存仍然是最佳选择,但新VoltaL1设计使程序员能够以更少的编程工作而快速获得足够出色的性能。
表2.全新GV与此前各代架构GPU的形式比较,GVGPU支持全新的ComputeCapability7.0。
独立的线程调配
Volta架构旨在设计为比以前的GPU更容易编程,令用户能在更复杂和多样的应用程序上高效地工作。VoltaGV是第一款支持独立线程调配的GPU,其在并行线程指令中可以实现细粒度(finer-grain)的同步和协作。Volta主要的设计目标是减少在GPU中运行指令所需的工作量,并在线程合作中实现更大的灵活度,这样从而为细粒度并行算法提供更高的效率。
英伟达同时也展示了他们如何对SIMT(单指令多线程)做出重大改进以推进Volta架构。32线程内单个独立的CUDA核现在只有有限的自主性;线程现在可以在一个细粒度层面上进行同步,并且仍然处于SIMT范式下,所以这就意味着更高的整体效率。更重要的是,独立的线程现在可以放弃再重新安排在一起。这就意味着英伟达的GPU有一定数量的调度硬件(schedulinghardware)。
图10:Pascal和早期的英伟达GPU在SIMTwarp执行模式下的线程调配。大写字母代表指令伪代码中的语句。在一个warp中不同的分支是序列化的,这样在分支一边的所有语句一起执行以在另一边语句执行前完成。在else语句后,warp中的线程通常会重新映射。
图11:Volta(下方)独立线程调配架构图与Pascal和早期的架构(上方)相比较。Volta会维持每个线程调配的资源,就像程序计数器(PC)和调用堆栈(S)那样,而早期的架构以每个warp为单位维持。
图12:Volta独立线程调配令其可以交叉执行发散分支(divergentbranches)的语句。这就允许执行细粒度并行算法,而warp内的线程也就能同步和通信。
图13:程序可以使用显式同步来重新令warp中的线程收敛
图14:具有细粒度锁(fine-grainedlocks)的双向链表。在插入结点B到链表(右)前,需要获取每一个结点锁(左)
总结
根据目前公布的数字,TeslaV可以提供15TFLOPS的FP32、30TFLOPSFP16、7.5TFLOPSFP64和高达TFLOPS的专用Tensor运算性能。由于MHz的峰值运算速度,它相比前一代的CUDA理论FLOPS数据增长了42%。TeslaV配备了16G的HBM2显存,它的内存时钟速度从1.4Gbps提升至1.75Gbps,提升了25%。
在GTC大会上,黄仁勋表示英伟达在研发TeslaGV的过程中投入了30亿美元的巨资,这是迄今为止英伟达投资最大的单个项目。第一块量产型加速卡预计将在今年第三季度通过新一代超算模块DGX-1V的形式进入市场,售价不菲(DGX-1V售价,美元,内含8块TeslaV,换算下来每块V约为18,美元)。但因为其强大的计算能力,届时必将出现不少买家。