常见于算子编译阶段,日志报错信息:Wait timeout for get P2P status
HCCL初始化会在AI Server内的各rank(Device)间建立P2P使能链接,若任一个rank在建链前/中发生异常,未拉起业务进程,则会导致本AI server初始化失败。
场景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在初始化时会出现该现象。