在深度學習任務中,使用多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 ...