Pytorch采坑记录:DDP 损失和精度比 DP 差,多卡GPU比单卡GPU效果差

结论:调大学习率或者调小多卡GPU的batch_size

转换DDP模型后模型的整体学习率和batch_size都要变。

当前配置::1GPU:学习率=0.1,batch_size=64
如果8GPU还按之前1GPU配置:8GPU:学习率=0.1,batch_size=64

那么此时对于8GPU而言,效果几乎等于::1GPU:学习率=0.1,batch_size=64 * 8=512

这种8GPU情况下,batch_size等效变大,效果就差了,参考Goyal et al

解决方法是调大学习率或者调小多卡GPU的batch_size

比如上面调大学习率改为 8GPU:学习率=0.1 * 8=0.8,batch_size=64学习率=0.1 * √8 =√8 ,batch_size=64
或者调小batch_size 8GPU:学习率=0.1,batch_size=8

参考:

  1. https://github.com/Lightning-AI/pytorch-lightning/discussions/3706
  2. https://arxiv.org/pdf/1706.02677.pdf

你可能感兴趣的:(pytorch,人工智能,python)