鱼C论坛

 找回密码
 立即注册
查看: 1394|回复: 2

关于Pytorch的DistributedDataParallel

[复制链接]
发表于 2022-2-12 20:23:37 | 显示全部楼层 |阅读模式
30鱼币
这个类是如何管理数据的呢?假如现在有8000训练集,4个GPU,那么是每个GPU分2000吗?

另外训练过程是怎样的呢,比如我epcho设为500,那他是每个GPU都以2000为训练集各自训练500次还是如何呢?
我在每个epoch的开头都放上了print(f'{epcho}th train')打印的是:
0th train
0th train
0th train
0th train
1th train
1th train
1th train
1th train
.......

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-13 13:44:37 | 显示全部楼层
可以参考我之前开源的项目:https://github.com/SegmentationBLWX/sssegmentation

distributed training的dataloader就是管理数据用的,区别就是update parameters的时候把各个模型的梯度求平均再反传
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-2-14 08:38:13 | 显示全部楼层
Charles未晞 发表于 2022-2-13 13:44
可以参考我之前开源的项目:https://github.com/SegmentationBLWX/sssegmentation

distributed training ...

我有尝试在程序的开头加上一条print(),发现每个进程都会打印,看起来像是各GPU都执行一遍程序的所有内容。这样似乎我在每一块GPU都创建了DistributedDataParallel,可按照DDP的说法,它是得到model的副本,这样不是意味着每一块GPU都会复制吗?那么谁是原版.....还有DistributedSampler,难道是每一块GPU都进行数据集分配吗?这样不是很奇怪吗。多块GPU之间的交流只有传递梯度这一条吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表