运行softTeacher过程中遇到的问题

文章讲述了在PyTorch多机多卡DDP训练中遇到的ncclSystemError,涉及系统调用失败、InfiniBand/RDMAoverConvergedEthernet的使用、以及如何通过设置NCCL_IB_DISABLE和NCCL_SOCKET_IFNAME环境变量来解决这些问题,包括使用IP套接字作为临时解决方案和选择合适的网络接口以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下

ncclSystemError: System call (socket, malloc, munmap, etc) failed.

RuntimeError: NCCL error in: /opt/conda/conda-bld/........../ProcessGroupNCCL.cpp:911, unhandled system error, NCCL version 2.7.8
ncclSystemError: System call (socket, malloc, munmap, etc) failed.

通过export NCCL_DEBUG=INFO来查看日志信息。

如果设置NCCL_IB_DISABLE=1的话,会强制 NCCL 使用 IP 套接字进行通信,而不是尝试使用可能不可用的 IB/RoCE。InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 是高性能网络协议,通常在分布式和高性能计算环境中使用,允许进行快速数据传输。注意,使用 IP 套接字可能会比使用 IB/RoCE 传输慢,因为它通常不会利用硬件加速特性,但如果硬件或驱动程序支持有问题,这可能是一个有用的临时解决方案。

参考:pytorch 多机多卡DDP训练遇到ncclSystemError: System call (socket, malloc, munmap, etc) failed错误解决办法-优快云博客

日志信息如下:

gpu04: [0] bootstrap.cc:32 NCCL WARN Bootstrap : no socket interface found
gpu04: [0] NCCL INFO init.cc:101 -> 3
gpu04: [0] NCCL INFO init.cc:123 -> 3
gpu04: [0] NCCL INFO init.cc:140 -> 3
RuntimeError: NCCL error in: /opt/conda/conda-bld/....../torch/lib/c10d/ProcessGroupNCCL.cpp:845, internal error, NCCL version 2.7.8
ncclInternalError: Internal check failed. This is either a bug in NCCL or due to memory corruption

添加

import os
os.environ["NCCL_IB_TC"] = "128"
os.environ["NCCL_IB_GID_INDEX"] = "3"
os.environ["NCCL_IB_TIMEOUT"] = "22"

NCCL_SOCKET_IFNAME 环境变量在 NCCL 中用于指定用于通信的网络接口。当在网络上跨多个 GPU 执行集体操作时,如果系统中有多个网络接口,可以通过设置此变量来确保 NCCL 使用正确的接口,以获得最佳性能。

import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0" #此处eth0为每台机器的网卡名字,使用ifconfig查看,要是出现多个网卡名字,找到那个有IP地址、网关和掩码的那个名字

######################################
#或者 NCCL_SOCKET_IFNAME=en,eth,em,bond
#en,eth,em,bond:这些是网络接口的名称前缀。这个设置指示 NCCL 只使用那些名称以 en、eth、em 或 bond #开头的网络接口。例如:

#en 通常是以太网接口的名称前缀,如 en0、en1 等。
#eth 是传统的以太网接口前缀,如 eth0、eth1 等。
#em 可能是某些系统上以太网接口的前缀。
#bond 是用于网络绑定的接口前缀,通常用于高可用性或负载均衡。

这会指导 NCCL 使用 eth0 接口进行所有基于 IP 的通信。如果默认接口不合适,或者系统中有多个接口而你想使用特定的一个进行分布式训练任务,这样设置就非常必要了。

参考:日志提示“no socket interface found”_AI开发平台ModelArts_故障排除_训练作业_业务代码问题_华为云 (huaweicloud.com)

Environment Variables — NCCL 2.19.3 documentation (nvidia.com)

NCCL填坑_nccl_ib_disable-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值