Pytorch 分布式训练心得(DP|DDP|MP)

记得接触DistributedDataParallel(DDP)之前,自己一直用DataParallel(DP)跑多卡,浪费了不少时间,恰好最近几天接触到了Swin-Transformer就尝试了下DDP,如下是心得。

首先呢,我是在云端租的服务器尝试了单机2、4、8卡训练,采用命令行调用DDP后发现它一直卡在装载模型上占用了GPU显存,必须kill PID才行,也考虑到我习惯用python train.py的方式,就使用了MultiProcessing(MP)的方式,最终成功,关于其具体的实现过程大家可以看看其他博客的做法。我这里考虑到Pertrain 的模型是没用apex的,使用后loss 会从1e+7左右下降,等待时间未免有些得不偿失,还看到有的博主说DDP和apex对model加速差别不大,我就决定用MP了。我这里主要就是DP->DDP->MP+torch的reduce loss+多线程BN(没用apex的是因为没用它加速)

其次,根据我的实验发现,在不考虑装载的时间MP比DP在4卡上大致快了1/4,但与此同时其将Batch_size也缩小了4倍(我认为只要显卡能承受,这样就是比较好的,小batch_size跟稳定,结果也更好一些),要是考虑到装载时间,ennnn,那也还好(除了8卡机,我再一次卡在装载界面,现在还不确定是哪方面的问题,不行的话,就只能租4卡机了)

当然,我对自己的编程能力还没有那么自信,上诉结果可能是因为自己写错了代码,后续还需要根据实验结果看下是否正确)

————————————

废话:在我写完博客再去看8卡机的时候,发现它开始train了,开心(但是它的速度没有变成4卡机的2倍,稍微慢了12.5%)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值