You need to enable JavaScript to run this app.
文档中心
GPU云服务器

GPU云服务器

复制全文
下载 pdf
故障处理
如何解决集合通信进度不匹配
复制全文
下载 pdf
如何解决集合通信进度不匹配
异常描述​
整个集群通信陷入阻塞、任务卡死(Hang)状态。​
异常原因​
集合通信(Collective Communication)需要集群内所有GPU同步参与才能顺利完成。若某些Rank因软硬件异常未能加入通信,将导致整个集群陷入卡死(Hang)状态。常见原因如下:​
  • 硬件异常导致某个Rank节点失联,未能正常发起集合通信。​
  • 软件或进程异常,例如数据加载器(Dataloader)异常、Python 进程卡死等。​
  • 程序逻辑错误导致不同Rank发起的集合通信数量、顺序或类型不一致,造成匹配失败。​
  • ​
    # 示例 1:数量/类型不一致​
    if dist.get_rank() == 0:​
    tensor = torch.randn(100).cuda()​
    dist.broadcast(tensor, src=0)​
    dist.all_reduce(tensor) # 只有 rank 0 执行​
    else:​
    tensor = torch.randn(100).cuda()​
    dist.broadcast(tensor, src=0)​
    # 缺少 all_reduce,导致不匹配​
    ​
    # 示例 2:顺序错误 ​
    if dist.get_rank() % 2 == 0:​
    dist.all_reduce(tensor1)​
    dist.all_reduce(tensor2)​
    else:​
    dist.all_reduce(tensor2) # 顺序与上方相反,引发死锁​
    dist.all_reduce(tensor1)​
    ​
检查或修复建议​
由于veCCL Analyzer无法直接访问您的业务代码及全面获取底层硬件状态,因此通常只能定位到进度最慢(Hang 住)的节点,无法直接给出确切的根因。建议您结合卡死节点和具体的通信操作,从代码逻辑、机器监控指标(如显存利用率)及系统异常日志(STDOUT、Dmesg 等)自行排查。​
  • 检查NCCL Watchdog timeout时的异常输出信息​
  • 判断各个Rank最终卡死(Hang)的通信操作是否一致(可重点比对SeqNum、OpType、NumelIn、NumelOut等参数),例如:​
  • ​
    [rank1]:[E108 15:25:04.253772452 ProcessGroupNCCL.cpp:1899] [PG ID 0 PG GUID 0(default_pg) Rank 1] Process group watchdog thread terminated with exception: [Rank 1] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=12846233, OpType=ALLREDUCE, NumelIn=33554432, NumelOut=33554432, Timeout(ms)=7200000) ran for 7200066 milliseconds before timing out.​
    ​
  • 开启NCCL调试日志。​
  • 在进程启动前,设置环境变量(NCCL_DEBUG=INFO、NCCL_DEBUG_SUBSYS=COLL)追踪各Rank的通信调用序列是否对齐,特别是排查最后Hang住时的集合通信操作。​
注意​
开启COLL子系统调试会输出每一次集合通信的细节,可能对系统性能和磁盘存储造成一定压力。​
  • ​
    export NCCL_DEBUG=INFO​
    export NCCL_DEBUG_SUBSYS=COLL​
    ​
  • 排查异常节点​
  • 如果诊断结果多次指向少数固定的节点卡死,高度怀疑该机器存在硬件或环境异常,建议进行隔离替换。​
  • 尝试环境变量规避(Workaround)​
  • 在极少数情况下,NCCL的某些特定机制可能导致偶发性Hang。您可以在程序启动时尝试添加以下环境变量进行规避。​
说明​
加入这些环境变量可能会带来微小的性能损耗,但在绝大多数场景下可忽略不计。​
  • ​
    export NCCL_PXN_DISABLE=1​
    export NCCL_PROTO=Simple​
    export NCCL_ALGO=Ring​
    export NCCL_NVLS_ENABLE=0​
    export NCCL_NET_PLUGIN=none​
    ​
说明​
若还未解决您的问题,请提交工单或联系客户经理获取技术支持。​
最近更新时间:2026.05.08 15:36:24
这个页面对您有帮助吗?
有用
有用
无用
无用