- 文档首页
GPU云服务器
GPU云服务器
最佳实践
性能测试/调优
使用NCCL Softbond Plugin保障单网卡故障下训练流量恢复
性能测试/调优
使用NCCL Softbond Plugin保障单网卡故障下训练流量恢复
使用NCCL Softbond Plugin保障单网卡故障下训练流量恢复
NCCL Softbond Plugin是用于RDMA网卡故障自动恢复流量的插件,本文介绍如何通过NCCL Softbond Plugin实现单网卡故障情况下训练任务流量自动恢复。
在AI分布式训练中,有概率出现网口故障之类的硬件故障,导致训练中断。对于双网口的单网卡,可以采用bonding方式缓解,即便一个网口出现故障,流量也可以切换到另一个网口,训练能够正常继续运行,并且可以坚持到下一个checkpoint点后进行修复。然而对于单网口的情况,因为没有硬件支持的bond方案,所以无法自动切换流量,一旦网口故障的时间超过RDMA连接超时时间,就会造成连接断开,训练中断。因此,为了弥补单网口网卡没有冗余链路的弊端,我们提出在NCCL中实现SoftBonding的方案,在遇到网口故障等硬件故障时,通过软件来切换流量,确保即使遇到小故障,训练也不会中断。
- 已创建高性能GPU计算型实例,本文所示配置如下:
- 规格:ecs.hpcpni3ln.45xlarge
-
- 执行nvcc -V 命令查看CUDA版本。若未安装,请安装CUDA。
- 执行python3 --version命令查看Python版本。若未安装,请安装Python。
步骤一:安装NCCL和NCCL Softbond Plugin
- 执行git --version命令,回显如下,表示安装成功。
-
git clone -b v2.21.5-1 https://github.com/NVIDIA/nccl
- 根据业务所在地域,执行以下命令下载NCCL Softbond Plugin。
https://iaas-debug-beijing.tos-cn-beijing.ivolces.com/tool/misc/libnccl-net-soft-bonding_2.1-nccl_amd64.deb
https://iaas-debug-shanghai.tos-cn-shanghai.ivolces.com/tool/misc/libnccl-net-soft-bonding_2.1-nccl_amd64.deb
https://iaas-debug-guangzhou.tos-cn-guangzhou.ivolces.com/tool/misc/libnccl-net-soft-bonding_2.1-nccl_amd64.deb
https://iaas-debug-southeast-1.tos-ap-southeast-1.ivolces.com/tool/misc/libnccl-net-soft-bonding_2.1-nccl_amd64.deb
dpkg -i libnccl-net-soft-bonding_2.1-nccl_amd64.deb
dpkg -l |grep libnccl-net-soft-bonding
sudo apt -y install openmpi-bin
-
步骤三:使用NCCL Softbond Plugin
安装成功后,您可以直接使用NCCL Softbond Plugin的通信优化功能,无需再进行其他配置。以下示例通过NCCL_Tests展示NCCL Softbond Plugin在双机16卡实例中,采用allreduce通信算法进行加速的效果。
git clone https://github.com/NVIDIA/nccl-tests.git
mpirun --allow-run-as-root -np 8 -x NCCL_DEBUG=INFO -x NCCL_P2P_LEVEL=SYS ./build/all_reduce_perf -b 8 -e 1G -f 2 -g 1
export NCCL_NET_PLUGIN=soft-bonding
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
mpirun --allow-run-as-root -np 8 -x NCCL_DEBUG=INFO -x NCCL_NET_PLUGIN -x NCCL_P2P_LEVEL=SYS -x LD_LIBRARY_PATH ./build/all_reduce_perf -b 8 -e 1G -f 2 -g 1
- 同时设置NCCL_DEBUG=INFO,在NCCL日志中打印出如下信息时,表明Softbond PLUGIN加载成功。
-
536870912 134217728 float sum -1 5634.4 95.28 178.66 0 5629.2 95.37 178.82 0
1073741824 268435456 float sum -1 10914 98.38 184.46 0 10907 98.44 184.58 0
iv-ydh7r9vegwcva4fcdp8k:4783:4873 [0] src/plugin.cc:181 NCCL WARN NET/IB : mlx5_1 get async event : port error
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] src/plugin.cc:2636 NCCL WARN NET/IB:
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] NCCL INFO ncclIbIrecvQpErrAll[0x7f0dbc115000]: transitioning all QP to ERR
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] NCCL INFO
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] NCCL INFO
iv-ydh7r9vegwcva4fcdp8k:4783:4913 [0] NCCL INFO ncclIbTestSend[0x7f02780da000] complete link backup latency 7520283548 ns
4294967296 1073741824 float sum -1 85685 50.13 93.98 0 85389 50.30 94.31 0
8589934592 2147483648 float sum -1 171258 50.16 94.05 0 170520 50.37 94.45 0
iv-ydh7r9vegwcva4fcdp8k:4787:4837 [0] src/plugin.cc:181 NCCL WARN NET/IB : mlx5_1 get async event : port active
iv-ydh7r9vegwcva4fcdp8k:4783:4913 [0] NCCL INFO
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] NCCL INFO
iv-ydh7r9vegwcva4fcdp8k:4783:4913 [0] NCCL INFO ncclIbIsend[0x7f02780da000]: state transition from B/U/U to P/U/U after send
iv-ydh7cejev4cva4f5wdv0:4433:4566 [0] NCCL INFO ncclIbIrecv[0x7f0dbc115000]: state transition from B/U/U to P/U/U after postfifo
iv-ydh7r9vegwcva4fcdp8k:4783:4913 [0] NCCL INFO ncclIbTestSend[0x7f02780da000] recovery complete latency 8505401 ns
327900 52.39 98.24 0 169356 101.44 190.20 0
最近更新时间:2025.07.08 17:09:41