1.多gpu訓練記得dataloader(dataset=dataset_train, batch_size=config['train']['batch'], shuffle=config['train']['shuffle'], num_workers=config['train']['workers'],drop_last=true)中的drop_last=true,把最後一塊資料丟掉,不然最後報錯。
2.如果bn在多gpu要同步,那麼就要用torch.nn.syncbatchnorm.convert_sync_batchnorm(net).to(device_ids[0]),並且要在這個**前面,先初設化:dist.init_process_group('gloo', init_method='file:///tmp/somefile', rank=0, world_size=1)net = torch.nn.dataparallel(net, device_ids=device_ids),具體情況如下
import torch.distributed as distdist.init_process_group('gloo', init_method='file:///tmp/somefile', rank=0, world_size=1)net = torch.nn.dataparallel(net, device_ids=device_ids)
if config["train"]["dataparallel"]["syncbatchnorm"]:
net = torch.nn.syncbatchnorm.convert_sync_batchnorm(net).to(device_ids[0])
else:
net = net.cuda(device=device_ids[0])
Pytorch中多GPU訓練
參考 在資料越來越多的時代,隨著模型規模引數的增多,以及資料量的不斷提公升,使用多gpu去訓練是不可避免的事情。pytorch在0.4.0及以後的版本中已經提供了多gpu訓練的方式,本文簡單講解下使用pytorch多gpu訓練的方式以及一些注意的地方。這裡我們談論的是單主機多gpus訓練,與分布式訓...
pytorch 多GPU訓練(單機多卡 多機多卡)
首先是資料集的分布處理 需要用到的包 torch.utils.data.distributed.distributedsampler torch.utils.data.dataloader torch.utils.data.dataset distributedsampler這個包我們用來確保dat...
Pytorch多GPU訓練踩坑記錄2
使用nn.dataparallel進行多gpu訓練時,對模型進行傳參,有時會出現報錯 runtimeerror chunk expects at least a 1 dimensional tensor nn.dataparallel的作用是將模型和資料分配到各個gpu上,讓其在各自的gpu上訓練,...