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

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

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

如何用單獨(dú)的GPU,在CIFAR-10圖像分類數(shù)據(jù)集上高效地訓(xùn)練殘差網(wǎng)絡(luò)

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

在這一系列文章中,我們主要研究如何用單獨(dú)的GPU,在CIFAR-10圖像分類數(shù)據(jù)集上高效地訓(xùn)練殘差網(wǎng)絡(luò)(Residual networks)。

為了記錄這一過程,我們計算了網(wǎng)絡(luò)從零開始訓(xùn)練到94%的精確度所需的時間。這一基準(zhǔn)來自最近的DAWNBench競賽。在競賽結(jié)束后,單個GPU上的最好成績是341秒,八個GPU上最好成績是174秒。

Baseline

在這部分中,我們復(fù)制了一個基線,在6分鐘內(nèi)訓(xùn)練CIFAR10,之后稍稍加速。我們發(fā)現(xiàn),在GPU的FLOPs計算完之前,仍有很大的提升空間。

過去幾個月,我一直在研究如何能更快度訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)。這個想法是從今年年初萌生的,當(dāng)時我正和Myrtle的Sam Davis進(jìn)行一個項(xiàng)目。我們將用于自動語音識別的大型循環(huán)神經(jīng)網(wǎng)絡(luò)壓縮后,部署到FPGAs上,重新訓(xùn)練模型。來自Mozilla的基線在16個GPU上訓(xùn)練了一個星期。后來,經(jīng)過Sam的努力,我們在英偉達(dá)的Volta GPUs上進(jìn)行混淆精度訓(xùn)練,得以將訓(xùn)練時間縮短了100倍,迭代時間在單個GPU上只需要不到一天的時間。

這一結(jié)果讓我思考還有什么可以實(shí)現(xiàn)加速?幾乎與此同時,斯坦福大學(xué)的研究人員們開啟了DAWNBench挑戰(zhàn)賽,比較多個深度學(xué)習(xí)基線上的訓(xùn)練速度。最受人關(guān)注的就是訓(xùn)練圖像分類模型在CIFAR10上達(dá)到94%的測試精確度,在ImageNet上達(dá)到93%、top5的成績。圖像分類是深度學(xué)習(xí)研究的熱門領(lǐng)域,但是訓(xùn)練速度仍需要數(shù)小時。

到了四月份,挑戰(zhàn)賽接近尾聲,CIFAR10上最快的單個GPU訓(xùn)練速度來自fast.ai的一名學(xué)生Ben Johnson,他在不到6分鐘(341秒)的時間里訓(xùn)練出了94%的精確度。這一創(chuàng)新主要是混淆精度的訓(xùn)練,他選擇了一個較小的網(wǎng)絡(luò),有足夠的能力處理任務(wù)并且可以用更高的學(xué)習(xí)速率加速隨機(jī)梯度下降。

這時我們不禁提出一個問題:這種341秒訓(xùn)練出來的94%測試精度,在CIFAR10上的表現(xiàn)怎么樣?該網(wǎng)絡(luò)的架構(gòu)是一個18層的殘差網(wǎng)絡(luò),如下所示。在這個案例中,圖層的數(shù)量表示卷積(紫色)和完全連接層(藍(lán)色)的序列深度:

網(wǎng)絡(luò)通過隨機(jī)梯度下降訓(xùn)練了35個epoch,學(xué)習(xí)速率圖如下:

現(xiàn)在我們假設(shè)在一個英偉達(dá)Volta V100 GPU上用100%的計算力,訓(xùn)練將需要多長時間。網(wǎng)絡(luò)在一張32×32×3的CIFAR10圖像上進(jìn)行前向和后向傳遞時需要大約2.8×109FLOPs。假設(shè)參數(shù)更新不耗費(fèi)計算力,那么在50000張圖像訓(xùn)練35個epoch應(yīng)該會在5×1015FLOPs以內(nèi)完成。

Tesla V100有640個Tensor Cores,能支持125 TeraFLOPS的深度學(xué)習(xí)性能。

假設(shè)我們能發(fā)揮100%的計算力,那么訓(xùn)練會在40秒內(nèi)完成,這么看來341秒的成績還有很大的提升空間。

有了40秒這個目標(biāo),我們就開始了自己的訓(xùn)練。首先是用上方的殘差網(wǎng)絡(luò)重新復(fù)現(xiàn)基線CIFAR10的結(jié)果。我用PyTorch創(chuàng)建了一個網(wǎng)絡(luò),重新復(fù)制了學(xué)習(xí)速率和超參數(shù)。在AWS p3.2的圖像上用單個V100 GPU訓(xùn)練,3/5的運(yùn)行結(jié)果在356秒內(nèi)達(dá)到了94%的精確度。

