關於pytorch的gpu並行的問題

2021-09-21 18:51:31 字數 1167 閱讀 4781

在深度學習任務中,使用多gpu並行操作是必不可少的,因為深度學習任務的計算量之大導致使用cpu進行計算會相當耗時,而gpu的計算速度是cpu的幾十倍甚至上百倍。這是因為gpu內部是採用平行計算,而cpu採用的是序列。

pytorch深度學習框架也能夠指定多gpu並行,使用gpu並行需要指定以下幾步:

(1)宣告可見物理gpu:這一步相當於告訴程式只能夠看見那幾塊gpu,在python中宣告如下

import os

os.environ["cuda_visible_devices"] = "1,2,3,4"

如上述**所示,指定程式只能夠看到1,2,3,4號gpu

(2)指定模型使用的物理gpu:

from torch import nn

device_ids = [0, 2]

model_gpu = nn.dataparallel(module=my_model, device_ids=device_ids)

這裡的device_ids是物理gpu對應的索引,如(1)中指定的物理gpu為"1,2,3,4",其對應索引為0,1,2,3,那這裡指定device_ids=[0, 2]表示使用物理gpu1和物理gpu3

(3)將模型放在device_ids[0]上作為controller:

model_gpu = model_gpu.cuda(device_ids[0])
通過以上三步,就可以指定多gpu運算,當然需要注意的是,要使用gpu運算,需要將模型輸入資料,損失函式計算物件均放至device_ids[0]上

接下來使用**進行了簡單的驗證:

可以看到指定物理gpu為4,5,6,7號,device_ids設定為[0, 3],應當使用的是物理gpu4和物理gpu7,結果如下圖

驗證了猜測,再次進行測試

這次指定物理gpu仍然為4,5,6,7號,不同的是指定device_ids為[1, 3],也就是使用物理gpu5和物理gpu7,執行結果如下圖

pytorch學習10 GPU並行

pytorch在gpu並行方面還算很方便。在定義好model之後只需要使用一行 model torch.nn.dataparallel model 即可實現在所有gpu上並行運算。但是有時候直接占用所的gpu是沒有必要的,如果要指定gpu,可以在dataparallel中增加乙個引數 model t...

Pytorch指定GPU的方法

export cuda visible devices 0 這裡是要使用的gpu編號2.在程式開頭設定 os.environ cuda visible devices 0,1,2,3 在執行程式時指定一般先在程式開頭輸入該 3.執行程式時使用命令列,來設定該程式可見的gpu cuda visible...

PyTorch指定GPU裝置

pytorch預設使用從0開始的gpu,如果gpu0正在執行程式,需要指定其他gpu。有如下兩種方法來指定需要使用的gpu。1.類似tensorflow指定gpu的方式,使用cuda visible devices。1.1 直接終端中設定 cuda visible devices 1 python ...