You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用torchrun进行3节点PyTorch分布式训练时连接超时问题排查

PyTorch分布式训练(torchrun)卡滞问题排查

可能原因

  • 网络连通性异常:VM节点间防火墙/安全组未开放必要端口(GLOO需TCP端口、NCCL需TCP+UDP端口);虚拟网络存在丢包、高延迟,虽日志显示连接建立,但后续通信受阻。
  • 后端适配问题:
    • GLOO后端:多网卡环境下未绑定正确通信网卡,或主机名解析返回非集群内可访问IP;
    • NCCL后端:GPU驱动版本不一致、GPU间P2P通信被禁用,或虚拟网卡性能不足、存在QoS限制。
  • 进程启动时序问题:3节点启动torchrun的时间差过大,导致master节点等待超时;2节点场景偶发成功也符合网络波动、启动时序不稳定的特征。
  • 资源瓶颈:VM的CPU、内存或GPU资源耗尽,进程初始化阶段被系统调度挂起,无法推进。

排查步骤

1. 基础网络验证

  • 所有节点间执行ping 目标节点IP,检查丢包率与延迟;
  • 用telnet 192.168.1.92 29500或nc -zv 192.168.1.92 29500测试master节点默认端口的连通性;
  • 检查所有节点防火墙/安全组,确保TCP(29500及自动分配端口)、UDP端口全量开放;
  • 多网卡环境下,在各节点设置环境变量:
    export NCCL_SOCKET_IFNAME=eth0  # 替换为实际通信网卡
    export GLOO_SOCKET_IFNAME=eth0
    
    强制后端绑定正确网卡。

2. 后端专项排查

GLOO后端

  • 各节点执行hostname -i,确认返回IP为集群内可通信地址;
  • 在torch.distributed.init_process_group中显式指定rank、world_size,并添加timeout=datetime.timedelta(seconds=30)参数,观察是否抛出超时错误。

NCCL后端

  • 运行NCCL测试工具验证通信:
    ./build/all_reduce_perf -b 8 -e 1G -f 2 -g 1
    
    查看是否有通信失败或超时;
  • 用nvidia-smi确认所有节点GPU状态正常、驱动版本一致;执行nvidia-smi topo -m检查GPU拓扑,确认P2P通信可用;
  • 设置export NCCL_DEBUG=INFO,重新运行训练,查看日志中是否有具体通信错误(如端口绑定失败、数据发送超时)。

3. 进程与资源检查

  • 确保所有节点的torchrun命令在10秒内完成启动,可通过脚本批量触发;
  • 用top/htop查看CPU、内存占用,nvidia-smi查看GPU显存与利用率,确认无资源耗尽情况;
  • 验证所有节点的PyTorch、NCCL版本完全一致,版本不匹配会导致协议兼容问题。

4. 最小化测试

  • 编写极简分布式测试脚本,仅包含init_process_group与DDP初始化逻辑,用torchrun启动3节点测试,排除业务脚本本身的问题;
  • 若极简脚本仍卡滞,尝试在物理机环境复现,确认是否为VM虚拟网络的固有问题。

内容的提问来源于stack exchange,提问作者Morteza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:38:07