關(guān)于pytorch多GPU訓(xùn)練實例與性能對比分析
以下實驗是我在百度公司實習(xí)的時候做的,記錄下來留個小經(jīng)驗。
多GPU訓(xùn)練
cifar10_97.23 使用 run.sh 文件開始訓(xùn)練
cifar10_97.50 使用 run.4GPU.sh 開始訓(xùn)練
在集群中改變GPU調(diào)用個數(shù)修改 run.sh 文件
nohup srun --job-name=cf23 $pt --gres=gpu:2 -n1 bash cluster_run.sh $cmd 2>&1 1>>log.cf50_2GPU &
修改 –gres=gpu:2 即可
Python 文件代碼修改
parser.add_argument('--batch_size', type=int, default=96*2, help='batch size')
修改對應(yīng) batch size 大小,保證每塊GPU獲得等量的訓(xùn)練數(shù)據(jù),因為batch_size的改變會影響訓(xùn)練精度
最容易實現(xiàn)的單GPU訓(xùn)練改為多GPU訓(xùn)練代碼
單GPU:logits, logits_aux = model(input)
多GPU:
if torch.cuda.device_count()>1:#判斷是否能夠有大于一的GPU資源可以調(diào)用 logits, logits_aux =nn.parallel.data_parallel(model,input) else: logits, logits_aux = model(input)
缺點:不是性能最好的實現(xiàn)方式
優(yōu)點:代碼嵌入適應(yīng)性強(qiáng),不容易報錯
性能分析
該圖為1到8GPU訓(xùn)練cifar10——97.23網(wǎng)絡(luò)的實驗對比

可以看到單核訓(xùn)練600輪需要53小時、雙核訓(xùn)練600輪需要26小時、四核16、六核14、八核13。
在可運行7小時的GPU上的對比實驗:單核跑完83輪、雙核跑完163輪、四核跑完266輪
結(jié)論:性價比較高的是使用4~6核GPU進(jìn)行訓(xùn)練,但是多GPU訓(xùn)練對于單GPU訓(xùn)練有所差異,訓(xùn)練的準(zhǔn)確率提升會有所波動,目前發(fā)現(xiàn)的是負(fù)面的影響。
以上這篇關(guān)于pytorch多GPU訓(xùn)練實例與性能對比分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Keras:Unet網(wǎng)絡(luò)實現(xiàn)多類語義分割方式
本文主要利用U-Net網(wǎng)絡(luò)結(jié)構(gòu)實現(xiàn)了多類的語義分割,并展示了部分測試效果,希望對你有用!2020-06-06
使用Matplotlib創(chuàng)建基本圖表的詳細(xì)指南
Matplotlib 是一個功能強(qiáng)大的 Python 庫,用于創(chuàng)建各種類型的圖表和可視化,在本文中,我們將提供一個完整的指南,介紹如何使用 Matplotlib 創(chuàng)建基本的圖表,包括折線圖、散點圖、柱狀圖和餅圖,感興趣的小伙伴跟著小編一起來看看吧2024-05-05
基于python計算滾動方差(標(biāo)準(zhǔn)差)talib和pd.rolling函數(shù)差異詳解
這篇文章主要介紹了基于python計算滾動方差(標(biāo)準(zhǔn)差)talib和pd.rolling函數(shù)差異詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
淺談Keras參數(shù) input_shape、input_dim和input_length用法
這篇文章主要介紹了淺談Keras參數(shù) input_shape、input_dim和input_length用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

