日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch指定用多张显卡训练_Pytorch中多GPU训练指北

發布時間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch指定用多张显卡训练_Pytorch中多GPU训练指北 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在數據越來越多的時代,隨著模型規模參數的增多,以及數據量的不斷提升,使用多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])

或者這樣:

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

另一種方法

在前言中提到過,另一種方法DistributedParallel,雖然主要的目標為分布式訓練,但也是可以實現單主機多GPU方式訓練的,只不過比上一種方法稍微麻煩一點,但是訓練速度和效果比上一種更好。

為什么呢?

請看官方相關介紹:

nccl backend is currently the fastest and highly recommended backend to be used with Multi-Process Single-GPU distributed training and this applies to both single-node and multi-node distributed training

好了,來說說具體的使用方法(下面展示一個node也就是一個主機的情況)為:

上述的命令和我們平常的命令稍有區別,這里我們用到了torch.distributed.launch這個module,我們選擇運行的方式變換為python -m,上面相當于使用torch.distributed.launch.py去運行我們的YOUR_TRAINING_SCRIPT.py,其中torch.distributed.launch會向我們的運行程序傳遞一些變量。

為此,我們的YOUR_TRAINING_SCRIPT.py也就是我們的訓練代碼中這樣寫(省略多余代碼,只保留核心代碼):

我們要注意,上述代碼在運行的過程中產生了很多個,具體多少個取決你GPU的數量,這也是為什么上面需要torch.cuda.set_device(args.local_rank)設定默認的GPU,因為torch.distributed.launch為我們觸發了n個YOUR_TRAINING_SCRIPT.py進程,n就是我們將要使用的GPU數量。

有一點想問的,我們每次必須要使用命令行的方式去運行嗎?當然也可以一鍵解決,如果我們使用Pycharm,只需要配置成下面這樣就可以了:

單顯卡與DataParallel多顯卡訓練對比

最近兩天訓練一個魔改的mobilenetv2+yolov3,同樣的優化方法同樣的學習率衰減率,所有的參數都相同的情況下,發現單顯卡訓練的方式竟然比多顯卡訓練的方式收斂更快。

配置為兩張1080Ti,使用Pytorch的版本為1.0.0。下圖紅線為使用一張1080Ti訓練的情況,藍線為使用兩張1080Ti訓練的情況,batchsize每張顯卡設置為10,也就是說,使用兩張顯卡訓練時的batchsize為單張顯卡的兩倍,同一個step時,雙卡走的步數為單卡步數的兩倍。這里使用的多卡訓練方式為DataParallel。

但是下圖可以看到,在雙卡相同step的情況下,雖然紅色曲線的損失相較藍色下降的稍微慢一些,但是到了一定時候,兩者的損失值會相交(此時未達到最低損失點),也就是說使用雙卡和單卡訓練時候loss損失收斂的速度是一樣的。

更奇怪的是,下圖中,在驗證集中,單顯卡雖然沒有雙顯卡的準確度曲線增長迅速,但是到了某一點,單顯卡的曲線會超過雙顯卡訓練的精度,也就是說,單卡訓練在前期沒有雙卡訓練效果顯著,但是到了訓練中期效果就會優于雙卡。

(上述兩個圖為訓練早期和中期的展示,并沒有完全訓練完畢)關于為什么會這樣的情況,有可能是因為訓練中期所有的激活值更新幅度不是很明顯(一般來說,權重值和激活值更新幅度在訓練前期比較大),在不同GPU轉化之間會損失一部分精度?。當然這僅僅是猜測,博主還沒有仔細研究這個問題,待有結論時會在這里進行更新。

注意點

多GPU固然可以提升我們訓練的速度,但弊端還有有一些的,有幾個我們需要注意的點:

多個GPU的數量盡量為偶數,奇數的GPU有可能會出現中斷的情況

選取與GPU數量相適配的數據集,多顯卡對于比較小的數據集來說反而不如單個顯卡訓練的效果好

多GPU訓練的時候注意機器的內存是否足夠(一般為使用顯卡顯存x2),如果不夠,建議關閉pin_memory(鎖頁內存)選項。

采用DistributedDataParallel多GPUs訓練的方式比DataParallel更快一些,如果你的Pytorch編譯時有nccl的支持,那么最好使用DistributedDataParallel方式。

