Get P2P status超时

适用场景

现象描述

常见于算子编译阶段,日志报错信息:Wait timeout for get P2P status

可能原因

HCCL初始化会在AI Server内的各rank(Device)间建立P2P使能链接,若任一个rank在建链前/中发生异常,未拉起业务进程,则会导致本AI server初始化失败。

处理步骤

场景1 部分rank在P2P使能前异常时,会导致和其他rank间的P2P使能超时,处理步骤为:
  1. 确认各rank上HCCL初始化是否成功(plog日志关键字为hcom init by file success,级别为TRACE),若未成功初始化则可能原因为:

    (1)进入HCCL初始化之前有其他组件初始化失败

    (2)上次训练过程存在进程残留

  2. P2P使能前其他组件异常,导致没有走到HCCL初始化(典型问题:TSD没有拉起失败)。
  3. 训练脚本有问题,训练拉起进程/docker数是否和训练卡数不一致,导致实际拉起的进程和集群描述不符。
  4. TDT拉起失败/磁盘空间不足等,导致进程异常退出。

场景2 各rank上HCCL的调用时差超过120s,引起P2P使能超时:

确认各rank的通信初始化打印日志(plog日志关键字为Entry-HcomInitByFile,级别为EVENT)的时间,是否相差超过120s,若超过则为集合通信拉起时间相差过大。

常见场景: 训练启动脚本有问题,多卡训练时应同时运行多个进程(每张卡对应一个进程),而不是一个进程结束后再启动下一个进程。

#典型错误

for i in ${DEVICE_LIST}
   do
     export DEVICE_ID=$i
     export RANK_ID=$i
     echo "start train ing device $i"
     python3.7.5 /home/HwHiAiUser/train.py          # 阻塞执行
   done

# ------------------------------------------------------------------------------

# 解决方法

for i in ${DEVICE_LIST}
    do
      export DEVICE_ID=$i
      export RANK_ID=$i
      echo "start train ing device $i"
      python3.7.5 /home/HwHiAiUser/train.py &        # 后台执行
    done

场景3 配置的rank_table和实际使用的Device不一致。

在日志(EVENT级别)中 grep 关键字 paraInfo(hcom init)(下沉模式) 或者 paraInfo(HcclCommInitClusterInfo)(单算子模式),打开日志中打印的rank table文件,确认该server上启动的rank数是否和rank table文件上配置的一致。

例如,实际使用2P,但是rank table是按照8P进行配置的,HCCL在初始化时会出现该现象。