惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
IT之家
IT之家
博客园 - 聂微东
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
美团技术团队
S
Secure Thoughts
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
腾讯CDC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
雷峰网
雷峰网
B
Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
T
Tailwind CSS Blog
月光博客
月光博客
Simon Willison's Weblog
Simon Willison's Weblog
Hacker News: Ask HN
Hacker News: Ask HN
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
S
Security @ Cisco Blogs
Jina AI
Jina AI
Engineering at Meta
Engineering at Meta
S
Security Affairs
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
Tor Project blog
O
OpenAI News
L
Lohrmann on Cybersecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
AI 芯片高速互连方案
微信公众号 · 2024-03-19 · via 陈少文的网站

最近在研习模型训练相关的基础设施,发现 AI 芯片互连拓扑决定着训练集群任务的调度和资源分配,因此花了一点时间整理了一下常见的 AI 芯片互连方案。

1. 点对点互连

传统的 PCIe 系统下, AI 芯片与 AI 芯片之间的数据传输是通过 PCIe 传输,无法满足大规模数据传输的要求。

NVLink 是同主机内不同 GPU 之间的一种高速互联方式。

NVLink 随着 GPU 架构的演进不断发展,从 P100 的 NVLink1 到 H100 的 NVLink4。如图所示是 NVLink 1.0、NVLink 2.0、NVLink 3.0 和 NVLink 4.0 之间的区别,关键在于连接方式、带宽和性能。

产品发布时间显卡连接数量GPU 之间总带宽应用架构
NV Link 1.02016P1004160 GB/sPascal
NV Link 2.02017V1006300 GB/sVolta
NV Link 3.02020A10012600 GB/sAmpere
NV Link 4.02022H10018900 GB/sHopper
NV Link 5.0预计 2025B200181800 GB/sBlackwell

需要注意的是,使用 NVLink 之前需要先安装 nvidia-fabricmanager 服务。

为了有一个直观的印象,我们看看机箱中怎么安装 NVLink

  1. 打开 NVLink 盖
  1. 调整 NVLink 桥接器的方向,进行安装

1.2 HCCS

HCCS(High-speed Custom Communication System)是华为为其昇腾(Ascend)系列 AI 处理器设计的高速互连技术。

如上图,满配的 Atlas 800 训练服务器包含两块 910 板,每个板上都有 4 个 910 NPU。这些 NPU 之间的连接方式是 HCCS,图中 910 之间的蓝色线,而不同的 NPU 之间的连接方式是 PCIe。

而我接触到的 910B 服务器,也有两块 910B 板,每个板上都有 8 个 910B NPU,下面看看他们的拓扑:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
npu-smi info -t topo
	   NPU0       NPU1       NPU2       NPU3       NPU4       NPU5       NPU6       NPU7       NPU8       NPU9       NPU10      NPU11      NPU12      NPU13      NPU14      NPU15      CPU Affinity
NPU0       X          HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       PIX        PHB        PHB        PHB        SYS        SYS        SYS        SYS        0-43,88-131
NPU1       HCCS       X          HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       PHB        PIX        PHB        PHB        SYS        SYS        SYS        SYS        0-43,88-131
NPU2       HCCS       HCCS       X          HCCS       HCCS       HCCS       HCCS       HCCS       PHB        PHB        PIX        PHB        SYS        SYS        SYS        SYS        0-43,88-131
NPU3       HCCS       HCCS       HCCS       X          HCCS       HCCS       HCCS       HCCS       PHB        PHB        PHB        PIX        SYS        SYS        SYS        SYS        0-43,88-131
NPU4       HCCS       HCCS       HCCS       HCCS       X          HCCS       HCCS       HCCS       SYS        SYS        SYS        SYS        PIX        PHB        PHB        PHB        44-87,132-175
NPU5       HCCS       HCCS       HCCS       HCCS       HCCS       X          HCCS       HCCS       SYS        SYS        SYS        SYS        PHB        PIX        PHB        PHB        44-87,132-175
NPU6       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       X          HCCS       SYS        SYS        SYS        SYS        PHB        PHB        PIX        PHB        44-87,132-175
NPU7       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       X          SYS        SYS        SYS        SYS        PHB        PHB        PHB        PIX        44-87,132-175
NPU8       PIX        PHB        PHB        PHB        SYS        SYS        SYS        SYS        X          HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       0-43,88-131
NPU9       PHB        PIX        PHB        PHB        SYS        SYS        SYS        SYS        HCCS       X          HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       0-43,88-131
NPU10      PHB        PHB        PIX        PHB        SYS        SYS        SYS        SYS        HCCS       HCCS       X          HCCS       HCCS       HCCS       HCCS       HCCS       0-43,88-131
NPU11      PHB        PHB        PHB        PIX        SYS        SYS        SYS        SYS        HCCS       HCCS       HCCS       X          HCCS       HCCS       HCCS       HCCS       0-43,88-131
NPU12      SYS        SYS        SYS        SYS        PIX        PHB        PHB        PHB        HCCS       HCCS       HCCS       HCCS       X          HCCS       HCCS       HCCS       44-87,132-175
NPU13      SYS        SYS        SYS        SYS        PHB        PIX        PHB        PHB        HCCS       HCCS       HCCS       HCCS       HCCS       X          HCCS       HCCS       44-87,132-175
NPU14      SYS        SYS        SYS        SYS        PHB        PHB        PIX        PHB        HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       X          HCCS       44-87,132-175
NPU15      SYS        SYS        SYS        SYS        PHB        PHB        PHB        PIX        HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       HCCS       X          44-87,132-175

