pytorch 使用單個GPU與多個GPU進行訓練與測試的方法
如下所示:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")#第一行代碼 model.to(device)#第二行代碼
首先是上面兩行代碼放在讀取數據之前。
mytensor = my_tensor.to(device)#第三行代碼
然后是第三行代碼。這句代碼的意思是將所有最開始讀取數據時的tersor變量copy一份到device所指定的GPU上去,之后的運算都在GPU上進行。需要注意的是這句話并不像前面的兩行代碼一樣只需要寫一遍,第三行代碼需要寫的次數就等于需要保存到GPU上的tensor變量個數;一般情況下這些tensor變量都是最開始讀取數據時的tensor變量,后面所衍生的變量自然也都在GPU之上。
以上是使用單個GPU的情況。當你擁有多個GPU時,要想使用多個GPU進行訓練和測試,需要在第一二行代碼之間插上下面這樣一個判斷語句,其余的寫法也都是一樣的。
if torch.cuda.device_count() > 1: model = nn.DataParallel(model)
使用多個GPU的原理就是通過上面這句代碼將model在每個GPU上分別保存一份,然后對model的輸入tensor進行自動的分割,每個GPU計算tensor的一部分,這樣就能實現計算量的平均分配。在每個model計算完成之后,DataParallel將這些結果進行收集和融合,之后再將結果返回。
以上這篇pytorch 使用單個GPU與多個GPU進行訓練與測試的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。