有时候在分布式训练时,可能会出现nccl通信超时的问题,出现的原因好像是在某些数据处理、加载等过程,多个进程一起完成,但是某些计算(比如loss具体不知道都有啥)需要rank0自己来做,但是由于默认的30分钟没算完,没完成不同rank之间的正常通信,导致报错。
原因:
一般从其他地方follow过来的代码本身都是没问题的,别人成熟的代码能跑通,放到自己的机器上应该也没太大问题,我出现这个问题的原因是自己在代码上魔改了一些,增加了一些计算,测试了一下发现这些计算非常耗时,可能导致没能在正常时间内顺利执行下去,删掉那些之前的测试计算内容后,程序顺利执行。