首页|傲世皇朝注册|平台
首页|傲世皇朝注册|平台
全站搜索
 
 
新闻详情
 
当前位置
AI 集群基础设施 InfiniBand 详解(万字长文)
作者:管理员    发布于:2024-07-07 04:28    文字:【】【】【
       

  AI 集群基础设施 InfiniBand 详解(万字长文)!GPU在高性能计算和深度学习加速中扮演着非常重要的角色, GPU的强大的并行计算能力,大大提升了运算性能。随着运算数据量的不断攀升,GPU间需要大量的交换数据,因此,GPU通信性能成为了非常重要的指标。

  在 AI 集群中进行分布式训练时,通信是必要环节,同时也是相比于单机训练而言多出来的系统开销。通信与计算的时间比例往往决定了分布式机器学习系统加速比的上限。

  因此,分布式机器学习的关键是设计通信机制,从而降低通信与计算的时间比例,更加高效地训练出高精度模型。

  下面给大家介绍AI集群通信的软硬件、NCLL集合通信库、InfiniBand网络通信技术协议、AI集群和AI框架中对于InfiniBand的应用。

  文章较长,建议先点赞收藏,后续再慢慢观看。另外,我撰写的大模型相关的博客及配套代码均整理放置在Github:llm-action,有需要的朋友自取。

  PCIE本质上是一种全双工的的连接总线,传输数据量的大小由通道数(lane,信道)决定的。

  通常,1个连接通道lane称为X1,每个通道lane由两对数据线组成,一对发送,一对接收,每对数据线根数据线bit数据传输。依此类推,X2就有2个lane,由8根数据线。

  不提供额外吞吐量的开销位,比如:PCIe 1x和PCIe 2x使用8b/10b编码方案,导致占用了20%(=2/10)的原始信道带宽。

  GT/s,Giga transtion per second (千兆传输/秒),即每一秒内传输的次数,重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。

  Gbps,Giga Bits per second (千兆位/秒)。GT/s和Gbps之间不存在成比例的换算关系。

  PCIe 2.0协议支持5.0GT/s,即每一条Lane上支持每秒钟传输5G个Bit,但这并不意味着PCIe 2.0协议的每一条Lane支持5Gbps的速率。为什么这么说呢,因为PCIe 2.0的物理层协议中使用的是8b/10b编码方案,即每传输8个Bit,需要发送10个Bit,这多出来的2Bit并不是对上层有意义的信息。那么,PCIe 2.0协议的每一条Lane支持

  PCIE体系架构一般包含根组件RC(root-complex),交换器switch,终端设备EP(endpoint)等类型的PCIE设备组成。RC在总线架构中只有一个,用于处理器和内存子系统与I/O设备之间的连接,而switch的功能通常是以软件形式提供的,它包括两个或更多的逻辑PCI到PCI的连接桥(PCI-PCI Bridge),以保持与现有PCI兼容。

  为此,NVIDIA推出了能够提升GPU通信性能的技术——GPUDirect P2P技术,使GPU可以通过 PCI Express 直接访问目标GPU的显存,避免了通过拷贝到CPU host memory作为中转,大大降低了数据交换的延迟,但受限于PCI Express总线协议以及拓扑结构的一些限制,无法做到更高的带宽。此后,NVIDIA 提出了 NVLink 总线协议。

  为了解决GPU之间通讯不均衡问题,NVIDIA引入NVSwitch。NVSwitch芯片是一种类似交换机的物理芯片(ASIC),通过NVLink接口可以将多个GPU高速互联到一起,可创建无缝、高带宽的多节点GPU集群,实现所有GPU在一个具有全带宽连接的集群中协同工作,从而提升服务器内部多个GPU之间的通讯效率和带宽。NVLink和NVSwitch的结合使NVIDIA得以高效地将AI性能扩展到多个GPU。

  第一代 NVSwitch于2018年发布,采用台积电 12nm FinFET 工艺制造,共有 18 个 NVLink 2.0 接口。目前 NVSwitch 已经迭代至第三代。第三代 NVSwitch 采用台积电 4N 工艺(台积电 4N 工艺专为NVIDIA定制设计,并进行了一系列优化,它与普通台积电5nm节点相比,可实现更好的电源效率与性能,并且密度有所提升)构建,每个 NVSwitch 芯片上拥有 64 个 NVLink 4.0 端口,GPU 间通信速率可达 900GB/s。

  把 PCIe 版 GPU 卡插到 PCIe 插槽上,就可以和CPU、同一个服务器上其他的GPU卡进行通信,也可以通过网卡与其他的服务器节点上的设备进行通信,这种就是PCIe的通信方式,但是这种传输速度不快。如果想要和SXM一样,有很快的传输速度,可以使用NVlink桥接器实现GPU和CPU之间的通信,但是和SXM不一样的地方就是它只能实现2块GPU卡之间的通信。即 PCIe 版只有成对的 GPU 通过 NVLink Bridge 连接,通过 PCIe 通道进行数据通信。同时,最新的PCIe网络带宽有128GB/s的限制。

  数据链路层、互联网层、传输层和应用层。数据在被另一端接收之前必须经过这四层。然后,TCP/IP 将通过以相反顺序传递层来重组数据并将其呈现给接收器。这样,您可以通过升级某些层而不是整个系统来提高数据中心的性能或安全性。

  无需使用CPU,就可以从一个主机或服务器的内存直接访问另一主机或服务器的内存。它释放了CPU去执行其应做的工作,比如:运行应用程序和处理大量数据。这既提高了带宽又降低了延迟、抖动和 CPU 消耗。

  RDMA的内核旁路机制,允许应用与网卡之间的直接数据读写,将服务器内的数据传输时延降低到1us以下。同时,RDMA的内存零拷贝机制,允许接收端直接从发送端的内存读取数据,极大的减少了CPU的负担,提升CPU的效率。

  只有Mellanox(现已被英伟达收购)和Intel(2012年,英特尔公司出资收购了QLogic的InfiniBand技术)供应商提供全套网络解决方案),后来业界厂家把RDMA移植到传统Ethernet以太网上,降低了RDMA的使用成本,推动了RDMA技术普及。在Ethernet以太网上,根据协议栈融合度的差异,分为iWARP和RoCE两种技术,而RoCE又包括RoCEv1和RoCEv2两个版本(RoCEv2的最大改进是支持IP路由)。各RDMA网络协议栈的对比,如下图所示:

  RoCE(R 傲世皇朝注册DMA over Converged Ethernet):基于以太网的 RDMA 技术,也是由 IBTA 提出。RoCE 支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,需要服务器使用 RoCE 网卡。

  在三种主流的RDMA技术中,可以划分为两大阵营。一个是IB技术,另一个是支持RDMA的以太网技术(RoCE和iWARP)。其中, IBTA力挺的技术自然是IB和RoCE, Mellanox公司是这方面的急先锋。而iWARP则是IEEE/IETF力挺的技术,主要是Chelsio公司在推进。

  网络通信技术协议。可用于计算机内部或外部的数据互连,服务器与存储系统之间直接或交换互连,以及存储系统之间的互连。

  高带宽、低延迟,因此在高性能计算项目中广泛的应用。主要用于高性能计算(HPC)、高性能集群应用服务器和高性能存储。

  DAC高速线缆,也叫直连铜缆(Direct Attach Copper cable), 它的线材是铜缆,是低压脉冲传输信号;因为材料的不同导致功耗、传输距离和价格的不同,DAC高速线缆的功耗比较低,但传输距离相对比较短,低于10米。价格方面相对便宜一些。

  AOC有源光缆(Active Optial Cable),它的线材是光缆,为光信号传输,通过电-光-电的转换;功耗相对比较大些但传输的距离可达到100米,价格方面相对高些。

  光模块的作用也是光电信号之间的转换,主要用于交换机与设备之间传输的载体,和光纤收发器的原理相同,只是光模块相比收发器更具效率性、安全性。光模块按照封装形式分类,常见的有 SFP,SFP+,XFP,SFP28,QSFP+,QSFP28 等。

  光纤收发器是将短距离的电信号和长距离的光信号进行转换的设备,一般应用在远距离传输中,通过光纤进行传输,将电信号转换成光信号发送出去,同时,在接收端将接收到的光信号转换成电信号。在很多地方也被称之为光电转换器(Fiber Converter)。光纤收发器为需要将系统从铜线升级到光纤,为缺少资金、人力或时间的用户提供了一种廉价的方案。

  波长和传输距离必须一致,比如:采用1310nm波长,传输距离应该是10KM/20KM。

  光纤跳线尾纤接口选择需注意,一般光纤收发器采用的SC口,光模块采用的是LC口。

  速率必须一样,比如:千兆收发器对应 1.25G 光模块,百兆连百兆,千兆连千兆。4、光模块类型需要采用相同类型,单纤对单纤,双纤对双纤。

  TCA(Target Channel Adapter,目标通道适配器)

  InfiniBand link(连接通道,可以是电缆或光纤,也可以是板上链路)

  通道适配器就是搭建InfiniBand通道用的。所有传输均以通道适配器开始或结束,以确保安全或在给定的QoS(服务质量)级别下工作。

  定义了在线路上如何将比特信号组成符号,然后再组成帧、数据符号以及包之间的数据填充等,详细说明了

  定义了数据包的格式以及数据包操作的协议,如:流控、 路由选择、编码、解码等。

  通过在数据包上添加一个40字节的全局的路由报头(Global Route Header, GRH)来进行路由的选择,对数据进行转发。

  在转发的过程中,路由器仅仅进行可变的CRC校验,这样就保证了端到端的数据传输的完整性

  再将数据包传送到某个指定的队列偶(Queue Pair, QP)中,并指示 QP 如何处理该数据包。

  可以看出,InfiniBand 拥有自己定义的 1-4 层格式,是一个完整的网络协议。端到端流量控制,是 InfiniBand 网络数据包发送和接收的基础,可以实现无损网络。

  子网管理器、背板管理器和性能管理器三个组件,绑定在交换机内部的必备部件。提供非常完备的管理和监控能力,如:设备自动发现、设备管理、Fabric可视化、智能分析、健康监测等等。

  :查看IB交换模块的所有端口的连接状态。此命令会将集群内所有的IB交换模块都进行列举。

  通信软件指用于分布式训练时,多个计算设备之间的集合通信。在分布式系统中,各个节点间往往存在大量的集合通信需求,而我们可以用消息传递接口 (Message Passing Interface,MPI,一套集合通信相关的接口标准)来定义一些比较底层的消息通信行为。譬如 Reduce、AllReduce、Scatter、Gather、AllGather 等。

  探测计算节点的网络设备和拓扑结构,使用算法自动调优选择一个最优的通信方式。

  Reduce:从多个sender那里接收数据,最终combine到一个节点上。

  第一种是两个GPU通过CPU然后通过QPI和另一个CPU上的两块卡相连,因此速度最慢,但也能达到5GB/s。

  第二种是两个GPU通过PCIe switch相连后再经过CPU连接,速度会稍微低一点。

  第三种是四张卡都在一个PCIe switch上,所以带宽较高,能达到10GB/s PCIe的带宽大小。

  第四种是DGX-1架构,这是Nvidia推出的深度学习平台,带宽能达到60GB/s。

  2.4.2之前,默认情况下禁用GDR读取,即发送数据时,数据先存储在 CPU 内存中,然后再发送到 InfiniBand 卡。

  自 2.4.2 起,基于 NVLink 的平台默认启用 GDR 读取。

  注意:已知在某些平台(例如:PCI-E)上,发送数据时直接从 GPU 内存读取比从 CPU 内存读取稍慢。

  GPU可以通过PCI Express直接访问目标GPU的显存,避免了通过拷贝到CPU host memory作为中转,大大降低了数据交换的延迟。

  所谓 GPUDirect RDMA,就是计算机1的GPU可以直接访问计算机2的GPU内存。而在没有这项技术之前,GPU需要先将数据从GPU内存搬移到系统内存,然后再利用RDMA传输到计算机2,计算机2的GPU还要做一次数据从系统内存到GPU内存的搬移动作。GPUDirect RDMA技术使得进一步减少了GPU通信的数据复制次数,通信延迟进一步降低。

  如果您想使用InfiniBand(IB)网络连接DGX设备,理论上,您只需使用其中一张IB卡即可。然而,这些数据流量将强行通过 CPU 之间的 QPI 链路,这对于 GPU 流量来说是一个非常慢的链路(即,它成为瓶颈)。更好的解决方案是使用两张 IB 卡,一张连接到每个 CPU。这可以是 IB0 和 IB2,或者 IB1 和 IB3,或者 IB0 和 IB3,或者 IB1 和 IB2。这将大大减少必须穿越 QPI 链路的流量。最佳性能始终是使用 IB 交换机的所有四个 IB 链路。

  不建议仅使用单个 IB 卡,但如果由于某种原因采用这种配置,则您最多可以将 36 个 DGX-1 设备连接到单个交换机。

  对于大量 DGX-1 设备,您可能必须使用两级交换网络。经典的 HPC 配置是在第一级使用 36 端口 IB 交换机(有时称为叶子(Leaf)交换机),并将它们连接到单个大型核心交换机,有时称为导向器级(director class)交换机。最大的导向器级InfiniBand交换机有648个端口。当然您也可以使用多个核心交换机,但配置会变得相当复杂。

  对于两级交换网络,如果每个 DGX-1 设备的全部 4 个 IB 卡都用于连接到 36 端换机,并且没有过度订阅,则每个交换机的 DGX-1 设备的最大数量为 4。这时每个 DGX-1 有 4 个端口进入交换机,总共 16 个端口。然后,从叶子交换机到核心交换机(导向器级交换机)有 16 个上行链路。总共 40 台 36 端口叶子交换机可连接到 648 端口核心交换机 (648/16)。这导致 160(40 * 4) 个 DGX-1 设备(共640卡)以全对分带宽连接。

  上行链路的带宽小于进入设备的带宽(换句话说,带宽性能较差)。如果我们使用从 DGX-1 设备到第一级交换机(36 端口叶交换机)的 2:1 超额订阅,则每个 DGX-1 设备仅使用两个 IB 卡连接到交换机。与使用所有四张卡相比,这会导致带宽更少,并且延迟也会更高。

  如果我们保持从叶子交换机到核心交换机的网络带宽为 1:1(换句话说,没有过度订阅,全对分带宽),那么我们可以将九个 DGX-1 设备放入一个单叶子交换机(从 DGX 设备到叶子交换机的总共 18 个端口以及到核心交换机的 18 个上行链路端口)。结果是总共36(648/18)台叶子交换机可以连接到核心交换机。这使得总共 324(36 * 9) 个 DGX-1 设备可以连接在一起。

  使用每个 DGX 设备到叶子交换机的四个 IB 连接,然后对核心交换机进行 2:1 超额订阅,甚至使用到叶子交换机的两个 IB 连接,然后对核心交换机进行 2:1 超额订阅来完成。

  想要运行多少个 SM。您至少必须运行一个 SM。最便宜的解决方案是运行单个硬件 SM。这对于 DGX-1 设备的小集群(可能是 2-4 个)来说效果很好。随着单元数量的增加,您将需要考虑同时运行两个 SM 以获得 HA(高可用性)功能。您需要 HA 的原因是集群上有更多用户,并且集群故障比少量设备故障产生的影响更大。

  利用 NVMe 的空间进一步打破内存墙的限制训练超大模型。除此之外,该方法也充分利用了InfiniBand网络进行多机通信,具体如下图所示。

相关推荐
  • 光模块的单模和多模的六大区别及区分方法
  • AI 集群基础设施 InfiniBand 详解(万字长文)
  • 中金:下半年国内光模块市场回暖优质个股迎来配置机遇
  • 光纤收发器怎么配对
  • 测量电路安装实训报告范文
  • 千兆收发器价格
  • 请问图示光纤收发器的单位为什么是对是需要乘以2吗
  • 电光纤收发器的工作原理介绍
  • 光纤CAN总线通信技术研究
  • 海康威视光纤收发器
  • 脚注信息
    友情链接: