0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用一個(gè)GPU實(shí)現(xiàn)八個(gè)GPU的水平

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-11-16 09:24 ? 次閱讀

“如何用一個(gè)GPU實(shí)現(xiàn)八個(gè)GPU的水平?!?/span>

在上一篇文章結(jié)尾,我們?cè)?56秒內(nèi)將模型在CIFAR10上訓(xùn)練到94%的測(cè)試精確度。相比之下,基于單個(gè)V100 GPU上100%的計(jì)算效率,初始基線為341秒,而我們理想中的40秒的目標(biāo)略微不切實(shí)際。今天,我們將定一個(gè)適中的目標(biāo)——超越fast.ai在DAWNBench中的獲勝記錄,其中使用了8個(gè)GPU,訓(xùn)練了174秒。我們會(huì)繼續(xù)使用單個(gè)GPU,因?yàn)榫嚯x使用所有FLOP,我們還離得很遠(yuǎn)。

對(duì)于目前的設(shè)置,我們能得對(duì)所需要的時(shí)間進(jìn)行大致對(duì)比,我們選擇性地刪除了計(jì)算中的某些部分,并運(yùn)行了剩下部分。例如,我們可以現(xiàn)在GPU上預(yù)裝隨機(jī)訓(xùn)練數(shù)據(jù),省去數(shù)據(jù)下載和遷移的時(shí)間。我們還能刪除優(yōu)化器步驟和ReLU以及批規(guī)范層,只留下卷積層。如果這樣做,不同batch size所用時(shí)間如下:

這里有幾點(diǎn)明顯特征。首先,批標(biāo)準(zhǔn)化占用了很大一部分時(shí)間。其次,卷積的主要部分也占用了超過一半的計(jì)算時(shí)間,比我們預(yù)計(jì)的在100%計(jì)算力上用掉一半的時(shí)間還要長(zhǎng)。第三,優(yōu)化器和數(shù)據(jù)下載步驟并不是主要問題。

在GPU專家Graham Hazel的幫助下,我們查看了一些配置文件,迅速發(fā)現(xiàn)了批標(biāo)準(zhǔn)化的一些問題——用PyTorch(0.4版本)將模型轉(zhuǎn)換為半精度的默認(rèn)方法會(huì)觸發(fā)一個(gè)慢速代碼路徑,該路徑不使用優(yōu)化的CuDNN例程。如果我們將批標(biāo)準(zhǔn)化的權(quán)重轉(zhuǎn)換回單精度,那么快速代碼就被激發(fā),所用時(shí)間看起來就更正常了:

經(jīng)過改進(jìn),在35個(gè)epoch內(nèi)訓(xùn)練達(dá)到94%的精度只需要186秒,越來越接近我們的目標(biāo)了!

除此之外,還有很多方法能改進(jìn)訓(xùn)練,將時(shí)間縮短至174秒。GPU代碼還可以進(jìn)一步優(yōu)化,例如,當(dāng)前的激活數(shù)據(jù)以NCHW格式存儲(chǔ),但TensorBoard中的快速CuDNN卷積例程希望數(shù)據(jù)遵循NHWC的順序。所以,在卷積前后執(zhí)行前向和后向轉(zhuǎn)置需要占用很大一部分運(yùn)行時(shí)間。由于PyTorch 0.4不支持原生NHWC計(jì)算,并且在其他框架中似乎沒有成熟的支持,這一問題會(huì)在之后的文章中重點(diǎn)關(guān)注。

將訓(xùn)練時(shí)間減少到30個(gè)epoch,時(shí)間也會(huì)減少到161秒,輕松打破目前的記錄。但如果僅僅加速基準(zhǔn)學(xué)習(xí)速率,在5次運(yùn)行中沒有能達(dá)到94%的案例。

