更新时间:2024-08-21 GMT+08:00
日志提示“RuntimeError: connect() timed out”
问题现象
使用pytorch进行分布式训练时,日志中出现报错“RuntimeError: connect() timed out”。
原因分析
出现该问题的可能原因如下:
如果在此之前是有进行数据复制的,每个节点复制的速度不是同一个时间完成的,然后有的节点没有复制完,其他节点进行torch.distributed.init_process_group()导致超时。
处理方法
如果是多个节点复制不同步,并且没有barrier的话导致的超时,可以在复制数据之前,先进行torch.distributed.init_process_group(),然后再根据local_rank()==0去复制数据,之后再调用torch.distributed.barrier()等待所有rank完成复制。具体可参考如下代码:
import moxing as mox import torch torch.distributed.init_process_group() if local_rank == 0: mox.file.copy_parallel(src,dst) torch.distributed.barrier()
建议与总结
在创建训练作业前,推荐您先使用ModelArts开发环境调试训练代码,避免代码迁移过程中的错误。
- 直接使用线上notebook环境调试请参考使用JupyterLab开发模型。
- 配置本地IDE(Pycharm或者VSCode)联接云上环境调试请参考使用本地IDE开发模型。
父主题: GPU相关问题