在Ascend上进行多机/多卡训练时,经常会遇到这种报错:
报这种错误的原因是该卡在最大等待时长内,没有收到其他卡的同步消息。
而没有收到其他卡的同步消息,有很多种可能:
- 其他卡挂了;
- 其他卡还在执行编译,且编译时间略长,超出了该卡的最大等待时长;
对于第一种情况,需要检查是否存在某张卡有问题无法正常使用的情况,可能是硬件问题,也可能是软件问题,可以通过查看每张卡的plog得知进一步的信息:
$ cd /root/ascend/log/plog
$ vi plog-xxx.log
而对于第二种情况,我们可以设置延长每张卡的最大等待时长:
$ export HCCL_CONNECT_TIMEOUT=600
这里设置成了600秒(默认为300秒),可以根据自己需要设置不同的时长。