亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

主講人 | 何琨 英偉達(dá)

陳銘林 編輯整理

量子位編輯 | 公眾號 QbitAI

近日,愛奇藝技術(shù)沙龍“多模態(tài)視頻人物識別的關(guān)鍵技術(shù)及應(yīng)用”成功舉辦,英偉達(dá)開發(fā)者社區(qū)經(jīng)理何琨出席并作出精彩分享,以下為分享實(shí)錄:

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

今天,我給大家介紹兩個(gè)工具,分別是DeepStream和TensorRT。我想給大家介紹這兩個(gè)工具,并不是因?yàn)樗鼈兪轻槍τ谔囟ǖ漠a(chǎn)品或場景,而是因?yàn)檫@兩個(gè)工具真正能在視覺領(lǐng)域幫助大家加速一些任務(wù)或者應(yīng)用程序。

DeepStream

深度學(xué)習(xí)應(yīng)用在很多領(lǐng)域,如視覺、語音、NLP等,有各種各樣的學(xué)習(xí)框架,在深度學(xué)習(xí)框架底層,NVIDIA提供了大量的硬件以及相關(guān)的軟件庫的支持,包括cuDNN、DeepStream、TensorRT、cuBLAS等基礎(chǔ)庫,這些庫都是讓程序運(yùn)行起來更快的基礎(chǔ)生態(tài)工具。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

DeepStream是基于NVIDIA運(yùn)行的工具,它主要應(yīng)用于視覺整個(gè)流程的解決方案,它跟其他視覺庫(比如OpenCV)不一樣的地方在于,它建立一個(gè)完整的端到端的支持方案,換句話說你的源無論是Camera、Video還是云服務(wù)器上的視頻,從視頻的編解碼到后臺的圖像Inference再到展示出來的畫面的完整pipeline上的各個(gè)細(xì)節(jié)它都能幫助大家,包括參數(shù)的設(shè)置。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

在這個(gè)過程中,大家只需要加上自己的內(nèi)容。比如視頻檢索,我們需要train出一個(gè)model來識別或檢測其中的人臉,將這幾個(gè)不同model添加到里面就好了。而視頻源的設(shè)置完整流程DeepStream都可以幫你做好,包括記錄的視頻、服務(wù)器上多路視頻。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

在這過程中,DeepStream是如何去做的?我們可以看到,從最開始的視頻的編解碼,到整個(gè)流程地完成,這個(gè)過程中有兩個(gè)東西是最重要的,一個(gè)是Gstreamer編解碼工具,一個(gè)是TensorRT工具。在AI中它是一個(gè)加速GPU的推理引擎。DeepStream中,視頻的編解碼就是依靠Gstreamer,而內(nèi)容的Inference過程中就用TensorRT來實(shí)現(xiàn)的。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

可以看到每一個(gè)模塊是用什么樣的硬件設(shè)備來跑的,因?yàn)橛幸恍┛赡苓€用到了CPU,但更多用到GPU的加速。特別地,有些情況下我們需要在計(jì)算能力有限的設(shè)備上,如小尺寸的GPU設(shè)備、無人機(jī)或者自動駕駛汽車等,我們需要加速一個(gè)完整的流程時(shí),DeepStream也可以幫助我們這樣的事。

DeepStream現(xiàn)在支持NVIDIA的Xavier系列、Tegra系列和最新出的Nano系列等產(chǎn)品,在這個(gè)過程中用一些GPU調(diào)度的情況下,比傳統(tǒng)視覺庫的加速效果要好很多。

舉兩個(gè)例子,現(xiàn)在跑的是一個(gè)大家耳熟能詳?shù)哪P?,就是Yolo v3的,它跑在我們的Tegra的產(chǎn)品上,只有不到半個(gè)手掌大的計(jì)算芯片設(shè)備,我做了一個(gè)目標(biāo)檢測任務(wù),前提是Batch Size我都設(shè)為了1,因?yàn)樵谀菢覯emory的情況下,如果Batch Size設(shè)為更多,比如2或者4的話,如果不用DeepStream的話它是跑不了的,Out of Memory了。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

我們可以看一下左上角,這個(gè)是沒有用DeepStream和TensorRT產(chǎn)品來優(yōu)化的,結(jié)果是大概一幀一秒的過程。而右下角使用了TensorRT或DeepStream來做優(yōu)化,大概是四點(diǎn)多的范圍。

就是說在相同的一個(gè)算法上,我們在Batch Size都設(shè)置為1的情況下,速度提升比大概是四倍,這種情況下,我們不需要做任何的優(yōu)化,不需要修改網(wǎng)絡(luò)模型,不需要改數(shù)量級,只需要把模型給到DeepStream或者TensorRT就可以做速度加速比。