在CIFAR10上一中有效的簡(jiǎn)單正則化策略就是“Cutout”正則化,它可以清除每張訓(xùn)練圖片中的隨機(jī)子集。我們?cè)谟?xùn)練圖像選取隨機(jī)8×8方形子集進(jìn)行實(shí)驗(yàn),除此之外還有標(biāo)準(zhǔn)的數(shù)據(jù)增強(qiáng),用于填補(bǔ)、裁剪、隨機(jī)翻轉(zhuǎn)。

在基線35個(gè)epoch訓(xùn)練后的結(jié)果都達(dá)到了94%的精確度,其中還有一次達(dá)到了94.3%,這也是在基線上的小進(jìn)步。對(duì)學(xué)習(xí)率進(jìn)行手動(dòng)優(yōu)化后,運(yùn)行精度達(dá)到了94.5%(將峰值學(xué)習(xí)速率提前,用簡(jiǎn)單的線性衰減替換衰減相位)。

如果我們?cè)?0個(gè)epoch上提高學(xué)習(xí)速率,4/5的運(yùn)行次數(shù)會(huì)達(dá)到94%的精度,中間值為94.13%。我們可以將batch size提高到768,4/5也能達(dá)到94%,中值為94.06%。當(dāng)batch size為512時(shí),30epoch運(yùn)行時(shí)間為161秒,當(dāng)batch size為768時(shí),時(shí)間為154秒,所有都只在一個(gè)GPU上,打破了我們的目標(biāo)!折線圖如下:

現(xiàn)在我們達(dá)到了文章開頭設(shè)定的目標(biāo),想要復(fù)現(xiàn)這一過程,可以點(diǎn)擊鏈接查看代碼:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb。不過我們的新紀(jì)錄應(yīng)該能很容易打破,首先,我們一直將單個(gè)GPU的計(jì)算能力維持在25%以下,之后還有對(duì)其優(yōu)化的方法。第二,可以用相關(guān)技術(shù)減少訓(xùn)練epoch,例如Mixup正則化和AdamW訓(xùn)練。我們尚未研究如何對(duì)參數(shù)平均以加速最終收斂,如果我們打算在推理時(shí)做更多工作,則可以使用測(cè)試時(shí)間增強(qiáng)來進(jìn)一步縮短訓(xùn)練時(shí)間。還有人提出在更大的網(wǎng)絡(luò)中進(jìn)行小于20個(gè)epoch的實(shí)驗(yàn)訓(xùn)練,結(jié)合fast.ai的技術(shù),進(jìn)一步研究也許會(huì)發(fā)現(xiàn)更有趣的結(jié)果。

但是,目前我們將不繼續(xù)探索這些未開發(fā)的途徑,而是重點(diǎn)觀察目前我們一直使用的網(wǎng)絡(luò),就會(huì)發(fā)現(xiàn)意想不到的收獲。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88316
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128144

