notify wait超时

适用场景

现象描述

常见于算子执行阶段,屏显日志报错信息:The wait execution of the Notify register times out.

plog日志中查询Notify,有如下类似信息:

可能原因

HCCL算子的task会在指定集群的每个Device上执行,并通过notify进行状态同步,若任何一个rank或者通信链路在执行前/中发生异常,则会导致集群同步失败,剩余卡会出现notify wait timeout。常见的原因主要有:

  1. 部分rank未执行到notify同步阶段。
  2. 部分卡被某些耗时较长的任务阻塞,在超过600秒(可通过HCCL_EXEC_TIMEOUT配置)后才执行到对应阶段。
  3. 节点间通信链路不稳定。
  4. 网络模型等原因导致某些rank间的task执行序列不一致。

处理步骤

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

  1. 检查所有卡的报错情况,若有卡未报notify超时错误,请通过训练或者plog日志检查此卡是否存在业务进程报错退出、卡死或core宕机的情况。
  2. 若所有卡均上报notify超时错误,则检查错误日志中最早和最晚时间差异是否超过超时阈值,若超过阈值请定位报错时间最晚的rank执行阻塞原因(如save checkpoint)或通过export HCCL_EXEC_TIMEOUT=3600(示例,请根据需要配置)调整超时阈值。
  3. 检查集群中是否存在Device网口通信链路不稳定的情况,排查所有卡的Device侧日志,若存在error cqe的打印,时间位于业务区间内,则请定位网络丢包的原因。