關于什么是鎖頁內存:

pin_memory就是鎖頁內存,創建DataLoader時,設置pin_memory=True,則意味著生成的Tensor數據最開始是屬于內存中的鎖頁內存,這樣將內存的Tensor轉義到GPU的顯存就會更快一些。

主機中的內存,有兩種存在方式,一是鎖頁,二是不鎖頁,鎖頁內存存放的內容在任何情況下都不會與主機的虛擬內存進行交換(注:虛擬內存就是硬盤),而不鎖頁內存在主機內存不足時,數據會存放在虛擬內存中。顯卡中的顯存全部是鎖頁內存,當計算機的內存充足的時候,可以設置pin_memory=True。當系統卡住,或者交換內存使用過多的時候,設置pin_memory=False。因為pin_memory與電腦硬件性能有關,pytorch開發者不能確保每一個煉丹玩家都有高端設備,因此pin_memory默認為False。

總結

以上是生活随笔為你收集整理的pytorch指定用多张显卡训练_Pytorch中多GPU训练指北的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲无码精品在线播放 | 师生出轨h灌满了1v1 | 成人在线视频一区二区三区 | 国产精品成人久久久久 | 一区二区三区视频网 | 人妻久久一区二区 | 欧美日韩亚洲一区二区 | 婷婷综合五月 | 成人毛片基地 | 奇米影视7777| 超碰av在线| 国产人妻久久精品一区二区三区 | 亚洲国产精品无码久久久 | 香蕉依人 | 免费成人毛片 | 少妇被黑人到高潮喷出白浆 | 成人久久久久久久 | 国产四区 | 一区二区成人在线 | 日本黄色xxxxx | 成人av教育 | 欧美乱码精品一区二区 | 日韩videos| 欧美三级在线视频 | 日韩黄色在线观看 | 91丨porny丨成人蝌蚪 | 7m精品福利视频导航 | 成年人午夜网站 | 黄色大片中文字幕 | 欧美日韩一区二区三区四区五区 | 欧美多p | 这里只有精品视频在线观看 | 男女操操视频 | 日韩欧美二区 | 可以看av| 久久久久久久久久久99 | 日韩欧美黄色 | 不卡的中文字幕 | 天天夜碰日日摸日日澡性色av | 成熟丰满熟妇高潮xxxxx视频 | 精品一区不卡 | 华人av在线| 久久在线视频免费观看 | 欧美日韩一区二区三区国产精品成人 | 少妇2做爰bd在线意大利堕落 | 99er在线 | 天天久久综合网 | 林雅儿欧洲留学恋爱日记在线 | sese久久 | 日本三级黄在线观看 | 色久月| av自拍偷拍| 免费成人美女女电影 | 天天干天天干天天干天天 | 奇米影视777在线观看 | 91羞羞网站 | 朋友人妻少妇精品系列 | 91激情视频在线观看 | 欧美精品久久久久久久多人混战 | 香蕉综合网 | aa一级黄色片 | 91嫩草香蕉 | 日韩国产精品久久 | 99色热| 视频一区二区三区在线观看 | 免费不卡av | 亚洲午夜18毛片在线看 | 男女做爰真人视频直播 | 亚洲第一黄网 | 亚洲 国产 日韩 欧美 | 尤物视频官网 | 浪潮av一区二区三区 | 久久网一区二区 | 神马午夜一区 | 国产天堂 | 操操久久 | 爱情岛论坛亚洲品质自拍 | 91精品国产色综合久久不卡粉嫩 | 免费极品av一视觉盛宴 | 领导揉我胸亲奶揉下面 | 成人午夜在线免费观看 | 伊人影院视频 | 老司机亚洲精品 | 日韩精品字幕 | 日韩在线观看网址 | 精品无码一区二区三区的天堂 | 国产精品成人一区二区网站软件 | 华人色 | 日本人妻丰满熟妇久久久久久 | 污网址在线观看 | www激情com| 免费观看视频一区 | 瑟瑟视频在线观看 | 日本女人性视频 | 五月在线 | 国产成人+综合亚洲+天堂 | 日韩在线影视 | 日韩精品91| 国产一区欧美日韩 |