本文主要是介绍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
参考:
- https://github.com/Lightning-AI/pytorch-lightning/discussions/3706
- https://arxiv.org/pdf/1706.02677.pdf
这篇关于Pytorch采坑记录:DDP 损失和精度比 DP 差,多卡GPU比单卡GPU效果差的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!