1、DataParallel原理
2、DataParallel使用
os.environ['CUDA_VISIBLE_DEVICES'] = '2, 7' # 设置可见GPU编号
# device_ids=range(torch.cuda.device_count()) # torch.cuda.device_count()=2
# device_ids=[0,1] 这里的0 就是上述指定 2,是默认主gpu, 1就是7,模型和数据由主gpu分发
model = Model(...)
if torch.cuda.device_count() > 1:
model = nn.DataParallel(model)
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device) # cuda:0将为主gpu
# 以上两行可以用model.cuda()代替,默认cuda:0为主gpu
...
mytensor = my_tensor.to(device)
3、使用DataParallel的模型保存与加载:
https://www.cnblogs.com/wildkid1024/p/13025352.html
4、DistributedDataParallel单机多gpu训练与模型保存加载:
(文中代码里有少许bug):
Multi-GPU Computing with Pytorch (Draft) (srijithr.gitlab.io)
参考:
pytorch 多GPU训练总结(DataParallel的使用)_不忘初心不动摇-CSDN博客_pytorch多gpu训练
Optional: Data Parallelism — PyTorch Tutorials 1.10.0+cu102 documentation