分享

浅谈NVIDIA NVLink网络

 暖暖81tl56m9sz 2023-06-08 发布于四川

请务必先读声明:

Statement:
This views andopinions expressed in this account are those of my own and do not represent those of my employer.本文所有观点仅代表个人,不代表雇主.
The information covered in this article is public information on the Internet and does not contain any commercial or technical secrets. I will give reference links after the article.本文涉及的信息均是互联网上的公开信息,不包含任何商业或技术机密。我将在文章后给出参考链接.

本文主要内容翻译自下面几篇文档,并结合一些个人的理解:

https://developer./blog/upgrading-multi-gpu-interconnectivity-with-the-third-generation-nvidia-nvswitch/

https://www./nvidia-nvlink4-nvswitch-at-hot-chips-34/

https://www./nvidia-nvswitch-details-at-hot-chips-30/

https://www./en-us/on-demand/session/gtcspring22-s42663/

https://www./en-us/on-demand/session/gtcspring22-s41784/

引言

随着AI和HPC技术的迅猛发展,对GPU的高速互联和可扩展性提出了更高的要求,一个高带宽、低延迟、高性能的互联技术对于整体AI计算性能的提升至关重要。今年4月份老黄在GTC大会上提出了第三代NVIDIA NVSwitch和第四代NVLink的技术,为最新发布的H100 GPU提供了一个比A100 GPU更加高速的点到点互联解决方案,这种网络具备了NVLink网络的雏形。

第三代NVSwitch芯片简称NVSwitch3,不仅可以用来在服务器内部连接各个GPU卡,同时还可以将GPU服务器扩展外连来建立一个独立完整的GPU高速集群。同时在NVSwitch芯片内通过硬件加速器来支持组播报文加速和引入SHARP(Scalable Hierarchical Aggregation and Reduction Protocol),这是之前只有IB交换机具备的一个重要feature,主要用来加速和优化All-Reduce的AI计算性能。
同时通过第三代NVSwitch芯片组成的物理交换机,可以建立一个最多256个H100 GPU卡的集群,整网提供57.6TB/s的all-to-all带宽。它所采用的NVLink4.0技术规范可以大大优化GPU的性能和扩展性,比如GPU架构的并行进程块结构与NVLink的并行结构遥相呼应,同时NVLink的接口对于GPU L2缓存的数据交换也有进一步优化。

图片

NVLink

                      图片

NVLink是为了解决服务器内部GPU之间点到点通讯的一种协议,传统的PCIe Switch的速率如下,目前最新的PCIE5.0也只是每个lane 32Gbps的带宽,基本满足不了GPU之间的通讯带宽要求,而有了NVLink技术,GPU之间可以直接在服务器内部点到点高速互联,而不需要通过PCIe switch通讯. 第四代NVLink的每一个lane具有112Gbps带宽,要比PCIe Gen5一个lane带宽高出3倍。

图片

NVLink主要目的是为GPU互联提供一个高速和点对点的网络,对比传统网络不会有例如端到端报文重传,自适应路由,报文重组等开销。极度简化的NVLink接口可以为CUDA提供从会话层,表示层到应用层的加速,从而进一步减少因为通讯带来的网络开销。

图片

图片

如上图所示,我们可以看到NVLink是随着GPU架构的演进而发展的,从第一代P100的NVLink1到现在针对H100的NVLink4。NVLink3可同时支持50G NRZ 和 56G PAM4,而NVLink4首次引入112G PAM4 Serdes,可以提供900GB/s的双向带宽,比上一代NVLink3的600GB/s提升1.5倍。

那么900GB/s是如何算出来的呢?每一个H100 GPU通过18个NVLink4连接到内部NVSwitch3芯片, 而每一个NVLink4连接实际是两条lanes,每个lane是112G PAM4, 这样一个NVLink4单向就是224Gbps, 或者可以说是25GB/s(注意这里从bits变成了Byte)单向带宽,50GB/s双向带宽,18个NVLink4总共是900GB/s双向带宽。

NVSwitch芯片

图片

NVSwitch芯片是一种类似交换机ASIC的物理芯片,通过NVLink接口可以将多个GPU高速互联到一起,从而提升服务器内部多个GPU之间的通讯效率和带宽。在P100的NVLink1时代还没有NVSwitch芯片,各个GPU之间相当于一个环形连接,造成跨NUMA时候GPU之间不能完全做到点对点。从V100的NVLink2开始引入了NVSwitch1芯片,而到了A100则引入了NVSwitch2芯片。接下来就是为了H100准备的NVSwith3芯片

图片

图片

