已解决
DistributedDataParallel数据不均衡
来自网友在路上 172872提问 提问时间:2023-10-25 04:41:04阅读次数: 72
最佳答案 问答题库728位专家为你答疑解惑
背景
在使用 DistributedDataParallel 进行数据并行训练时,每次反向传播都需要执行 all_reduce 操作以同步各个进程的梯度。all_reduce 需要进程组中的所有进程参与,如果某一个进程没有执行 all_reduce(一个进程的输入较其他进程少),那么其他进程将会挂起或出错(取决于后端,nccl 后端会挂起,gloo 后端会报错)。
问题
在进行模型训练时,由于数据不均衡,导致不同GPU上训练的轮数不同。比如,0号GPU正在训练第25轮epoch,1号GPU正在训练第30轮epoch。这样训练出来的模型精度不好(0号GPU训练精度92;1号GPU训练精度95,模型只能保存25.pt)。
解决方法
使用model.join方法;
使用Join上下文管理器:with Join([model]);
学习资料
- 浅析 PyTorch 的 Join 原理
https://zhuanlan.zhihu.com/p/630904458 - 通信包
https://www.jianshu.com/p/5f6cd6b50140 - 数据不均衡导致GPU挂起
https://zhuanlan.zhihu.com/p/560490906?utm_id=0 - DP与DDP的区别
https://blog.csdn.net/ytusdc/article/details/122091284
here
here
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"DistributedDataParallel数据不均衡":http://eshow365.cn/6-23897-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!