AI集群通信中的软硬件介绍

计算机网络通信中最重要两个衡量指标主要是 带宽 和 延迟。分布式训练中需要传输大量的网络模型参数,网络通信至关重要。

AI集群通信实现方式

AI集群是由多台包含CPU、内存、GPU的服务器组成,需要考虑机器内通信和机器间通信。

机器内通信通常包括共享内存、PCIe、NVLink等方式,机器间主要通过TCP/IP网络和RDMA网络(直连模式)。

 

机器内通信

同一机器内:

  • CPU之间可以通过共享内存来实现
  • CPU和GPU 可以通过PCIE\NVLink
  • GPU之间,可以通过NVLink直连

 

机器间通信

机器间通信,主要通过TCP/IP网络,但是用网络,需要过CPU,有延时损耗,现在最新的方方案是用RDMA直连网络。

 

通信协调硬件

 

  • GPU与GPU 通过nvlink,GPU和CPU也通过NVLink绿色线
  • CPU通过总线共享内存
  • 服务器之间,通过RDMA网卡

PCIE

 

PCIe 5.0 最高速率是32G

NVLink

Nv为了解决PCIE速度不高的问题,研发了NVLink解决方案,支持CPU和GPU互联,GPU互联。启用 NVLink 的系统中,CPU 发起的事务(如控制和配置)仍然通过 PCIe 连接。

保留 PCIe 编程模型,同时在连接带宽方面提供巨大的优势。

 

RDMA

RDMA主要特性:

• CPU Offload:无需CPU干预,远程主机CPU缓存(cache)不会被访问的内存内容所填充

• Kernel Bypass:专有 Verbs interface ,应用程序可以直接在用户态执行数据传输

• Zero Copy:每个应用程序都能直接访问集群中的设备的虚拟内存

 

我们可以通过下面的图来对比,左边蓝色是传统TCP/IP,右边是RDMA,通过直连技术可以不经过内存区域拷贝。

 

RDMA,公司用的RoCE方案。

通信协调软件

MPI

通用接口,可调用 Open-MPI, MVAPICH2, Intel MPI等。

MPI(Message Passing Interface)定义了多个原语的消息传递接口,这一接口主要被用于多进程间的通信。MPI 系统通信方式是建立在点对点通信之上。而集合通讯是建立在端到端通信的基础上,在一组进程内的通讯原语。

 

NCCL

NCCL 架构和工作流程:

NVIDIA AI 库依赖 NCCL 提供编程抽象,通过高级拓扑检测、通用路径搜索和针对 NVIDIA 架构优化的算法,针对每个平台和拓扑进行高度调整。 NCCL API 从 CPU 启动,GPU执行,在 GPU 内存之间移动或交换数据。最后利用 NVLink 聚合多个高速 NIC 的带宽。

 

Pytorch中,MPI和NCCL 对比,MPI主要是CPU,NCCL是GPU:

 

总结

硬件通过PCIe、NVLink、RDMA来针对不同场景实现硬件通信,软件主要是MPI和NCCL。

参考

DeepLearningSystem/03.communication.pdf at main · chenzomi12/DeepLearningSystem (github.com)

posted @ 2023-02-15 18:06  JadePeng  阅读(308)  评论(0编辑  收藏  举报