百科问答小站 logo
百科问答小站 font logo



pytorch ddp训练中一个node fail,导致整个训练失败,有可能解决吗? 第1页

  

user avatar   liustein 网友的相关建议: 
      

其实我从来没有想过要去挽救一个挂掉的训练。。。毕竟人家要是挂了,还是要尽量搞清楚怎么回事。俗话说的好,如果你发现了一只蟑螂,一定在暗处还藏着一万只。。。所以,与其学习和蟑螂共存,不如把他干掉啊。

不过我还是挺好奇的,就搜索了一番,感觉有点价值,就稍微贡献一下我的搜索成果。

Torch Elastic自然是可以,一般做法是经常保存模型,然后出问题Torch Elastic会重启所有节点,重启的时候恢复之前保存的最近的模型和训练状态然后继续训练。

还有一个技巧是使用nccl的超时功能,如果什么都不做,nccl是没有超时功能的。但把NCCL_ASYNC_ERROR_HANDLING的环境变量设置成1,然后在初始化进程的时候这么设置:

       import torch.distributed as dist  dist.init_process_group(          backend=nccl,     timeout=timedelta(seconds=5) )     

nccl就会在节点超时5秒的时候抛出异常。nccl的超时功能加上Torch Elastic,就可以处理因为超时而挂掉的节点了。

一点微小的贡献哈


user avatar   xiaohuzc 网友的相关建议: 
      

补充一点:torch新出的Join可以处理DDP中数据不均匀的情况,本质上就是忽略那些已经join的node,所以可以在每个node中catch异常,发现异常可以提前join,也是一种处理方式吧。


user avatar   shaoziqi 网友的相关建议: 
      

Torch Elastic


user avatar   ding-ming-55-55 网友的相关建议: 
      

各种弹性训练适用范围有限。。。例如用zero之类的训练有点挂了神仙难救,还是勤存ckpt是王道。




  

相关话题

  算法岗位真的需要顶会才能入场吗? 
  ICLR 2019 有什么值得关注的亮点? 
  如何评价 MSRA 最新的 Deformable Convolutional Networks? 
  有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程? 
  Pytorch有什么节省显存的小技巧? 
  如何看待 Guido 宣布退出 Python 决策层? 
  视觉Transformer如何优雅地避开位置编码? 
  机器学习能否用于综合评价?具体怎么操作? 
  新手如何入门pytorch? 
  你是如何开始能写 Python 爬虫? 

前一个讨论
什么叫文化素养?
下一个讨论
为什么说大模型训练很难?





© 2025-04-04 - tinynew.org. All Rights Reserved.
© 2025-04-04 - tinynew.org. 保留所有权利