pytorch中多卡训练

 - pytorch中多卡训练的过程是怎样的?

 - 每张卡都有模型的话BN的参数一样吗?

 - pytorch的DistributedDataParallel每个GPU上的模型参数是完全一样的么?

参数一样,但某些时刻梯度不一样。

DDP工作模式下,流程可以想像成:

  • 并行计算各自的loss
  • 并行backward
  • 不同卡之间同步梯度
  • 反向传播

因为不同卡之间的随机初始化是相同的,DDP可以保证不同进程之间的model参数总是一样的.

你看源码的时候应该也看到了类注释里的NOTICE和WARNING,遵守就可以保证进程之间参数一致. 当然还是不放心可以把evaluation在每个进程都做一次,应当输出一样的结果.


 - 多卡训练的时候batchsize变大了精度反而掉了,这是为什么?有想过怎么解决吗?

多卡训练 large batchsize:

理论上的优点:

数据中的噪声影响可能会变小,可能容易接近最优点;

缺点和问题:

降低了梯度的variance;(理论上,对于凸优化问题,低的梯度variance可以得到更好的优化效果; 但是实际上Keskar et al验证了增大batchsize会导致差的泛化能力);

对于非凸优化问题,损失函数包含多个局部最优点,小的batchsize有噪声的干扰可能容易跳出局部最优点,而大的batchsize有可能停在局部最优点跳不出来。

解决方法:

增大learning_rate,但是可能出现问题,在训练开始就用很大的learning_rate 可能导致模型不收敛 

使用warming up  减少large learning_rate 模型不收敛的问题

warmup

链接:深度学习训练策略--学习率预热Warmup

在训练初期就用很大的learning_rate可能会导致训练不收敛的问题,warmup的思想是在训练初期用小的学习率,随着训练慢慢变大学习率,直到base learning_rate,再使用其他decay(CosineAnnealingLR)的方式训练

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值