丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給no name
發(fā)送

0

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

本文作者: no name 2016-08-19 11:54
導(dǎo)語:GPU高性能計算資深專家趙開勇關(guān)于深度學(xué)習(xí)卷積在GPU、乃至Jetson TX1平臺上的一些優(yōu)化思路。

雷鋒網(wǎng)按: 本文轉(zhuǎn)載自英偉達(dá)NVIDIA企業(yè)解決方案公眾號。趙開勇,香港浸會大學(xué)計算機(jī)系異構(gòu)計算實驗室PhD Candidate,長期從事高性能計算領(lǐng)域研究,在CPU、GPU異構(gòu)計算方面有多年的研究經(jīng)驗。趙開勇先生組織參與多個科研單位和高性能用戶的高性能項目研發(fā),曾擔(dān)任浪潮GPU高性能計算顧問,曾多次擔(dān)任NVidia中國CUDA比賽評委。他還曾經(jīng)組織出版《GPU高性能運算之CUDA》,翻譯《大規(guī)模并行處理器編程實戰(zhàn)》第二版。國內(nèi)最早推廣GPU高性能計算的研究者之一。

提到人工智能領(lǐng)域,現(xiàn)在最熱的詞之一就是深度學(xué)習(xí)Deep Learning(下文簡稱DL)。近年來,深度學(xué)習(xí)成為了學(xué)術(shù)界乃至整個工業(yè)領(lǐng)域視覺計算方面的絕對主流。除了傳統(tǒng)的計算機(jī)幾何處理、專業(yè)渲染、醫(yī)療、生命科學(xué)、能源、金融服務(wù)、汽車、制造業(yè)以及娛樂業(yè)紛紛著力深度學(xué)習(xí)應(yīng)用和技術(shù)優(yōu)化,避免在企業(yè)競爭中失利。在群雄逐鹿的技術(shù)比拼中,GPU扮演著至關(guān)重要的角色,與其相關(guān)的技術(shù)優(yōu)化也是研發(fā)人員關(guān)注的焦點之一。

“深度學(xué)習(xí)技術(shù)已經(jīng)可以用于解決實際的問題,而不是停留在Demo演示階段”

如微軟的語音翻譯、Google的貓識別,再到最近很火的人臉識別,還有自動駕駛等等,這些都是深度學(xué)習(xí)的典型應(yīng)用。Alibaba、Baidu、Facebook、Google、IBM等大公司都在DL方面有很大的投入。這里必須強調(diào)一句,目前很多主流的DL框架和算法基本上都是華人主導(dǎo)開發(fā)的,DL的復(fù)興,離不開華人研究者。

“在進(jìn)行深度學(xué)習(xí)訓(xùn)練之前,你需要考慮的兩件事”

一個是軟件框架,例如Caffe,Tensorflow,Mxnet等等。
另一個就是硬件。硬件方面,目前有多種異構(gòu)形式,cpu,fpga,dsp等等,但是最主流的還是GPU,真正能在DL當(dāng)中快速形成戰(zhàn)斗力的也是CUDA硬件(NVIDIA GPU)+CUDA的DL學(xué)習(xí)軟件(cuDNN),這也是NVIDIA多年研發(fā)與培育的結(jié)果。

工欲善其事,必先利其器

現(xiàn)在主流的DL開發(fā)訓(xùn)練平臺一般都用NVIDIA的顯卡,比如NVIDIA TITAN系列就是非常好的工具。為了加快訓(xùn)練速度,一般選擇在配備多個GPU的高性能計算機(jī)或集群上面進(jìn)行訓(xùn)練,訓(xùn)練好的網(wǎng)絡(luò)也很容易移植到采用NVIDIA Tegra處理器的嵌入式平臺上面,如NVIDIA Jetson TX1,它們擁有相同的架構(gòu),所以移植起來會非常方便。 

Jetson TX1基于NVIDIA Tegra X1處理器打造,它采用和超級計算機(jī)完全相同的Maxwell架構(gòu)256核心GPU,可提供高達(dá)1T-Flops的計算性能并完整支持CUDA(Compute Unified Device Architecture)技術(shù),配合預(yù)裝的開發(fā)工具,非常適合基于深度學(xué)習(xí)的智慧型嵌入式設(shè)備的打造。前不久就有用戶通過配備Tegra處理器的Jetson平臺,檢測自家花園是否有小貓闖入。

重頭戲:卷積神經(jīng)網(wǎng)絡(luò)CNN算法優(yōu)化

檢測小貓闖入花園的視頻紅遍網(wǎng)絡(luò),這一應(yīng)用就用到了卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)的分類,在臺式機(jī)或者集群上學(xué)習(xí),然后porting(移植)到Tegra上,CNN算法起了關(guān)鍵作用。而CNN最關(guān)鍵的部分就是卷積層。在圖像識別,圖像分類領(lǐng)域來講大多數(shù)問題之所以CNN能起作用,關(guān)鍵就是卷積。它從兩個方面演變而來,一個是聲音處理的延時網(wǎng)絡(luò),一個是圖像處理的特征點提取算法。對后者而言,卷積就是對圖像做濾波,簡單說,就是做一些特征值提取。常見的有sobel做邊緣提取,還有hog,高斯濾波等等,這些都是二維卷積。

