RDMA 网络配置
本文介绍 AIStudio 任务功能中的 RDMA(远程直接内存访问)网络配置。RDMA 是分布式训练中实现高性能 GPU 间通信的关键技术。
提示
对于大多数用户,AIStudio 会自动感知当前资源与环境并进行最优配置,无需手动干预。仅在使用自定义镜像或遇到通信问题时,才需要参考本文进行配置。
查询训练网类型
您可以前往资源池页面,进入资源池详情页,查看特定资源规格的「训练网」配置。例如:IB 4*200G / RoCE 1*200G 等。
要判断 RDMA 网络是 RoCE 还是 InfiniBand,还可以登录任务 Worker,使用 rdma link show 和 ibstat 命令:只需查看输出中的 link_layer 字段,若为 Ethernet 则表示 RoCE,若为 InfiniBand 则表示 InfiniBand;此外,ibstat 中若 base lid 和 SM lid 为非零值,通常也表明是 InfiniBand。
开启 RDMA 配置
如果所选规格的「训练网配置」为 RoCE 或 IB,在创建任务页面,可看到该配置项。RDMA 配置在规格为 8 卡时自动开启、小于 8 卡时自动关闭。您可以手动调整。
警告
RoCE 网络下使用小于 8 卡规格时若开启 RDMA 配置,可能会造成通信问题。
自定义镜像的 RDMA 依赖
若使用自定义镜像并启用 RDMA(如 InfiniBand 或 RoCE 网络),请确保镜像包含以下依赖:
检测命令(Ubuntu):
dpkg -l infiniband-diags perftest ibverbs-providers libibumad3 libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1安装命令(Ubuntu):
apt update && apt install -y \
infiniband-diags \
perftest \
ibverbs-providers \
libibumad3 \
libibverbs1 \
libnl-3-200 \
libnl-route-3-200 \
librdmacm1各依赖包说明:
| 包名 | 说明 |
|---|---|
infiniband-diags | InfiniBand 网络诊断工具,用于检测和调试 IB 连接 |
perftest | RDMA 性能测试工具,用于测试网络带宽和延迟 |
ibverbs-providers | InfiniBand Verbs 提供程序,支持不同厂商的 RDMA 硬件 |
libibumad3 | InfiniBand 用户空间管理接口库 |
libibverbs1 | InfiniBand Verbs 用户空间库,提供 RDMA 编程接口 |
libnl-3-200 | Netlink 协议库,用于内核网络配置 |
libnl-route-3-200 | Netlink 路由库,用于网络路由管理 |
librdmacm1 | RDMA 连接管理库,用于建立 RDMA 连接 |
如未预装上述依赖,建议在镜像构建阶段中手动安装,以保障 RDMA 网络功能的正常。
NCCL 环境变量
您的训练网类型可能为 IB / RoCE。关于 NCCL 环境变量的具体解释,可查看 NCCL 官方文档。
IB 环境
在 IB 环境下,作为最佳实践,建议手动设置:
export NCCL_SOCKET_IFNAME=eth0RoCE 环境
在 RoCE 环境下,作为最佳实践,建议手动设置:
export NCCL_SOCKET_IFNAME=eth0在训练网为 RoCE 时,平台还会预置以下 NCCL 环境变量。一般不建议用户自行修改:
NCCL_IB_GID_INDEX:在完整的 8 卡 Pod 上,此值通常是 5。在非 8 卡的场景中,平台会动态获取并配置。NCCL_IB_HCA:RDMA 通信的网卡名称(不含管理网卡)NCCL_CROSS_NIC:预置变量值为 0,表示关闭跨 RoCE 网卡间的网络,以避免不同网卡之间无法通信的情况。
危险
- 无需额外设置
NCCL_IB_TC。 - 请勿随意调整以上环境变量。
其他注意事项
如果任务规模非常大,可以手动设置下指定拓扑建环的策略。虽然 AIStudio 平台默认会自动选择,但有时根据任务的不同规模和通信特征,尝试手动指定 ring 或者 tree 可能会有更好的性能:
# 手动指定拓扑建环的策略
export NCCL_ALGO=Ring注意
部分自定义镜像(比如从外部平台迁移的镜像)可能会携带预设环境变量,导致训练问题,请注意提前检查。