<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          GPU在深度學(xué)習(xí)中究竟起了什么作用

          共 3436字,需瀏覽 7分鐘

           ·

          2021-01-30 11:37

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)


          圍繞深度學(xué)習(xí)的“噪聲”經(jīng)常誤導(dǎo)外行人以為這是一種新發(fā)明的技術(shù),使他們?yōu)橹徽竦氖钱?dāng)他們知道深度學(xué)習(xí)早在1940-1950年代就奠定了基礎(chǔ)。還有很長的歷史,其中最流行的深層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和理論已經(jīng)在整個(gè)20世紀(jì)后半期提出深的學(xué)問。如果是這種情況,那么你們可能會問,為什么在當(dāng)前時(shí)代發(fā)生了深度學(xué)習(xí)革命,為什么不回溯幾十年。


          簡單來說,在那些時(shí)期內(nèi),不存在有效訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)所需的正確硬件和計(jì)算能力。因此所有的理論大部分都在紙上,沒有實(shí)際的支持。盡管專門的研究人員繼續(xù)在神經(jīng)網(wǎng)絡(luò)上開展工作,直到2000年代下半葉,當(dāng)硬件革命開始興起時(shí),但它大部分都是不切實(shí)際的理論。


          深度學(xué)習(xí)中早期使用GPU的極簡史

          NVIDIA于1999年推出了首款商用GPU GeForce 256,并在2000年代開始將自己定位為GPU技術(shù)的領(lǐng)先創(chuàng)新者,以推動(dòng)圖形業(yè)發(fā)展。代表圖形處理單元的GPU由于其并行處理能力可以使游戲的圖形幀比CPU快得多,因此開始獲得游戲玩家的青睞,從而提供了無縫的游戲體驗(yàn)。NVIDIA在2007年發(fā)布了面向軟件程序員的框架CUDA(計(jì)算機(jī)統(tǒng)一設(shè)備架構(gòu)),他們可以利用CUDA API在NVIDIA GPU上進(jìn)行GPU上的通用計(jì)算(GPGPU)。

          除了在圖形處理中的傳統(tǒng)用途外,CUDA還允許工程師和科學(xué)家在需要并行計(jì)算的其他領(lǐng)域使用GPU,尤其是在那些令人尷尬的并行且無需任何操作的任務(wù)中。如果你們了解神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理,則應(yīng)該認(rèn)識到它的矩陣運(yùn)算屬于令人尷尬的并行計(jì)算類別,因此使其成為GPGPU的理想選擇。

          圖1 并行執(zhí)行神經(jīng)網(wǎng)絡(luò)的矩陣計(jì)算

          Kumar Chellapilla于2006年在GPU上實(shí)現(xiàn)CNN是已知的將GPU用于深度學(xué)習(xí)的最早嘗試。斯坦福大學(xué)教授和Coursera的創(chuàng)始人安德魯·伍(Andrew NG)自2008年以來就是使用GPU進(jìn)行深度神經(jīng)網(wǎng)絡(luò)的早期支持者之一,其他很少有研究人員在CUDA的幫助下,在2008-2009年之后開始積極地進(jìn)行GPU實(shí)驗(yàn)。但是,它是2012年Imagenet挑戰(zhàn)圖像分類模型Alexnet的獲勝者事實(shí)證明,這是具有GPU加速功能的具有里程碑意義的深度學(xué)習(xí)模型。絕對不是在深度學(xué)習(xí)中首次使用GPU,而是在這一盛大的階段贏得了它的狂熱地位和主流媒體的關(guān)注,從而引發(fā)了深度學(xué)習(xí)革命。

          GPU與CPU架構(gòu)


          圖2 GPU與CPU架構(gòu)

          讓我們比較一下CPU和GPU的體系結(jié)構(gòu),以了解為什么GPU在神經(jīng)網(wǎng)絡(luò)上執(zhí)行操作要比CPU更好。

          第一個(gè)主要的明顯區(qū)別是CPU僅具有幾個(gè)內(nèi)核來執(zhí)行算術(shù)運(yùn)算,而GPU可以具有成千上萬個(gè)這樣的內(nèi)核。從一個(gè)角度來看,一個(gè)標(biāo)準(zhǔn)的性能良好的CPU有8個(gè)內(nèi)核,而功能強(qiáng)大的CPU Intel Core i9-10980XE有18個(gè)內(nèi)核。另一方面,出色的GeForce GTX TITAN Z NVIDIA GPU具有5760個(gè)CUDA內(nèi)核。如此多的內(nèi)核使GPU可以非常高效地進(jìn)行并行計(jì)算以產(chǎn)生高吞吐量。GPU還具有比CPU高的內(nèi)存帶寬,從而使GPU可以一次在存儲單元之間移動(dòng)大量數(shù)據(jù)。

          由于其高內(nèi)存帶寬和并行化,GPU可以立即加載神經(jīng)網(wǎng)絡(luò)矩陣的很大一部分,并進(jìn)行并行計(jì)算以產(chǎn)生輸出。另一方面,與GPU相比,CPU將以幾乎可以忽略的并行化順序加載數(shù)字。這就是為什么對于具有大型矩陣運(yùn)算的大型深度神經(jīng)網(wǎng)絡(luò)而言,GPU可以勝過CPU的原因。

          應(yīng)該注意的是,擁有如此多的內(nèi)核并不能使GPU在所有操作上都優(yōu)于CPU。由于其低延遲,CPU可以更快地處理無法分解為并行化的任何操作。因此,CPU將比GPU更快地計(jì)算順序浮點(diǎn)運(yùn)算。


          張量核心的奇跡


          圖3 Voltas Tensor核心性能

          隨著GPU在深度學(xué)習(xí)中的廣泛采用,NVIDIA在2017年推出了GPU Tesla Tesla V100,它具有新型的Voltas架構(gòu),該架構(gòu)具有稱為Tensor Core的專用內(nèi)核,以支持神經(jīng)網(wǎng)絡(luò)的特定張量操作。NVIDIA聲稱,Volta Tensor Core的吞吐率比使用常規(guī)CUDA的前代產(chǎn)品高出12倍。

          圖4 矩陣的計(jì)算操作支持張量核心

          其背后的基本方法是Tensor Core專門用于將兩個(gè)4x4 FP16矩陣相乘并在其中添加4x4 FP16或FP32矩陣(FP代表浮點(diǎn)數(shù))。這樣的矩陣運(yùn)算在神經(jīng)網(wǎng)絡(luò)中非常普遍,因此具有一個(gè)專用的Tensor Core進(jìn)行優(yōu)化的優(yōu)勢,以使其比傳統(tǒng)的CUDA內(nèi)核執(zhí)行得更快。


          CUDA和CUDNN用于深度學(xué)習(xí)


          到目前為止,我們的討論集中在GPU的硬件方面?,F(xiàn)在讓我們了解程序員如何利用NVIDIA GPU進(jìn)行深度學(xué)習(xí)。在前面的部分中,我們討論了CUDA,其中討論了CUDA是供程序員在GPU上執(zhí)行通用計(jì)算的API。CUDA具有對C / C ++和Fortran等編程語言的本機(jī)支持,以及對其他編程語言(如Python,R,Matlab,Java等)的第三方包裝支持。


          CUDA的發(fā)布是為了牢記圖形設(shè)計(jì)社區(qū),盡管深度學(xué)習(xí)社區(qū)開始使用CUDA,但對于他們而言,專注于CUDA的低級復(fù)雜性而不是專注于神經(jīng)網(wǎng)絡(luò)是一項(xiàng)艱巨的任務(wù)。因此,NVIDIA在2014年發(fā)布了CUDNN,這是一個(gè)基于CUDA的專用于深度學(xué)習(xí)的庫,為神經(jīng)網(wǎng)絡(luò)的原始操作提供了功能,例如反向傳播,卷積,池化等。


          GPU加速方法


          只有認(rèn)真使用GPU,GPU才能加速深度學(xué)習(xí)管道,否則也會造成瓶頸。當(dāng)用戶嘗試通過GPU推送所有代碼而不考慮是否可以在GPU上并行執(zhí)行所有這些操作時(shí),通常會發(fā)生這種情況。


          根據(jù)經(jīng)驗(yàn),只有可以并行執(zhí)行的計(jì)算密集型代碼才應(yīng)推送到GPU,其余所有序列代碼都應(yīng)發(fā)送到CPU。例如,用于數(shù)據(jù)清理,預(yù)處理的代碼應(yīng)在CPU上執(zhí)行,而用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的代碼應(yīng)在GPU上運(yùn)行,只有這樣,您才能看到性能的提升。


          圖5 GPU加速

          結(jié)論


          在本文中,我們了解了GPU如何在重新激發(fā)ML社區(qū)對神經(jīng)網(wǎng)絡(luò)的興趣并將深度學(xué)習(xí)帶入主流方面發(fā)揮如此重要的作用。以下是針對深度神經(jīng)網(wǎng)絡(luò)進(jìn)行編程時(shí)要考慮的一些要點(diǎn):

          1. GPU用于大規(guī)模并行計(jì)算,因此應(yīng)用于大量數(shù)據(jù)處理。

          2. 僅當(dāng)將可分解為并行計(jì)算的操作發(fā)送到GPU,而其他操作應(yīng)在CPU上執(zhí)行時(shí),GPU才是有益的。

          3. 在使用大數(shù)據(jù)進(jìn)行模型訓(xùn)練時(shí),GPU更為有利,你們可以在其中對數(shù)據(jù)進(jìn)行分塊處理并利用并行計(jì)算。推論可能并非如此。如果推斷是在非??斓囊慌鷶?shù)據(jù)上發(fā)生的,但是如果推斷在每個(gè)數(shù)據(jù)點(diǎn)上是一個(gè)接一個(gè)地發(fā)生(實(shí)時(shí)推斷),則在GPU上加載模型可能不會導(dǎo)致性能提高。

          盡管GPU支持研究人員和大公司通過深度學(xué)習(xí)創(chuàng)造奇跡,但它們的成本很高,超出了大多數(shù)愛好者的能力范圍。但是,Google Colab和Kaggle上有免費(fèi)的GPU免費(fèi)層選項(xiàng),但資源有限,初學(xué)者可以嘗試動(dòng)手。


          載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目31講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目31講,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。


          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 58
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品MV | 四虎殴美| 99精品视频国产 | 五月丁香乱伦文学 | 1234无码在线观看 |