计算机网络通信中最重要两个衡量指标主要是 带宽 和 延迟。分布式训练中需要传输大量的网络模型参数,网络通信至关重要。
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)
标签:AI,NVLink,通信,MPI,RDMA,集群,软硬件,GPU,CPU From: https://www.cnblogs.com/xiaoqi/p/17124203.html