卷積形狀優(yōu)化

雖然現(xiàn)在大家做卷積都是方塊的,但其實這只是定義,你完全可以不遵循這個標(biāo)準(zhǔn),可以用其他的形狀來代替卷積,去更好的適應(yīng)你的運算方式,尤其是卷積核心比較大的時候,這也是對卷積做出優(yōu)化的一種方式。 一般來說,目前比較流行的CNN網(wǎng)絡(luò),卷積部分會占用70%以上的計算時間,優(yōu)化卷積部分就是很有必要的。你需要從算法角度、并行化角度,以及GPU硬件特性等諸多方面做出考量。 GPU本身是一種可編程的并行計算架構(gòu),它有很多很好的算法,同時NVIDIA也提供了相應(yīng)的工具,幫你去進(jìn)行優(yōu)化。

卷積優(yōu)化的基本思路

1.   計算并行

2.   數(shù)據(jù)并行

3.   并行的粒度

4.   空間換時間

5.   IO和計算疊加

6.   更多的利用高效的緩存空間

7.   針對硬件的并行特性,更高效率的利用網(wǎng)絡(luò)并發(fā)型

用內(nèi)存來換時間

如果深度學(xué)習(xí)DL中每一層的卷積都是針對同一張圖片,那么所有的卷積核可以一起對這張圖片進(jìn)行卷積運算,然后再分別存儲到不同的位置,這就可以增加內(nèi)存的使用率,一次加載圖片,產(chǎn)生多次的數(shù)據(jù),而不需要多次訪問圖片,這就是用內(nèi)存來換時間。

乘法優(yōu)化

卷積是對一個小區(qū)域做的乘法,然后再做加法,這在并行計算領(lǐng)域是非常成熟的。

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

以上圖為例,左邊是一張圖片,右邊是卷積核。我們可以把卷積核心展開成一條行,然后多個卷積核就可以排列成多行,再把圖像也用類似的方法展開,就可以把一個卷積問題轉(zhuǎn)換成乘法問題。這樣就是一行乘以一列,就是一個結(jié)果了。這樣雖然多做了一些展開的操作,但是對于計算來講,速度會提升很多。

GPU優(yōu)化的幾個思路

  1. 了解IO訪問的情況以及IO的性能;

  2. 多線程的并行計算特性;

  3. IO和并行計算間的計算時間重疊

對于NVIDIA的GPU來講,內(nèi)存訪問是有一些特性的,連續(xù)合并訪問可以很好地利用硬件的帶寬。你可以看到,NVIDIA最新架構(gòu)的GPU,其核心數(shù)目可能并沒有明顯增加,架構(gòu)似乎也沒有太大變化,但在幾個計算流處理器中間增加緩存,就提高了很大的性能,為IO訪問這塊兒帶來了很大優(yōu)化。

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

上面是一張比較經(jīng)典的內(nèi)存和線程模型,shared memory和registers是訪問速度最快的內(nèi)存,內(nèi)存的訪問跟計算比起來,太慢了,所以盡量把多的數(shù)據(jù)都放到高速的緩存里面。

矩陣優(yōu)化的幾個思路

  1. 從計算角度出發(fā)

  2. 從結(jié)果出發(fā)

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

以上面這張圖為例,當(dāng)我們從C矩陣的結(jié)果出發(fā),每一個C需要A的一行和B的一列來進(jìn)行計算,利用GPU的特性,我們可以把零時的結(jié)果存儲在registers面,那我們就可以劃分64x2個線程,來作為計算線程。

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

在C的影印部分,可以有64×2這么多個線程在一次訪問,就可以存儲64×2個數(shù)據(jù)。你可以讓64×2個線程每一個線程都存儲16個或者32個數(shù)據(jù),那么,我們就可以用64×2個線程存儲64×2×16(32)個數(shù)據(jù)。 這么多個數(shù)據(jù)都可以一次存儲在最快的內(nèi)存里面,多次讀寫的時候,速度就可以很快。同時,我們在考慮對A和B矩陣的訪問,可以把B矩陣的相應(yīng)的數(shù)據(jù),大量的放到shared memory里面,這樣就提高了shared memory的公用性。這樣,整個A×B再根據(jù)這些線程可以在讀取globalmemory( A矩陣)的時候,可以合并訪問,可以按照每一排32、32的讀取,可以加快合并訪問=C。這樣就把整個矩陣優(yōu)化的思路整理出來了。

以上就是針對深度學(xué)習(xí)卷積在GPU、乃至Jetson TX1平臺上的一些優(yōu)化思路。

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

想知道深度學(xué)習(xí)卷積在GPU上如何優(yōu)化嗎?“大神”趙開勇帶你深入淺出

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說