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

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

0

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

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

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

提到人工智能領(lǐng)域,現(xiàn)在最熱的詞之一就是深度學(xué)習(xí)Deep Learning(下文簡稱DL)。近年來,深度學(xué)習(xí)成為了學(xué)術(shù)界乃至整個(gè)工業(yè)領(lǐng)域視覺計(jì)算方面的絕對(duì)主流。除了傳統(tǒng)的計(jì)算機(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)注的焦點(diǎn)之一。

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

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

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

一個(gè)是軟件框架,例如Caffe,Tensorflow,Mxnet等等。
另一個(gè)就是硬件。硬件方面,目前有多種異構(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)練平臺(tái)一般都用NVIDIA的顯卡,比如NVIDIA TITAN系列就是非常好的工具。為了加快訓(xùn)練速度,一般選擇在配備多個(gè)GPU的高性能計(jì)算機(jī)或集群上面進(jìn)行訓(xùn)練,訓(xùn)練好的網(wǎng)絡(luò)也很容易移植到采用NVIDIA Tegra處理器的嵌入式平臺(tái)上面,如NVIDIA Jetson TX1,它們擁有相同的架構(gòu),所以移植起來會(huì)非常方便。 

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

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

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

卷積形狀優(yōu)化

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

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

1.   計(jì)算并行

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

3.   并行的粒度

4.   空間換時(shí)間

5.   IO和計(jì)算疊加

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

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

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

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

乘法優(yōu)化

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

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

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

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

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

  2. 多線程的并行計(jì)算特性;

  3. IO和并行計(jì)算間的計(jì)算時(shí)間重疊

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

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

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

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

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

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

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

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

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

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

以上就是針對(duì)深度學(xué)習(xí)卷積在GPU、乃至Jetson TX1平臺(tái)上的一些優(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料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說