GitHub上有一個(gè)非常好的開源代碼,利用DeepStream在GPU上進(jìn)行加速的一個(gè)案例,推薦給大家:https://github.com/vat-nvidia/deepstream-plugins。

DeepStream還支持一些新的特性。比如一個(gè)服務(wù)器上要接很多路攝像頭,這種情況要接很多路Pipeline。比如汽車上,在停車的時(shí)候需要啟用后端的攝像頭,這時(shí)需要Create新的Pipeline;在自動行駛的過程中,為了避撞,汽車兩邊的攝像頭的精度需要更多的關(guān)注,這時(shí)DeepStream會自動管理或刪減Pipeline。當(dāng)然還根據(jù)自動駕駛提供的360度攝像頭全景拼接,在需要使用的時(shí)候直接include庫就可以了,非常簡單方便。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

TensorRT

說到DeepStream,除了視頻的編解碼以外,最核心的內(nèi)容就是推理工具,推理是深度學(xué)習(xí)真正把模型部署到產(chǎn)品中非常重要的一部分。DeepStream的底層推理任務(wù)基于TensorRT,核心任務(wù)是GPU推理引擎。它是一種高性能深度學(xué)習(xí)推理優(yōu)化器和運(yùn)行時(shí)加速庫,調(diào)用的時(shí)候直接include,可以優(yōu)化神經(jīng)網(wǎng)絡(luò)模型以及其他功能。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

后面畫出這些圖表是TensorRT當(dāng)前的Performance一個(gè)優(yōu)化的程度,這個(gè)是4.0版本,最新數(shù)值還要更高。我們什么都不需要做,只要用這個(gè)工具來Inference這個(gè)模型就OK了,可以達(dá)到這樣一個(gè)高度。

而隨著最新的TensorRT 5.0的推出,對于python的支持,對于NLP、RNN等基于時(shí)間序列的模型的支持也都非常好,特別是還有基于移動端類似于無人機(jī)、無人車等平臺。

TensorRT有一個(gè)標(biāo)準(zhǔn)的Work Flow,給它一個(gè)訓(xùn)練好的網(wǎng)絡(luò)模型(包括網(wǎng)絡(luò)結(jié)構(gòu)、權(quán)重參數(shù)),它會自動進(jìn)行優(yōu)化,而在這個(gè)優(yōu)化完成后會生成一個(gè)可執(zhí)行的推理引擎,只要把需要推理的數(shù)據(jù)實(shí)例,如圖片、語音信息、文字等內(nèi)容直接給它,它就可以加速你的模型推理。

而在模型推理過程中,我們需要它自動做這五件事:

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

第一個(gè)是權(quán)重參數(shù)類型的優(yōu)化,比如目前半精度和八位整形的推理,如果當(dāng)數(shù)據(jù)的大小或位寬減少之后,數(shù)據(jù)傳輸、計(jì)算、配合最新的Tensor Core等硬件結(jié)構(gòu)做推理時(shí),整體速度會提升很多。

接下來是動態(tài)的Tensor Memory。做視覺的同學(xué)應(yīng)該都接觸過GPU,GPU里邊有很多l(xiāng)evel級的 Memory,Global Memory、Share Memory等,如何把數(shù)據(jù)從低速度帶寬到一個(gè)高精度的Memory,這些TensorRT都可以做到。

接下來是多流的執(zhí)行。GPU最大的特點(diǎn)是并行計(jì)算,并行計(jì)算一個(gè)新的Level,除了不同的多個(gè)線程、Block以外,還有不同的Stream,多流的執(zhí)行可以幫你隱藏?cái)?shù)據(jù)傳輸?shù)臅r(shí)間。例如把一個(gè)大塊數(shù)據(jù)放到GPU里進(jìn)行inference時(shí),數(shù)據(jù)傳輸時(shí)所有的計(jì)算核心都需要等待,等待的時(shí)間就浪費(fèi)了,或者GPU的使用率降低。

這個(gè)時(shí)候我們要把一大塊數(shù)據(jù)切分成不同的小塊進(jìn)行計(jì)算。第一塊數(shù)據(jù)在傳輸?shù)臅r(shí)候,后面所有任務(wù)都在等待,當(dāng)?shù)谝粔K傳輸完了之后第二塊開始傳輸。與此同時(shí),第一塊數(shù)據(jù)開始計(jì)算,就可以把傳輸時(shí)間隱藏在計(jì)算時(shí)間里了。