基線建好后,下一步是尋找可以立即使用的簡單改進(jìn)方法。首先我們觀察到:網(wǎng)絡(luò)開頭是由黃色和紅色的兩個連續(xù)norm-ReLU組成的,在紫色卷積之后,我們刪去重復(fù)部分,同樣在epoch 15也發(fā)生了這樣的情況。進(jìn)行調(diào)整后,網(wǎng)絡(luò)架構(gòu)變得更簡單,4/5的運(yùn)行結(jié)果在323秒內(nèi)達(dá)到了94%的精確度!刷新了記錄!

另外我們還觀察到,圖像處理過程中的一些步驟(填充、標(biāo)準(zhǔn)化、位移等等)每經(jīng)過訓(xùn)練集一次就要重新處理一遍,會浪費(fèi)很多時間。雖然提前預(yù)處理可以用多個CPU處理器減輕這一結(jié)果,但是PyTorch的數(shù)據(jù)下載器會從每次數(shù)據(jù)迭代中開始新一次的處理。這一配置時間是很短的,尤其在CIFAR10這樣的小數(shù)據(jù)集上。只要在訓(xùn)練前做了準(zhǔn)備,減少預(yù)處理壓力,就能減少處理次數(shù)。遇到更復(fù)雜的任務(wù),需要更多預(yù)處理步驟或多個GPU時,就會在每個epoch之間保持?jǐn)?shù)據(jù)下載器的處理。溢出了重復(fù)工作、減少了數(shù)據(jù)下載器后,訓(xùn)練時間達(dá)到了308秒。

繼續(xù)研究后我們發(fā)現(xiàn),大部分預(yù)處理時間都花在了召集隨機(jī)數(shù)字生成器,選擇數(shù)據(jù)增強(qiáng)而不是為它們本身增強(qiáng)。在完全訓(xùn)練時期,我們對隨機(jī)數(shù)字生成器執(zhí)行了幾百萬個單獨(dú)命令,把它們結(jié)合在一個較小的命令中,每個epoch可以省去7秒訓(xùn)練時間。最終的訓(xùn)練時間縮短到了297秒。這一過程的代碼可以點(diǎn)擊:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb

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

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128143
  • 圖像分類
    +關(guān)注

    關(guān)注

    0

    文章

    89

    瀏覽量

    11887
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120591

原文標(biāo)題:如何訓(xùn)練你的ResNet(一):復(fù)現(xiàn)baseline,將訓(xùn)練時間從6分鐘縮短至297秒

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

