socket建链超时(EI0006)

适用场景

现象描述

常见于算子加载阶段,有以下2种情况:

1、Server间的建链超时现象,日志报错信息如下:

2、Server内的建链超时现象,日志报错信息如下:

可能原因

HCCL会在指定集群的每个Device上运行,并在集群间建立socket链接,若任一个rank或者通信链路在建链前/中发生异常,则会导致集群建链失败。常见的原因包括:

  1. 部分rank未执行到正确的建链阶段。
  2. 部分卡被某些耗时较长的任务阻塞,在超过120秒(可通过HCCL_CONNECT_TIMEOUT配置)后才执行到对应阶段。
  3. 脚本等原因导致某些rank间的通信算子数量或者排序不一致。
  4. 节点间通信链路不通或者不稳定。

处理步骤

收集所有卡的plog日志后,按以下步骤排查:

  1. 检查所有卡的报错情况,若有卡未报建链超时错误,请通过训练或者plog日志检查此卡是否存在业务卡死情况,若存在请定位根因。
  2. 若所有卡均上报建链超时错误,则检查错误日志中最早和最晚时间差异是否超过超时阈值,若超过阈值请定位最晚报错的卡执行较慢的原因或通过通过增大建链超时时间尝试解决(例如通过配置export HCCL_CONNECT_TIMEOUT=1800将超时时间增大为1800s)。
  3. 若时间差异未超过阈值,请检查各rank执行的集合通信算子数量一致,算子加载的顺序一致。HCCL要求一个通信域内各个rank上算子加载顺序保持一致。

    如需查询tag和计算图中node name的对应关系,需开启INFO日志,在host日志中搜索:

    关键字1:GenerateOpTag:graph

    关键字2:GenerateTask:graph

    关键字1可以看到node的hash值,关键字2可以看到nodHash对应的NodeName,协助计算图排查。

  4. 检查集群中是否存在Device网口通信链路不通的情况,比较常见的原因:

    1. IP不在同一网段或子网掩码配置存在问题。
    2. IP冲突,集群中存在IP相同的两个rank。
    3. 交换机配置不在同一个vlan。
    4. 链路不通。
    5. 各rank的TLS(安全增强)设置不一致时也会导致建链失败。

      可通过hccn tool命令来确认TLS是否一致,如不一致请参考随软件包发布的《HCCN Tool 接口参考》进行TLS配置。

      查询TLS状态命令:

      hccn_tool -i 0 -tls -g 
      hccn_tool -i 1 -tls -g 
      hccn_tool -i 2 -tls -g 
      hccn_tool -i 3 -tls -g 
      hccn_tool -i 4 -tls -g 
      hccn_tool -i 5 -tls -g 
      hccn_tool -i 6 -tls -g 
      hccn_tool -i 7 -tls -g 

      TLS switch值为0表示关闭,1表示开启。如果提示no certificate found,也表示TLS功能关闭。如果各个rank的TLS情况不一致,可根据hccn tool使用指南配置TLS,或者关闭所有rank的TLS功能。

      关闭TLS功能命令:

      hccn_tool -i 0 -tls -s enable 0 
      hccn_tool -i 1 -tls -s enable 0 
      hccn_tool -i 2 -tls -s enable 0 
      hccn_tool -i 3 -tls -s enable 0 
      hccn_tool -i 4 -tls -s enable 0 
      hccn_tool -i 5 -tls -s enable 0 
      hccn_tool -i 6 -tls -s enable 0 
      hccn_tool -i 7 -tls -s enable 0