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)
相关文章
- Lua面向对象编程的基本原理示例,你明白几分?
- 企业数据战略的七个发展趋势
- GNOME 的研究报告称 90% 以上的系统都安装了 Flatpak
- Restful、SOAP、RPC、SOA到底有什么区别,你知道了吗?
- Go 语言怎么处理三方接口返回数据?
- Colorblind Filters:帮助色盲用户的 GNOME 扩展
- 谈谈阻碍数据建模的五大借口
- 2023 年值得期待的11个新发行版
- 大数据世界中的新技术
- Windows 11 学院:如何在 Windows 11 Build 25281 上启用新版音量控件
- 「React 进阶」react-router v6 通关指南
- Neo4j宣布下一代图数据平台Neo4j 5上线
- 观远数据荣膺Gartner2022中国分析平台Cool Vendor
- 完整指南:使用 VirtualBox 在 Windows 上安装 Ubuntu
- 32 图 | 手摸手 Spring Cloud Gateway + JWT 实现登录认证
- 如何从边缘分析中推动业务价值
- EndeavourOS:你对完美的 Arch 发行版的搜寻到此为止
- 谈谈如何跨越数据架构的漩涡
- 在 Linux 上用 zram 替代传统交换空间
- 这才是真正的数据分析项目,而不是爬表