1. GPU在深度學習中究竟起了什么作用

        共 3436字,需瀏覽 7分鐘

         ·

        2021-01-30 11:37

        點擊上方小白學視覺”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達


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


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


        深度學習中早期使用GPU的極簡史

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

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

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

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

        GPU與CPU架構


        圖2 GPU與CPU架構

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

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

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

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


        張量核心的奇跡


        圖3 Voltas Tensor核心性能

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

        圖4 矩陣的計算操作支持張量核心

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


        CUDA和CUDNN用于深度學習


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


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


        GPU加速方法


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


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


        圖5 GPU加速

        結論


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

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

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

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

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


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

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

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。


        交流群


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


        瀏覽 58
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 留守少妇的性事全文 | 色亭亭| 奇米无码视频 | 三级影片免费看 | 嗯~啊奶水喷出来了h |