收藏 人收藏

    評論

    相關(guān)推薦

    計算機(jī)視覺/深度學(xué)習(xí)領(lǐng)域常用數(shù)據(jù)匯總

    訓(xùn)練,100張用于測試;這100個類分組成20個超類。圖像類別均有明確標(biāo)注。CIFAR對于圖像分類算法測試來說是一個非常不錯的中小規(guī)模
    發(fā)表于 08-29 10:36

    線性分類

    ,...,N并且y-->1,2,3,4,...,K。這就是說,我們有N個圖像樣例,每個圖像的維度是D,共有K種不同的分類。舉例來說,CIFAR-1
    發(fā)表于 10-09 09:40

    使用CIFAR-10彩色圖片訓(xùn)練出現(xiàn)報錯信息及解決

    PaddlePaddle使用CIFAR-10彩色圖片訓(xùn)練出現(xiàn)輸出數(shù)據(jù)維度錯誤
    發(fā)表于 02-28 06:51

    當(dāng)AI遇上FPGA會產(chǎn)生怎樣的反應(yīng)

    FPGA方案可加速ResNet等神經(jīng)網(wǎng)絡(luò),能夠應(yīng)用于圖片分類、對象檢測和人臉識別等應(yīng)用場景。以通過構(gòu)建ResNet網(wǎng)絡(luò)的圖片識別
    發(fā)表于 09-17 17:08

    【ELT.ZIP】OpenHarmony啃論文俱樂部—gpu上高效無損壓縮浮點(diǎn)數(shù)

    的壓縮率和吞吐量每個數(shù)據(jù)的壓縮效率。上表列出了每個壓縮器每個數(shù)據(jù)上實(shí)現(xiàn)的壓縮率和吞吐量。雖然ndzip-
    發(fā)表于 07-27 10:16

    如何進(jìn)行高效的時序圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練

    提高吞吐量、提高訓(xùn)練性能。綜上,針對時序圖神經(jīng)網(wǎng)絡(luò)中出現(xiàn)的高額設(shè)備間通信開銷問題,本文提出了局部性感知的數(shù)據(jù)劃分策略和高效的任務(wù)調(diào)度策略,以縮減時序圖神經(jīng)
    發(fā)表于 09-28 10:37

    用AlexNet對cifar-10數(shù)據(jù)進(jìn)行分類

    AlexNet圖像分類中是一個比較重要的網(wǎng)絡(luò),在學(xué)習(xí)的過程中不僅要學(xué)會寫網(wǎng)絡(luò)結(jié)構(gòu),知道每一層的結(jié)構(gòu),更重要的是得知道為什么要這樣設(shè)計,這樣
    的頭像 發(fā)表于 06-06 14:18 ?2.1w次閱讀
    用AlexNet對<b class='flag-5'>cifar-10</b><b class='flag-5'>數(shù)據(jù)</b>進(jìn)行<b class='flag-5'>分類</b>

    信息保留的二值神經(jīng)網(wǎng)絡(luò)IR-Net,落地性能和實(shí)用性俱佳

    IR-Net提供了一個全新的角度來理解二值神經(jīng)網(wǎng)絡(luò)是如何運(yùn)行的,并且具有很好的通用性,可以標(biāo)準(zhǔn)的網(wǎng)絡(luò)訓(xùn)練流程中進(jìn)行優(yōu)化。作者使用CIFAR-10
    的頭像 發(fā)表于 03-27 15:25 ?1853次閱讀
    信息保留的二值神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>IR-Net,落地性能和實(shí)用性俱佳

    改進(jìn)多尺度三維卷積神經(jīng)網(wǎng)絡(luò)的高光譜圖像方法

    中最大池化層減少整體網(wǎng)絡(luò)訓(xùn)練參數(shù)量,改進(jìn)多尺度濾波器組和三維單元提取圖像深層局部空間-光譜聯(lián)合特征,并將其輸人 Softmax函數(shù)層預(yù)測
    發(fā)表于 03-16 14:57 ?10次下載
    改進(jìn)多尺度三維<b class='flag-5'>殘</b><b class='flag-5'>差</b>卷積神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>的高光譜<b class='flag-5'>圖像</b>方法

    改進(jìn)多尺度三維卷積神經(jīng)網(wǎng)絡(luò)的高光譜圖像方法

    中最大池化層減少整體網(wǎng)絡(luò)訓(xùn)練參數(shù)量,改進(jìn)多尺度濾波器組和三維單元提取圖像深層局部空間-光譜聯(lián)合特征,并將其輸人 Softmax函數(shù)層預(yù)測
    發(fā)表于 03-16 14:57 ?1次下載
    改進(jìn)多尺度三維<b class='flag-5'>殘</b><b class='flag-5'>差</b>卷積神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>的高光譜<b class='flag-5'>圖像</b>方法

    基于字典及寫作表達(dá)的單圖像SR算法

    ,其次利用重建的樣本圖像訓(xùn)練多層字典及多層投影矩陣;
    發(fā)表于 05-07 13:54 ?8次下載

    面向圖像識別的輕量級SepNet網(wǎng)絡(luò)結(jié)構(gòu)

    網(wǎng)絡(luò)深度、寬度,設(shè)計利用深度可分離卷積和網(wǎng)絡(luò)的可分離模塊,最終形成了一個能實(shí)現(xiàn)端到端
    發(fā)表于 06-03 16:20 ?3次下載

    如何搭建VGG網(wǎng)絡(luò)實(shí)現(xiàn)Mnist數(shù)據(jù)圖像分類

    如何搭建VGG網(wǎng)絡(luò),實(shí)現(xiàn)Mnist數(shù)據(jù)圖像分類? 2 方法 步驟:
    的頭像 發(fā)表于 02-14 15:00 ?618次閱讀

    cifar10數(shù)據(jù)介紹 knn和svm的圖像分類系統(tǒng)案例

      摘要:本文使用CIFAR-10數(shù)據(jù)設(shè)計實(shí)現(xiàn)了基于k近鄰(knn)和支持向量機(jī)(svm)的圖像分類系統(tǒng)。首先介紹了
    發(fā)表于 07-18 15:23 ?4次下載

    網(wǎng)絡(luò)是深度神經(jīng)網(wǎng)絡(luò)

    網(wǎng)絡(luò)(Residual Network,通常簡稱為ResNet) 是深度神經(jīng)網(wǎng)絡(luò)的一種 ,其獨(dú)特的結(jié)構(gòu)設(shè)計解決深層
    的頭像 發(fā)表于 07-11 18:13 ?727次閱讀