高性能网络
AI 训练与高性能存储的主战场。先弄清这套体系是什么:RDMA 为什么快、IB 与 RoCE 各自是一套什么东西、整张网大致长什么样;然后动手把一条链路配通、跑出线速、用 NCCL 验收,并把需求算成一张采购表;最后再往下拆机内互联与卸载路径 —— PCIe、NVLink、GPUDirect 这些,是撞到具体瓶颈时才真正用得上的原理。
概念:这套体系是什么
4 节 · 135 分钟RDMA 为什么快、IB 与 RoCE 各是一套什么东西、整张网大致长什么样。
- 1
为什么需要 RDMA:内核旁路与零拷贝
原理30m同样的 100Gbps 网卡,TCP 与 RDMA 的延迟差一个数量级。差在哪里,代价是什么。
- 说清 TCP 路径上哪几步被 RDMA 省掉了
- 解释 QP、CQ、MR、Verbs 这几个基本概念
- 判断一个业务该不该上 RDMA
- 2
InfiniBand 架构:子网管理器、LID 与 UFM
原理35mIB 不是"快一点的以太网",它是另一套体系:地址、路由、拥塞控制全都自成一家。
- 解释 SM 的作用,说出 SM 失效会发生什么
- 区分 LID 与 GID,并读懂 ibstat / ibstatus 输出
- 用 ibdiagnet 之类的工具做一次链路体检
- 3
RoCEv2 与无损以太网:PFC、ECN 与 DCQCN
原理40m把 RDMA 跑在以太网上,全部难点集中在一件事:不能丢包。
- 解释 PFC 与 ECN 的分工,说出只配一个会怎样
- 看懂 PFC 风暴与死锁的形成条件
- 列出交换机与主机两侧必须对齐的配置项
- 4
Fat-Tree 与 Rail-Optimized 拓扑
原理30mGPU 集群的网络拓扑不是"接上就行",接错了 AllReduce 直接掉一半带宽。
- 画出两层 Fat-Tree 并算出它的无阻塞条件
- 解释 rail-optimized 布线为什么能让同 rail 通信只走一跳
- 说清 NVLink 域与网络域的边界在哪
实践:打通并验收一条链路
4 节 · 135 分钟先把多网卡的选路配对,再在两台裸机之间跑出线速,最后用 NCCL 给整个集群体检。
- 5
策略路由:多网卡机器的 ARP 与选路
原理30m八卡 RoCE 节点上 ib_send_bw 连得上但走错网卡。根因不在网卡,在 Linux 的默认行为。
- 解释 weak host model 如何导致 ARP flux 与非对称路由
- 按「一张卡一张路由表」配出 ip rule,并用 ip route get 验证结果
- 为多 rail 集群选择地址方案,说清同网段方案必须补哪三步
- 6
动手:用 perftest 打通第一条 RDMA 链路
实验35mib_send_bw 跑不出线速时,问题几乎总在 GID、设备名或 MTU 上。
- 用 show_gids 选对 GID index 并解释为什么要选
- 跑 ib_send_bw / ib_write_lat 并判读结果是否合格
- 按结果区分是链路问题、配置问题还是拓扑问题
- 7
动手:NCCL 与 busbw 判读
实验40mAllReduce 的 busbw 是 GPU 集群的网络体检报告。这节讲怎么跑、怎么读、怎么调。
- 跑通多节点 all_reduce_perf 并确认正确性检查通过
- 用 2(n-1)/n 校正因子把 busbw 与硬件峰值对比
- 按机型配对 NCCL_IB_HCA、NCCL_SOCKET_IFNAME 等关键变量
- 8
闯关:AllReduce 只有理论值一半
闯关30m两节点 16 卡,busbw 卡在一半上不去。在模拟终端里查出它到底走没走 RDMA。
- 从 NCCL 日志判断走的是 RDMA 还是 TCP
- 核对 GID、HCA 名称与网卡速率是否符合预期
- 定位到一处具体配置错误并说明修法
实践:选型与规划
3 节 · 95 分钟把模糊需求问成数字,选定方案,再算成一张能拿去采购的表。
- 9
需求拆解:从业务话术到端口和带宽
原理入门25m"我们要建个 AI 集群"这句话里没有一个可采购的数字。这节讲怎么问出来。
- 用一份清单把模糊需求问成可计算的参数
- 区分必须独立成网与可以共用的流量类型
- 识别报价单里最容易被漏掉的项
- 10
选型对比:IB、RoCE 与 Spectrum-X
原理30m同一笔预算三种方案,差别不在峰值带宽,在运维成本和确定性。
- 按团队能力与规模给出一个能落地的选型建议
- 说出三种方案在拥塞控制上的本质差异
- 列出各方案的隐性成本
- 11
高性能网络规划:SU、Rail 与线缆账
规划40m按 GPU 数算出计算网的 leaf/spine 台数与线缆数,并核对无阻塞条件。
- 按 rail-optimized 原则算出交换机与线缆数量
- 核对两层 Fat-Tree 的无阻塞条件是否成立
- 把结果与 DGX SuperPOD 参考架构的数字对上
原理:再往下拆一层
7 节 · 215 分钟跑通之后回头看机内互联与卸载路径 —— 遇到具体瓶颈时才真正用得上。
- 12
PCIe:机内的那张网
原理深入35mPCIe 不是总线而是一张交换网。槽位插错、代际不对,400G 网卡只能跑出一半。
- 按代际与 lane 数算出一条 PCIe 链路的可用带宽,并判断它够不够喂满某张网卡
- 用 lspci 与 nvidia-smi topo 读出实际协商结果与设备间的拓扑关系
- 说出 GPUDirect 对 PCIe 拓扑与 ACS 的要求
- 13
NVLink 与 NVSwitch:机内的 GPU 高速网
原理深入35mGPU 之间走 PCIe 太慢,于是有了另一张网。搞清它的边界在哪,才知道哪些流量会上机间网络。
- 说出各代 NVLink 的单卡带宽与链路数,并把它和 PCIe、机间网络放在同一把尺子上比
- 解释 NVSwitch 让 8 卡全带宽互联的原理,以及 NVL72 把域扩到 72 卡意味着什么
- 用 nvidia-smi 读出 NVLink 状态与吞吐,判断某条链路是否掉了
- 14
GPUDirect RDMA 与 GPUDirect Storage
原理深入30m让网卡直接读写显存,把 CPU 和主存彻底从数据路径上摘掉。
- 画出开启与未开启 GPUDirect RDMA 时的数据路径差异
- 列出生效的前提条件(驱动、PCIe 拓扑、ACS)
- 验证 GPUDirect 是否真的生效
- 15
MPI 与集合通信:谁在真正搬数据
原理深入30mMPI 在 AI 训练里常常只是个启动器,真正的通信由 NCCL 完成。搞清分工才能调对。
- 说清 MPI 与 NCCL 在 AI 训练里的分工
- 看懂 mpirun 常用参数对性能的影响
- 排查 hcoll 与 NCCL 冲突这类初始化失败
- 16
NVMe-oF:把 NVMe 协议搬到网络上
原理深入30m远端盘做到接近本地盘的延迟,靠的是不做协议转换。
- 区分 NVMe/RDMA、NVMe/TCP、NVMe/FC 三种传输
- 解释 NVMe-oF 相比 iSCSI 的延迟优势来自哪里
- 完成一次 discover 与 connect 并确认多路径
- 17
DPU 与 Spectrum-X:把网络卸载到卡上
原理深入25m交换机和网卡开始跑自己的操作系统。这对运维意味着多了一层要管的东西。
- 说出 DPU 能卸载哪些工作以及收益来源
- 解释 Spectrum-X 用什么手段接近 IB 的确定性
- 判断当前规模是否值得引入 DPU
- 18
DPDK:用户态轮询与大页内存
原理深入30m把网卡从内核手里抢过来自己轮询,换来极低延迟和整核的 CPU 占用。
- 解释轮询模式驱动为什么比中断快
- 列出 DPDK 的部署前提与资源代价
- 判断该选 DPDK 还是 XDP 还是 RDMA