该芯片采用台积电4N工艺,在294平方毫米的面积内具有251亿个晶体管。整个芯片大小50mm*50mm,并且内置一个SHARP的控制器可同时管理128个SHARP并行组,具有内嵌SHARP的ALU逻辑处理单元,内置SRAM内存也支持SHARP的计算。内嵌ALU可帮助NVSwitch提供FP32的400GFLOPS计算吞吐,并且支持FP16,FP32,FP64和BF16等精度计算。
PHY电路接口可以兼容400Gbps以太网或者NDR IB连接,每一个cage可以提供4个NVLink4的OSFP光模块,同时支持FEC校验。该芯片还提供安全功能,可在NVLink网络中提供partition分区来划分子网,提供类似IB的telemetry遥测监控技术。
NVSwitch3芯片可提供64个NVLink4接口,前面说到每个NVLink4具有2个lanes,也就是200Gbps单向带宽,这样一块NVSwitch3芯片共可以提供64*200Gbps=12.8Tbps单向带宽或者说3.2TB/s的双向带宽。

图片

NVSwitch3芯片首次整个SHARP功能,通过硬件来对all reduce时候的多个GPU单元的计算结果进行汇总和更新,从而减少网络报文数量,提升计算性能。

NVLink服务器

图片

NVLink服务器指的是采用NVLink和NVSwitch技术来互联GPU的服务器,一般是英伟达自己出的DGX系列服务器,或者采用类似架构的OEM HGX服务器。

          图片

采用P100 GPU的DGX-1服务器内并没有引入NVSwitch, 所有8个GPU的互联都是通过NVLink1连接,每个P100有4个NVLink1连接。在NVIDIA V100 GPU架构时候引入了NVSwitch1和NVLink2,提供一台服务器内的多个GPU之间的高带宽和any-to-any连接。在NVIDIA A100 GPU时候推出了NVSwitch2和NVLink3。

     图片

在上面DGX A100服务器内部图看到,GPU与CPU的连接通过PCIe Switch, 而8块GPU之间连接主要通过6个NVSwitch2芯片互联, 每个GPU通过12个NVlink3连接到NVSwitch2芯片, 每个NVlink3是25GB单向带宽,这样可以为一个GPU提供总共12*25GB=300GB/s单向带宽或者说600GB/s双向带宽。
再看看DGX H100服务器参数:

图片

  • 8x NVIDIA H100 Tensor Core GPUs with 640GB of aggregate GPU memory

  • 4x third-generation NVIDIA NVSwitch chips

  • 18x NVLink Network OSFPs

  • 3.6 TB/s of full-duplex NVLink Network bandwidth provided by 72 NVLinks

  • 8x NVIDIA ConnectX-7 Ethernet/InfiniBand ports

  • 2x dual-port BlueField-3 DPUs

  • Dual Sapphire Rapids CPUs

  • Support for PCIe Gen 5 

图片

图片

到了H100 GPU时候产生了第三代NVSwitch和第四代NVLink技术,可提供单个H100 GPU 450GB/s的单向带宽,同时还引入了一个外置的1U盒式NVLink Switch交换机,用来为多台GPU服务器提供外部的高速通讯。
在DGX H100内部共有8个H100 GPU,每一个H100都同时通过18个NVLink(5,4,4,5)连接着4个NVSwitch3芯片,GPU之间的流量负载分担到4个交换平面,从而达到GPU内部all-to-all流量。每个内部NVSwitch3芯片对外连接的NVLink做2:1的收敛比,这样设计主要是考虑服务器之间连接带宽的复杂性和成本上的考虑。

NVSwitch交换机

图片

NVLlink交换机是今年刚刚发布,并且是为了H100 Superpod互联而诞生的产品,采用1U 大小共32个OSFP口的设计,每个OSFP由8个112G PAM4的lanes组成,每台交换机内置2个NVSwitch3芯片,每块NVSwitch3是64个NVLink4, 这样两块芯片最大可以提供128个NVLink4接口, 提供128*400Gbps =51.2TBps 单向带宽,或者说6.4TB/s的双向带宽。NVLink交换机支持带外管理口,DAC线缆,和支持特定firmware的AOC和OSFP线缆。这种OSPF模块目前还没有公开信息,外观猜测应该是类似下面NDR的OSFP形态,两个MPO口各自连接一个400G,或者直接一个800G口连接24芯的MPO线。

图片图片 

NVLink 网络

通过NVSwitch物理交换机我们可以将多个NVlink的GPU服务器组成一个超大Fabric网络,也就是NVLink网络,这个网络里主要是为了解决GPU之间的高速通讯带宽和效率问题,并不包括CPU之间的计算网络和存储网络。
在没有NVLink网络的时代,每一台服务器内部为GPU分配本地地址空间,然后通过NVLink互相通讯。在NVLink网络里,每台服务器本身自己有一套独立的地址空间,用来在NVLink网络中为GPU提供数据传输,隔离和安全保障。当系统启动时候,NVLink网络通过软件API来自动建立连接,并且可以在运行过程中任意更改地址。