Legend:

  X    = Self
  SYS  = Path traversing PCIe and NUMA nodes. Nodes are connected through SMP, such as QPI, UPI.
  PHB  = Path traversing PCIe and the PCIe host bridge of a CPU.
  PIX  = Path traversing a single PCIe switch
  PXB  = Path traversing multipul PCIe switches
  HCCS = Connection traversing HCCS.
  NA   = Unknown relationship.

编号 0 到 7 之间的 NPU 两两通过 HCSS 互连,而编号 8 到 15 之间的 NPU 两两通过 HCCS 互连。我们在训练模型时,应该要尽量使同一个任务的 Pod 运行在同一块板子上。

而每块板上互连的 8 个 NPU 总的 HCSS 带宽是 392 GB/s,这意味着同一块板子上两个 NPU 之间的带宽是 392/7 = 56 GB/s。

2. 多点组网

2.1 NVSwitch

NVSwitch 是 NVIDIA 的一款交换芯片,用来连接同一台主机内的 GPU,是一种基于 NVLink 技术的扩展。

产品直连或节点中 GPU 数上限GPU 间带宽应用架构
NV Switch 1.08300 GB/sVolta
NV Switch 2.08600 GB/sAmpere
NV Switch 3.08900 GB/sHopper

在网上没有找到具体的安装说明,上图 6 个散热器下面压着的就是 NVSwitch 芯片。安装好 NVSwitch 之后,使用 NVLink 线缆,将 NVSwitch 与 GPU 卡连接。

使用 NVSwitch 也需要安装 nvidia-fabricmanager 服务。

3. 跨节点互连

2022 年,NVIDIA 将 NVSwitch 芯片独立出来,并制作成 NVLink 交换机,用于连接主机之间的 GPU 设备。

NVSwitch 物理交换机将多个 NVLink GPU 服务器连接成一个大型 Fabric 网络,即 NVLink 网络,解决了 GPU 之间的高速通信带宽和效率问题。每个服务器都有独立的地址空间,为 NVLink 网络中的 GPU 提供数据传输、隔离和安全保护。

3.2 InfiniBand 网络

InfiniBand 来自一家以色列公司 Mellanox,2020 年 NVIDIA 以 69 亿美元的价格收购了这家公司。

InfiniBand 是一种专为高性能计算和数据中心设计的网络,它提供了高带宽和低延迟的通信能力。InfiniBand 交换机通常用于构建高性能计算集群,支持拥塞控制、虚拟通道和多路径传输等特性。

InfiniBand 网络的设备成本较高,但提供了极致的性能。

InfiniBand 是一种基于通道的结构,组成单元主要分为四类:

  • HCA(Host Channel Adapter,主机通道适配器)
  • TCA(Target Channel Adapter,目标通道适配器)
  • InfiniBand link(连接通道,可以是电缆或光纤,也可以是板上链路)
  • InfiniBand 交换机和路由器(组网用的)

组建一个 InfiniBand 网络主要需要四个物理组件:

  1. Adapter 适配器,用于将服务器连接到 InfiniBand 网络。
  2. DPU 数据处理单元,用于处理数据,释放 CPU 压力
  3. Switch 交换机,用于连接多个设备
  4. Cable 线缆,用于连接 Adapter、DPU 和 Switch。