大家做一些基于視覺應(yīng)用時(shí),一個(gè)服務(wù)器可能要同時(shí)開N個(gè)實(shí)例。比如一個(gè)V100,16G Memory,ResNet-50需要1.3GB的GPU Memory。這時(shí)一個(gè)GPU可以同時(shí)開12個(gè)實(shí)例,每個(gè)示例對應(yīng)一定的攝像頭,這樣管理這些GPU資源的時(shí)候能充分利用。

然后還有內(nèi)核調(diào)用。不同產(chǎn)品的內(nèi)核,它的核多、核少、不同的核的大小,或者寄存器的個(gè)數(shù),它會自動優(yōu)化到每個(gè)kernel里。

最后是網(wǎng)絡(luò)層的融合。TensorRT不會改變或者裁剪網(wǎng)絡(luò)層,但它可以幫我們做一些優(yōu)化。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

上圖是大家比較熟悉的GoogleNet Inception結(jié)構(gòu),首先我們可以看到有很多個(gè)網(wǎng)絡(luò)層,比如類似于Caffe或者TensorFlow等底層代碼,它調(diào)用一個(gè)網(wǎng)絡(luò)層時(shí),會把上一層的Tensor數(shù)據(jù)拿來傳到這個(gè)函數(shù)里,如果你做GPU優(yōu)化,它會把這個(gè)數(shù)據(jù)放到GPU進(jìn)行計(jì)算,GPU計(jì)算完成后再返回給CPU。每個(gè)網(wǎng)絡(luò)層都是同樣的過程。

或者說你把整個(gè)的網(wǎng)絡(luò)層的數(shù)據(jù)全都Load到GPU里,GPU會把它放在Global Memory里,然后使用時(shí)會把它調(diào)到每個(gè)Kernel或SM多流處理器里。在這過程中,每一層都是“寫-計(jì)算-讀”。我們可以把三個(gè)網(wǎng)絡(luò)層進(jìn)行融合,CBR,是Convolution、Bias、ReLU的縮寫。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

這樣有什么好處?如果當(dāng)前Memory足夠Load數(shù)據(jù)之后,把這三個(gè)網(wǎng)絡(luò)層融合到一起,就能夠節(jié)省四次的訪存次數(shù)。隨著網(wǎng)絡(luò)層越來越深,網(wǎng)絡(luò)層的讀寫次數(shù)越少,加速時(shí)間就會越來越多。

除了上面的融合之外,我們把三個(gè)1×1 CBR還可以融合在一起,因?yàn)樗鼈冞M(jìn)行相同的操作。同時(shí)自動拼接也可以省掉,因?yàn)镚PU里計(jì)算完就直接執(zhí)行了,可以直接消減掉。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

最后,可以看到這個(gè)過程中,這個(gè)兩條線彼此之間是并不相關(guān)的,數(shù)據(jù)之間沒有相互的交流。我們可以單獨(dú)啟動兩個(gè)Stream,分別走這兩條線。

就是把左側(cè)兩個(gè)數(shù)據(jù)來計(jì)算的同時(shí),同時(shí)計(jì)算第三塊數(shù)據(jù),也就是把需要時(shí)間較少的那一部分隱藏到另一部分的時(shí)間里,當(dāng)然這都是TensorRT幫我們完成的。

NVIDIA何琨:AI視頻處理加速引擎TensorRT及Deepstream介紹

TensorRT在整個(gè)過程中支持了網(wǎng)絡(luò)層,使用TensorRT的時(shí)候,需要把訓(xùn)練好的數(shù)據(jù)或網(wǎng)絡(luò)模型給到TensorRT工具。通過ONNX的操作,TensorRT基本上支持了現(xiàn)在市面上常見的網(wǎng)絡(luò)框架訓(xùn)練出的模型,Caffe、TensorFlow、ONNX、DarkNet的數(shù)據(jù)都是可以的。

最后介紹一下英偉達(dá)開發(fā)者社區(qū):https://developer.nvidia-china.com,大家有什么問題可以在上面提問,謝謝大家。

誠摯招聘

量子位正在招募編輯/記者,工作地點(diǎn)在北京中關(guān)村。期待有才氣、有熱情的同學(xué)加入我們!相關(guān)細(xì)節(jié),請?jiān)诹孔游还娞?QbitAI)對話界面,回復(fù)“招聘”兩個(gè)字。

量子位 QbitAI · 頭條號簽約作者

?\’?\’ ? 追蹤AI技術(shù)和產(chǎn)品新動態(tài)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。