原文標(biāo)題:如何訓(xùn)練你的ResNet(三):正則化

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPU

    GPU,Graphic Processing Unit,圖形處理器。GPU是相對(duì)于CPU的個(gè)概念,由于在現(xiàn)代的計(jì)算機(jī)中(特別是家用系統(tǒng),游戲的發(fā)燒友)圖形的處理變得越來越重要,需要
    發(fā)表于 01-16 08:59

    VMware GPU分配/在GPU 1之前首先使用GPU 0

    嗨,我在ESX 6中使用GRID K2。Atm有像GPU0和GPU1之間的負(fù)載平衡。如果我在主機(jī)上打開2 K240q,則第一個(gè)VM被分配給GPU0,即第二
    發(fā)表于 09-10 17:14

    ARM架構(gòu)的GPU和臺(tái)式機(jī)的GPU有什么區(qū)別

    達(dá)或者AMD的獨(dú)立顯卡則是需要很高端的才支持4K的分辨率。這樣的話投入完全不是個(gè)級(jí)別。2:移動(dòng)GPU的能耗比是否比獨(dú)立的PC的GPU高?3:支持2K分辨率和4K顯示的市面上的ARM處
    發(fā)表于 07-18 08:04

    GPU大主流的應(yīng)用場(chǎng)景

    ,以增強(qiáng)游戲用戶體驗(yàn)。何以實(shí)現(xiàn)一個(gè)字:快!GPU并行計(jì)算的基礎(chǔ)結(jié)構(gòu)、可以執(zhí)行海量數(shù)據(jù)計(jì)算;GPU訪存速度快;GPU擁有更高的浮點(diǎn)運(yùn)算能力,
    發(fā)表于 12-07 10:04

    有關(guān)域名知識(shí)八個(gè)問題

    有關(guān)域名知識(shí)八個(gè)問題 什么是域名?    Internet域名是Internet網(wǎng)絡(luò)上的個(gè)服務(wù)器或個(gè)網(wǎng)絡(luò)系統(tǒng)的名字,在全世界,沒有重
    發(fā)表于 01-27 10:07 ?569次閱讀

    有關(guān)域名的不可不t知的八個(gè)問題

    有關(guān)域名的不可不t知的八個(gè)問題 了解域名的相關(guān)知識(shí),下面有關(guān)域名的八個(gè)經(jīng)典問題,將會(huì)有助于你了解域名相關(guān)問題。  
    發(fā)表于 02-23 13:50 ?707次閱讀

    輕松高效地設(shè)置PCB設(shè)計(jì)約束的八個(gè)步驟

    輕松高效地設(shè)置 PCB 設(shè)計(jì)約束的八個(gè)步驟
    發(fā)表于 01-06 14:49 ?0次下載

    確保PCB設(shè)計(jì)成功的八個(gè)步驟

    確保——PCB的設(shè)計(jì)成功的必要的八個(gè)步驟
    發(fā)表于 01-06 14:46 ?0次下載

    確保 PCB 設(shè)計(jì)成功的八個(gè)步驟

    設(shè)計(jì)過程中,確保 PCB 設(shè)計(jì)成功的八個(gè)步驟
    發(fā)表于 05-24 17:12 ?0次下載

    輕松高效地設(shè)置PCB設(shè)計(jì)約束的八個(gè)步驟

    輕松高效地設(shè)置 PCB 設(shè)計(jì)約束的八個(gè)步驟
    發(fā)表于 05-11 16:44 ?0次下載

    PCB布線的八個(gè)經(jīng)典問答

    PCB布線的八個(gè)經(jīng)典問答,學(xué)習(xí)資料,感興趣的可以看看。
    發(fā)表于 10-26 15:28 ?0次下載

    可設(shè)置八個(gè)鬧時(shí)的智能時(shí)鐘

    可設(shè)置八個(gè)鬧時(shí)的智能時(shí)鐘
    發(fā)表于 01-08 14:14 ?5次下載

    AMD銳龍4000有八個(gè)核心,性能提升56%

    AMD近日正式發(fā)布了銳龍4000U、銳龍4000H系列移動(dòng)APU(代號(hào)Renoir),采用7nm工藝、Zen 2架構(gòu),最多八個(gè)CPU核心、八個(gè)GPU計(jì)算單元(512SP),熱設(shè)計(jì)功耗15/45W。
    的頭像 發(fā)表于 01-15 09:08 ?3918次閱讀

    銳龍4000 APU裸片到底有多大 149.27平方毫米面積竟塞下八個(gè)CPU核心

    AMD近日正式發(fā)布了銳龍4000U、銳龍4000H系列移動(dòng)APU(代號(hào)Renoir),采用7nm工藝、Zen 2架構(gòu),最多八個(gè)CPU核心、八個(gè)GPU計(jì)算單元(512SP),熱設(shè)計(jì)功耗15/45W。
    的頭像 發(fā)表于 01-15 10:12 ?5920次閱讀

    八個(gè)開關(guān) 輸入輸出只有Proteus圖

    Proteus八個(gè)開關(guān)輸入輸出
    發(fā)表于 12-30 16:50 ?0次下載