一根 InfiniBand 线缆的价格就上万,如果构建大规模集群,还需要部署 Spine-Leaf 网络,因此构建一个大规模 InfiniBand 网络的成本就会很高。

InfiniBand 网络普遍被超级计算机方案所使用,广泛用于数据中心和高性能计算集群中。InfiniBand 的带宽随着技术的发展而不断提升,从早期的 SDR(1 Gbps)、DDR(2 Gbps)、QDR(4 Gbps)、FDR(8 Gbps)、EDR(16 Gbps)、HDR(32 Gbps),发展到 NDR(100 Gbps)、XDR(200 Gbps)、GDR(400 Gbps)。

3.3 RoCE 网络

RoCE 是 RDMA over Ethernet,是一种基于以太网的 RDMA(Remote Direct Memory Access)技术。它允许在网络上进行直接内存访问,从而减少 CPU 负载并提高数据传输效率。

RoCE 有两个版本:RoCE v1 和 RoCE v2。RoCE v1 主要在以太网链路层实现 RDMA,而 RoCE v2 在以太网 TCP/IP 协议的 UDP 层实现,并引入 IP 来解决扩展性问题。

相较于昂贵的 InfiniBand 组件的 RDMA 通道,RoCE 则便宜了许多。

但这种便宜也只限于硬件成本,RoCE 的人力成本显著高于 InfiniBand,需要网络专家才能玩得转,用来解决网卡、交换机上的各种奇奇怪怪问题。

除非超大规模集群建设需要,有上万节点,有足够的的资金投入建设,否则建议选择几乎免运维的 InfiniBand 网络。

组建一个 RoCEv2 可选的设备就很多,并且相较于 InfiniBand 网络的设备,价格也显著便宜,只需要支持 RoCEv2 协议的设备即可。

另外,InfiniBand 网卡支持两种模式: InfiniBand 和 RoCE。InfiniBand 网卡能直接当做 RoCEv2 的 NIC 用。

RoCE 的带宽取决于所使用的以太网标准。RoCE v1 通常运行在 10 Gbps 或 40 Gbps 的以太网网络上,而 RoCE v2 可以在更高速度的网络上运行,如 25 Gbps、40 Gbps、50 Gbps 甚至 100 Gbps

3.4 Spine-Leaf 网络

在机房中,经常也会采用 Spine-Leaf 网络,配合 InfiniBand 网卡来构建高性能计算集群。

Spine 层是网络的骨干; Leaf 层用来连接服务器、存储设备等终端设备。通常 Spine 层和 Leaf 层都会使用三层交换机来构建。

Spine-Leaf 网络架构可以提供高带宽、低延时、非阻塞的服务器到服务器连接。Spine-Leaf 网络的优点包括:

  1. 易于横向扩展。在不需要改变网络拓扑结构的情况下,可以横向扩展网络,增加 Spine、Leaf 节点以扩大网络规模。
  2. 无阻塞设计。每个 Leaf 都与每一个 Spine 交换机相连,保障了任意两个节点之间的通信不会受到其他流量影响。
  3. 网络跳数少。任意两个端点之间最多经过三跳可达,Leaf - Spine - Leaf。
  4. 网络结构简单,仅有两个层级,易于管理和维护。

典型数据传输过程:

  • 同一个 Leaf 节点下的服务器。同一个 Leaf 节点之间需要通信时,数据直接通过该 Leaf 节点进行转发,无需经过 Spine 节点。

  • 跨两个 Leaf 节点下的服务器。数据从源服务器通过 Leaf 交换机发送到 Spine 交换机,然后通过 Spine 交换机转发到目标节点所在的 Leaf 节点,再通过 Leaf 节点转发到目标服务器。

Spine-Leaf 网络中服务器与服务器之间最大带宽取决于以下因素:

  1. 服务器网卡带宽
  2. Leaf 交换机端口带宽和背板带宽
  3. Spine 交换机端口带宽和背板带宽
  4. Spine-Leaf 之间连接带宽

如果使用以太网,Spine-Leaf 网络的带宽取决于以太网标准;如果使用 InfiniBand 网络,Spine-Leaf 网络的带宽取决于 InfiniBand 网络的带宽。

4. 参考