最近半导体领域发生了一件备受关注的收购案:英伟达击败英特尔,以69亿美金收购以色列晶元厂商Mellanox。英伟达是全球知名的GPU制造商,带动也得益于AI的蓬勃发展,已经成为半导体炙手可热的公司。另一方面,Mellanox以InfiniBand和乙太网产品线知名。此次收购的目的,是将英伟达的加速计算平台与Mellanox全球知名的加速网路平台结合,共同创建新一代数据中心级解决方案。英伟达葫芦里卖的什么药?GPU在数据中心加速的现状如何,优势与劣势又在何处?GPU,网路和数据中心,这三者又是如何结合起来的?

实际上,通过乙太网连接加速器已经不是什么新鲜玩意儿,微软早在2015年就开始在其云计算服务Azure中布局了通过乙太网连接的FPGA在数据中心对服务进行加速的方案Project Catapult。该方案在每台伺服器的CPU和NIC之间放置一个有自己协议栈的FPGA,FPGA之间利用伺服器之间的乙太网进行互联通信。该项目现在已经在Bing、Azure等业务上大规模的投入使用。在计算机网路系统NSDI2019上,微软发表了最新的互联系统Direct Universal Access,进一步增强了整个数据中心的资源的互联互通。

英伟达为了实现GPU互连,提出了NVLink和NVSwitch技术,基于此,英伟达在2017和2018年发布了DGX-1和DGX-2,其中DGX-2实现了16个GPU的两两互连。然而这种方案在数据中心层面的可扩放性(scalability)十分有限。首先,NVSwitch作为单板交换机,带宽的可上升空间已经不大,可以预测通过NVLink+NVSwitch方案进行互连的GPU数量不会再有大幅上涨。此外,由于Intel并不买NVSwitch的帐,因此CPU成了限制GPU更大规模互连的瓶颈,这也将DGX限制在了单个主机上。(关于上面两种互连方案的细节,可参见笔者另一篇文章

曼殊:AI时代加速器互联高性能计算解决方案比较,FPGA+Ethernet VS GPU+NVSwitch?

zhuanlan.zhihu.com图标

如此看来,如果使用乙太网连接GPU,就能从根本上解决GPU在数据中心层面的可扩放性问题。然而,与FPGA不同,GPU本身作为一个加速卡的存在,是无法作为一个主机使用的,无法单独支持乙太网协议栈,直接处理网卡中的数据。也就是说GPU就无法像微软Project Catapult中的FPGA那样,绕开CPU独立作为网路中的一个节点实现互连。

非常巧妙地,英伟达使用RDMA技术解决了这个问题,RDMA协议中应用程序可以绕开CPU直接与网卡交换数据,GPU支持与网卡分享内存。这样,RDMA协议就能够使GPU通过网路,直接读取另外的GPU中的数据。通俗点说,既然GPU不能做主机,就让网卡来做主机。英伟达此次收购的Mellanox的InfiniBand是最早实现RDMA的网路协议,Mellanox与英伟达在2014年初发布了支持GPUDirect RDMA的网卡驱动程序。(GPU Direct RDMA技术细节参见阿里云栖社区

浅析GPU通信技术(下)-GPUDirect RDMA?

yq.aliyun.com
图标

综上,三种加速器互联方案的优缺点分别是

微软:FPGA+Ethernet

优点:可扩放性好,可支持的互连规模理论可以非常大。可以分布在数据中心不同主机上,可靠性高。使用乙太网互连,可直接使用数据中心的网路,不需要增加太多的额外设备,因此功耗低。

缺点:相比于使用软体,FPGA硬体开发的难度大、周期长,后期维护困难。且生态环境比GPU差

英伟达:GPU+NVLink

优点:无需硬体定制,因此系统开发难度低,NVLink和NVSwitch的带宽很大,因此系统的算力与带宽都很大

缺点:系统体积、功耗大。受制于Intel CPU,只能在单机中使用,不适合数据中心。支持NVSwitch的PowerPC的生态环境也远不如Intel

英伟达:GPUDirectRDMA

优点:基本与FPGA+Ethernet的优点相同,且开发难度低

缺点:InfiniBand和传统TCP/IP网路的差别大,需要专用的硬体设备,价格贵

各方案优缺点比较总结如下表

综上,GPUDirectRDMA方案结合了GPU良好的生态环境、开发友好度,和网路连接带来的高可扩放性,英伟达在数据中心中的应用未来可期。另一边,微软也在积极解决其FPGA方案的种种问题,微软NSDI2019上发表的DUA,可以使FPGA通过统一的编程介面访问数据中心中所有的资源。

谷歌: How about ASIC?

Google 2018年发布的TPUv3Pod,算力达到了惊人的100PFLOPs,在被问及TPUv3Pod是如何进行互连的时候,Google Could TPU的Zak Stone的回答是:The only thing I can tell you is that we solved this by ourselves. Each TPU node has enough bandwidth talk to others.」 在被问到TPU Pod是否用自己的专用网路时,得到的回答是「From my understanding, yes.」(参见cloud.tencent.com/devel。 应该可以这样说,若想在云端获得某种特定应用的超高算力,ASIC+乙太网应该是现在可以看到的最优解决方案,而国内外的厂商究竟谁有这个技术积累、资金和动机做这件事,想必读者们也各自心中有答案。


推荐阅读:
相关文章