Pytorch中多GPU訓練

2021-09-19 07:07:14 字數 1116 閱讀 4527

參考

在資料越來越多的時代,隨著模型規模引數的增多,以及資料量的不斷提公升,使用多gpu去訓練是不可避免的事情。pytorch在0.4.0及以後的版本中已經提供了多gpu訓練的方式,本文簡單講解下使用pytorch多gpu訓練的方式以及一些注意的地方。

這裡我們談論的是單主機多gpus訓練,與分布式訓練不同,我們採用的主要pytorch功能函式為dataparallel而不是distributedparallel,後者為多主機多gpus的訓練方式,但是在實際任務中,兩種使用方式也存在一部分交集。

使用多卡訓練的方式有很多,當然前提是我們的裝置中存在兩個及以上的gpu:使用命令nvidia-smi檢視當前ubuntu平台的gpu數量(windows平台類似),其中每個gpu被編上了序號:[0,1]:

在我們裝置中確實存在多卡的條件下,最簡單的方法是直接使用torch.nn.dataparallel將你的模型wrap一下即可:

net = torch.nn.dataparallel(model)
這時,預設所有存在的顯示卡都會被使用。

如果我們機子中有很多顯示卡(例如我們有八張顯示卡),但我們只想使用0、1、2號顯示卡,那麼我們可以:

net = torch.nn.dataparallel(model, device_ids=[0, 1, 2])
或者這樣:

os.environ["cuda_visible_devices"] = ','.join(map(str, [0,1,2]))

net = torch.nn.dataparallel(model)

# cuda_visible_devices 表示當前可以被python環境程式檢測到的顯示卡

很簡單的操作,這樣我們就可以比較方便地使用多卡進行訓練了。

pytorch 多GPU訓練(單機多卡 多機多卡)

首先是資料集的分布處理 需要用到的包 torch.utils.data.distributed.distributedsampler torch.utils.data.dataloader torch.utils.data.dataset distributedsampler這個包我們用來確保dat...

pytorch 多GPU訓練注意事項

1.多gpu訓練記得dataloader dataset dataset train,batch size config train batch shuffle config train shuffle num workers config train workers drop last true ...

Pytorch多GPU訓練踩坑記錄2

使用nn.dataparallel進行多gpu訓練時,對模型進行傳參,有時會出現報錯 runtimeerror chunk expects at least a 1 dimensional tensor nn.dataparallel的作用是將模型和資料分配到各個gpu上,讓其在各自的gpu上訓練,...