您好,登錄后才能下訂單哦!
以下實驗是我在百度公司實習的時候做的,記錄下來留個小經(jīng)驗。
多GPU訓練
cifar10_97.23 使用 run.sh 文件開始訓練
cifar10_97.50 使用 run.4GPU.sh 開始訓練
在集群中改變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獲得等量的訓練數(shù)據(jù),因為batch_size的改變會影響訓練精度
最容易實現(xiàn)的單GPU訓練改為多GPU訓練代碼
單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)性強,不容易報錯
性能分析
該圖為1到8GPU訓練cifar10——97.23網(wǎng)絡(luò)的實驗對比
可以看到單核訓練600輪需要53小時、雙核訓練600輪需要26小時、四核16、六核14、八核13。
在可運行7小時的GPU上的對比實驗:單核跑完83輪、雙核跑完163輪、四核跑完266輪
結(jié)論:性價比較高的是使用4~6核GPU進行訓練,但是多GPU訓練對于單GPU訓練有所差異,訓練的準確率提升會有所波動,目前發(fā)現(xiàn)的是負面的影響。
以上這篇關(guān)于pytorch多GPU訓練實例與性能對比分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。