图片

    下图对比了NVLink网络和传统以太网之间的对比,可以看到通过NVlink,NVSwitch芯片和NVSwitch交换机可以组成一个独立于IP以太网之外并且专门为GPU服务的NVLink网络。

图片

DGX H100 SuperPOD

图片

Superpod由8个机架组成,每个机架有4台DGX H100服务器,总共32台服务器,共256块H100 GPU卡,可提供 1 exaFLOP(一百亿亿次)的FP8精度稀疏AI算力。

这个Superpod内的NVLink网络可以为256块GPU提供总共57.6TB/s all-to-all双向带宽,同时32台DGX H100服务器内的CX7可以与IB交换机互联,提供25.6TB/s的双向带宽,这样可以在一个POD内使用或者连接多个SuperPOD。
目前英伟达公布的DGX H100 Superpod组网方案都比较琐碎,笔者根据理解画出如下草图:

图片

NVS就是前面提到的NVSwitch3芯片,L2NVS就是前面提到的NVSwitch物理交换机。每个DGX H100内的一个GPU向北伸出18个NVLink4连接共18*50GB=900GB/s双向带宽,这18个NVLink4以5,4,4,5四组形式分别连接到4个板载的NVSwitch3的芯片上。这样针对8块GPU每个NVS芯片南向就连接了40,32,32,40共114根NVLink4,然后每个NVS芯片做2:1的收敛,北向以4,4,4,4四组形式分别连接到外置的18台L2NVS,也就是我们前面提到的NVSwitch 1U交换机,而这些交换机是以5,4,4,5的形式分成了4组,这样一个板载NVS芯片北向一共是20,16,16,20共72个NVLink4,而南向是114根NVLlink4,形成了2:1的收敛比。这里每一个NVLink4是2个112G PAM4 lanes组成,所以每4个NVLink链路就需要一对800G OSFP的模块来端到端连接。这样整张图的上半部分我们可以看到组成了一个NVlink网络的GPU all to all互联的高速网络。

图片

GPU与CPU的互联是通过CX7网卡内的PCIe GEN5 Switch来连接。DGX H100内的CX7网卡并不是像之前DGX A100的8块独立CX6网卡的形式,而是以网卡芯片的形式做成2块板卡来插入服务器,每4个CX7芯片组成一块Cedar的板卡并且对外输出2个800G OSFP口,8块CX7网卡芯片组成2块Cedar板卡,并且出来共4个OSFP 800G口,这样800Gbps*4*2=800GB/s双向带宽。这里的CX7网卡既可以是以太形式跑RoCE,也可以跑在NDR IB网路中,如下图4个H100的Superpod总共1024个GPU可以用NDR IB的胖树拓扑来搭建。

图片

每个DGX H100内还有两块BlueField3来连接存储网络。

IB网络 VS NVLink网络

那么H100 GPU的连接采用NVLink网络后,会比A100的IB网络快多少呢?下面是DGX A100 256 POD 与DGX H100 256 POD的一个带宽的对比:

图片

Bisection是all-to-all场景中,每个GPU需要向其它所有GPU同时发送数据的一个性能指标。它一般计算的是网络中一半节点向另外一半节点发送数据时的网络带宽,一般是测量1:1的无阻塞流量。

1个DGX A100内部:8/2*600GB/s=2400GB/s
32个DGX A100内部,总共256块A100GPU,每台服务器通过8张200Gbps HDR网卡连接,同时TOR的交换机应该是4:1的收敛比:
256/2/4*200GB/s=6400GB/s
1个DGX H100内部:8/2*900GB/s=3600GB/s
32个DGX H100内部,网络收敛比是2:1,所以:
256/2/2*900GB/s=57600GB/s(也就是前文提到的57.6TB/s由来)
单台DGX的Bisection可提升1.5倍带宽和3倍双向带宽,32 DGX Bisection可提升9倍带宽和4.5倍双向带宽。

图片

如上图,对于训练一个14TB 嵌入表的推荐系统跑在all2all的数据模型下,NVLink的H100要比跑在IB的H100具有更高的性能。

NCCL
下面是公开的NCCL跑在服务器内多GPU和多节点GPU的allreduce和alltoall带宽结果对比,通过NVLink4和NVSwitch3的优化,使得H100无论是内部多卡还是外部多卡都能做到带宽基本一致。

图片

图片

总结

图片

NVlink和NVSwitch技术是为了满足多GPU高速,低延迟点到点和点到多点通讯的需求而产生的,它伴随着一代代GPU架构的变化也在不断创新。自从收购迈络思后,英伟达也开始将NVLink技术和IB技术相结合,推出新一代具有SHARP功能的NVSwitch芯片和交换机,针对GPU服务器外联网络进行优化。对于目前最多支持256个GPU的NVLink网络规模仅仅是开始,相信未来这种NVlink网络规模还会进一步发展和提升,也许会创造出一个同时适用于AI计算、CPU计算、存储等多个网络融合的超算集群。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多