<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>

          關(guān)于視覺(jué)算法工業(yè)部署及優(yōu)化學(xué)習(xí)路線的探討

          共 8147字,需瀏覽 17分鐘

           ·

          2020-11-11 16:04

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨知乎
          來(lái)源丨h(huán)ttps://www.zhihu.com/question/428800593
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          CV算法崗內(nèi)卷程度有目共睹,因而算法部署落地成為了一個(gè)較好的方向。那么,學(xué)習(xí)這方面的技能知識(shí),需要掌握那哪些工具技能?本文精選了三個(gè)知乎高質(zhì)量回答,希望能為你帶來(lái)幫助。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿

          回答一

          作者丨ybai62868

          這幾天被華為的atlas板子折磨的夠嗆,加班之余,寫(xiě)點(diǎn)心得吧。

          2017年 比你大一屆,本人也是20屆的渣渣碩士,剛剛上研的時(shí)候,和大多數(shù)“內(nèi)卷兒”一樣,我也很幸運(yùn)被老板安排了“計(jì)算機(jī)視覺(jué)&圖像處理&模式識(shí)別”的研究方向。屁顛屁顛的開(kāi)始看cvpr,iccv的paper。回想起過(guò)去,那時(shí)的我年幼無(wú)知,在地平線的一臺(tái)四卡服務(wù)器上非root權(quán)限一步一步的裝好了caffe,開(kāi)始跑起來(lái)了openpose的訓(xùn)練,原本以為我的煉丹生涯就這樣正式開(kāi)始了,沒(méi)想到怎么都復(fù)現(xiàn)不到paper上的精度,當(dāng)時(shí)對(duì)multi-scale的測(cè)試看半天還不懂怎么回事。經(jīng)常被leader push進(jìn)度,真心覺(jué)得自己菜得扣腳,很多時(shí)候都想放棄煉丹。一步一步,在工業(yè)界,從單幀圖像上的目標(biāo)檢測(cè),語(yǔ)義分割,實(shí)例分割,到人體姿態(tài)估計(jì)。再遷移到視頻上的目標(biāo)檢測(cè),語(yǔ)義分割,關(guān)鍵點(diǎn)檢測(cè)。以及最后畢業(yè)論文的多目標(biāo)跟蹤。算是把整個(gè)工業(yè)界能用的cv模型都摸了一遍,領(lǐng)域內(nèi)的經(jīng)典paper也能做到信手拈來(lái)?起碼,各種開(kāi)源的檢測(cè)框架(商湯的mmdet, Facebook 最早的mask rcnn,detectron1 (caffe2), detectron2 (pytorch), gluonCV)都用過(guò)并完成了自定義的項(xiàng)目,其中的源碼也都是“隨心”看過(guò)一遍,但是自己太蠢了,寫(xiě)不到這個(gè)水平的python和cuda代碼,以及每次用完,對(duì)很多細(xì)節(jié)的設(shè)計(jì)只能感慨作者的牛逼。

          2018年一個(gè)偶然的機(jī)會(huì),我開(kāi)始看mxnet的源碼(當(dāng)時(shí)還是使用的symbol接口),看著看著,覺(jué)得這玩意和caffe代碼好像,很多地方都是從caffe那里復(fù)用的,設(shè)計(jì)也比caffe靈活不少,畢竟粒度更細(xì),安裝也更加友好。我一步一步的學(xué)習(xí)mxnet官網(wǎng)上放出來(lái)的所有有關(guān)framework設(shè)計(jì)的知識(shí),包括從“怎樣設(shè)計(jì)一個(gè)高效的data loader”,“怎么樣設(shè)計(jì)一個(gè)engine把框架中的所有組件schedule起來(lái)”,“以及怎么樣更好的優(yōu)化memory和減少數(shù)據(jù)IO”,“包括怎么樣設(shè)計(jì)一套面向任何等級(jí)用戶都友好的API”。原本以為自己掌握了設(shè)計(jì)DL framework的大體奧義,發(fā)現(xiàn)還是想太多了,在面對(duì)讓自己從頭實(shí)現(xiàn)一個(gè)框架的時(shí)候,我也只會(huì)用python定義class 包來(lái)包去,性能什么的就別說(shuō)了,我的菜還是沒(méi)辦法改變,最終還是想自己的愚蠢低下了頭。。。

          2019年又一個(gè)偶然的機(jī)會(huì),我開(kāi)始在大洋彼岸某個(gè)村的CSL做summer research,項(xiàng)目的需求是為他們實(shí)驗(yàn)室的一款深度學(xué)習(xí)編譯器(target為fpga)去寫(xiě)一套o(hù)pencl的backend。什么是編譯器?什么是backend?什么是fpga?什么是opencl?一連串的問(wèn)題對(duì)傻逼的我來(lái)說(shuō),一切都是未知。扒開(kāi)這套編譯器的codebase,我發(fā)現(xiàn)大部分代碼都是從tvm那里借鑒來(lái)的, 于是,我又走上了tvm的學(xué)習(xí)之路,從tvm的design到完整的編譯flow,包括底層的c++到與上層的python交互,以及autoTVM(那會(huì)Ansor還沒(méi)出來(lái))全部走了一遍。對(duì)于一個(gè)根本沒(méi)玩過(guò)硬件開(kāi)發(fā)板的我,這一切在當(dāng)時(shí)來(lái)看是非常困難的,還好實(shí)驗(yàn)室有給力的Ph.D.們,在他們的配合下,我也成功把基于xilinx和intel fpga的opencl backend全部添加了上去。那會(huì)的我,覺(jué)得自己算是掌握了 編譯器的大體奧義。可最終我還是想自己的傻逼低下了頭,涉及到傳統(tǒng)編譯器中的llvm的設(shè)計(jì),codegen的很多細(xì)節(jié),我還是一無(wú)所知。。。回國(guó)后,又加入了某條的mlsys組繼續(xù)做編譯器,我隨后又在glow的基礎(chǔ)上,為硬件組的自研芯片MVP開(kāi)發(fā)profile-guided的quantization工具鏈以及針對(duì)網(wǎng)絡(luò)的每個(gè)layer開(kāi)發(fā)了方便debug的可視化工具。

          2020年又又一個(gè)偶然的機(jī)會(huì),被安排到了一家創(chuàng)業(yè)公司做intern,剛剛?cè)肼毜谝惶炀鸵笤?080ti上去優(yōu)化一個(gè)超分4k視頻。對(duì)于一行cuda代碼都沒(méi)寫(xiě)過(guò)的我來(lái)說(shuō),那是不敢想象的,項(xiàng)目負(fù)責(zé)人每?jī)商齑咭淮芜M(jìn)度,連給我配tensorRT,學(xué)習(xí)如何寫(xiě)高性能cuda代碼的機(jī)會(huì)都不給。我每天都活在自責(zé)與痛苦中,為什么我這么菜?這么垃圾啊?待我整完了從pytorch模型到onnx模型轉(zhuǎn)換,再到trt的編譯,以及為各種不支持的operator寫(xiě)完tensorRT的plugin,再到關(guān)于image的前后處理全部手寫(xiě)cuda kernel去和opencv硬碰硬。遺憾的是,整個(gè)inference還是沒(méi)有跑起來(lái),當(dāng)我用盡了我當(dāng)時(shí)力所能及的cuda的debug工具(cuda-gdb,cuda-memcheck,...)最終發(fā)現(xiàn)還是敗在了模型的多張幀輸入沒(méi)辦法做到CPU和GPU上的memory 對(duì)齊。就這次偶然的機(jī)會(huì),我竟然學(xué)會(huì)了tensorRT的部署。仗著這個(gè)經(jīng)驗(yàn),我又把組里其他模型:OCR,簡(jiǎn)化版超清視頻到TX2,NX,AGX,智能相機(jī)等設(shè)備上,用盡了各種能優(yōu)化的框架ncnn,mnn (其中包括針對(duì)工業(yè)級(jí)的二階段的OCR模型,det用tensorRT,reg用mnn的vulkan后端聯(lián)合開(kāi)多線程優(yōu)化在TX2上達(dá)到real-time)也熟悉了很多不同的backend和指令集架構(gòu)。原本以為,我已經(jīng)掌握了深度學(xué)習(xí)CV模型落地的要領(lǐng),直到這幾天接到了要在華為的atlas 500板子上部署算法團(tuán)隊(duì)自己整的一套faster rcnn的二階段檢測(cè)模型以及tracking,幾乎所有套件都要從頭開(kāi)始手寫(xiě)c++(借助FFmpeg對(duì)RTSP拉流,解碼,udp報(bào)文傳送,前處理,rpn生成proposals,proposal變anchor,anchor到bbox,kalman filter, hungary, track ID篩選 ...),我才發(fā)現(xiàn)自己的無(wú)知,模型部署真的是個(gè)大坑。


          以上內(nèi)容吹逼歸吹逼,且當(dāng)個(gè)故事聽(tīng)聽(tīng)就好
          其實(shí)我想表達(dá)的是 視覺(jué)算法的工業(yè)部署和落地是沒(méi)有你想得那么容易的,dirty work(手寫(xiě)c++, cuda各種前后處理) 全靠你對(duì)于上層模型算法的理解,以及不同hardware backend設(shè)計(jì)的深刻認(rèn)知。如果要利用編譯技術(shù),你又得對(duì)深度學(xué)習(xí)編譯器中如何在design space中搜optim的值和手寫(xiě)template來(lái)達(dá)到半自動(dòng)優(yōu)化有很好的掌握,你才能真正把一個(gè)paper里吹的“天花亂墜”的model部署到一個(gè)理論算力能跟得上的設(shè)備上( 當(dāng)然,real-time和power是很重要的指標(biāo))
          從工業(yè)界的角度想要快速出活,真正要自學(xué)的話:
          1. 深度學(xué)習(xí)框架方面,讀一讀caffe的源碼和設(shè)計(jì)理念,看看其中的cpu/gpu上的op是怎么寫(xiě)的。
          2. 深度學(xué)習(xí)編譯器方面,讀一讀tvm的源碼和設(shè)計(jì)理念,看看編譯器是怎么把一個(gè)dl model經(jīng)過(guò)relay IR 再到 tvm IR,再到不同backend的codegen。以及編譯器對(duì)計(jì)算圖的常見(jiàn)優(yōu)化(算子融合,data layout等)
          3. 深度學(xué)習(xí)模型部署方面,針對(duì)nvidia的gpu,看看cuda,tensorRT的document,自己嘗試著把一個(gè)檢測(cè)或者分割的模型部署到實(shí)驗(yàn)室的機(jī)器上。針對(duì)移動(dòng)端的cpu,gpu,看看mnn,學(xué)習(xí)下mnn的code design。很多非常好的profiling,可視化工具。針對(duì)fpga設(shè)備,可以看看hls,opencl,verilog。畢竟直接拿現(xiàn)成的tool把model中的op翻譯成hls,opencl代碼還不是非常高效,很多東西還是直接寫(xiě)HDL所帶來(lái)的speed up才更直接。這就和很多時(shí)候在arm架構(gòu)的cpu上去優(yōu)化算法,直接手寫(xiě)匯編所帶來(lái)的提升更加直接。

          從提升自己內(nèi)功的角度來(lái)看,認(rèn)真啃好:“編譯器,計(jì)算機(jī)體系結(jié)構(gòu),并行計(jì)算,
          編程語(yǔ)言設(shè)計(jì),計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò),C++程序設(shè)計(jì)” 來(lái)說(shuō)是更好不過(guò)了。
          當(dāng)然,一切的一切都得來(lái)源于你對(duì)上層DL算法都有了深入了解,知道每個(gè)layer是怎么跑的,輸入的feature和輸出的feature都是怎么存的,軟件和算法層面都經(jīng)歷過(guò)怎樣的加速,還有哪些加速是需要結(jié)合hardware來(lái)進(jìn)行co-design的,你才能更好地把模型中的不同layer合理高效地部署到不同的hardware上。

          給個(gè)結(jié)論:如果要真正想習(xí)得視覺(jué)算法的部署和落地,最快捷的方法,首先你需要有一個(gè)極為嚴(yán)格經(jīng)常push你并且還活躍在代碼一線的leader,然后還得有一個(gè)特定的業(yè)務(wù)場(chǎng)景和急迫的ddl。
          現(xiàn)在以intern的身份帶著一幫和我一樣啥都不會(huì)的老弟老妹們一起探索著模型編譯加速部署的大坑,歡迎加入我的打工人隊(duì)伍,私信我簡(jiǎn)歷即可。
          PS:我一點(diǎn)都不push啊,佛系帶人。
          溜了溜了,以后想起來(lái)再補(bǔ)充。
          回答鏈接:
          https://www.zhihu.com/question/428800593/answer/1560594742



          回答二

          作者丨BBuf

          謝邀,我是19年開(kāi)始逐漸接觸CV中的一些算法部署,在NCNN,TensorRT,OpenVINO,NNIE和華為Atlas系列的各個(gè)框架上都有一些部署經(jīng)歷。另外目前作為一個(gè)新的小型Pytorch推理框架MsnhNet的核心開(kāi)發(fā)者之一,感覺(jué)自己是比較適合回答這個(gè)問(wèn)題的。我個(gè)人將從兩個(gè)方面回答這個(gè)問(wèn)題,第一個(gè)是怎么學(xué)的問(wèn)題,第二個(gè)是怎么學(xué)得更好的問(wèn)題。


          算法落地部署怎么學(xué)?

          我這里就以Hisi 3519A嵌入式開(kāi)發(fā)版(AI硬件和工具鏈叫NNIE)為例,描述一下我的學(xué)習(xí)經(jīng)歷。


          首先,拿到一塊開(kāi)發(fā)版我們做CV相關(guān)算法部署的人員最關(guān)注的應(yīng)該就是它的CPU以及AI硬件的浮點(diǎn)峰值,這可以讓我們后面在部署我們某個(gè)算法,某個(gè)網(wǎng)絡(luò)的時(shí)候做到心中有數(shù),具體怎么算或者怎么查看可以參考:高洋:浮點(diǎn)峰值那些事兒。實(shí)際上,各個(gè)廠家的開(kāi)發(fā)板都會(huì)提供對(duì)應(yīng)的工具鏈和一些Benchmark數(shù)據(jù)。例如最近接觸到的地平線旭日開(kāi)發(fā)板就提供了包括Mobilenetv1/2/3,Yolov3/4/5,F(xiàn)CN/SegNet等常見(jiàn)視覺(jué)場(chǎng)景用到的網(wǎng)絡(luò)的Benchmark數(shù)據(jù),通過(guò)這些數(shù)據(jù)我們可以清楚的看到對(duì)于某個(gè)分辨率的圖像跑特定網(wǎng)絡(luò)的fps以及內(nèi)存消耗等等。上面介紹的這些是我在拿到一個(gè)開(kāi)發(fā)板進(jìn)行部署之前關(guān)注的。


          然后,在了解了硬件的一些關(guān)鍵信息之后,我們就可以花幾天熟悉一下開(kāi)發(fā)版對(duì)應(yīng)工具鏈(也就是開(kāi)發(fā)板的前向推理框架)和官方示例。一般來(lái)說(shuō)特定的開(kāi)發(fā)板使用廠商提供的推理框架性能應(yīng)該是最高的,因?yàn)樗炙鼈兊腁I芯片如NNIE一些通用框架(比如NCNN,MNN,Tegine等)是沒(méi)有相關(guān)的底層加速實(shí)現(xiàn)的,例如nvida的顯卡部署我們首選TensorRT,Intel的CPU首選OpenVINO,arm的cpu選NCNN或者M(jìn)NN。一般來(lái)說(shuō)特定開(kāi)發(fā)版官方示例都提供了一些經(jīng)典的視覺(jué)任務(wù)比如分類(lèi),檢測(cè)使用它們的工具鏈進(jìn)行部署的例子,我們要熟悉這些例子,特別關(guān)注一下如何Debug,內(nèi)存釋放等等。


          再然后,我們就可以針對(duì)我們的某個(gè)任務(wù)在我們想要的硬件平臺(tái)進(jìn)行部署了。例如我要部署一個(gè)DeepSort框架到Hisi 3519A開(kāi)發(fā)板上,首先我要保證我能在CPU上正常運(yùn)行我們的DeepSort代碼。然后將我們的DeepSort代碼拆分成檢測(cè),Reid,卡爾曼濾波,幀匹配各個(gè)過(guò)程利用開(kāi)發(fā)版的推理框架分別編碼。我建議在部署一個(gè)工程的時(shí)候最好進(jìn)行子任務(wù)的拆分,因?yàn)檫@樣更容易讓我們編碼完成之后進(jìn)行Debug的時(shí)候更容易找到是哪部分出了問(wèn)題,不至于調(diào)試時(shí)長(zhǎng)時(shí)間卡頓,降低工作效率。


          最后,在我們部署完一個(gè)工程或者視覺(jué)任務(wù)以后我們最好再評(píng)估一下我們的網(wǎng)絡(luò)耗時(shí)和Benchmark提供的數(shù)據(jù)是否能對(duì)應(yīng)上,如果我們的某個(gè)網(wǎng)絡(luò)性能明顯低于Benchmark數(shù)據(jù)需要查看是否AI硬件被使用了,是否網(wǎng)絡(luò)細(xì)節(jié)設(shè)計(jì)不合理等等。只有我們部署的項(xiàng)目的精度和速度在上線之后經(jīng)過(guò)了大量數(shù)據(jù)驗(yàn)證,我們才能算完成了一個(gè)部署任務(wù)。


          所以,我將自己部署一個(gè)工程的思路分享出來(lái),這里面都是我認(rèn)為應(yīng)該學(xué)習(xí)的比較關(guān)鍵的點(diǎn)。希望能幫助到你。


          算法落地部署怎么學(xué)得更好?

          上面說(shuō)了怎么學(xué),這個(gè)只是基于一些已有的開(kāi)源推理框架或者開(kāi)發(fā)板對(duì)應(yīng)的工具鏈進(jìn)行開(kāi)發(fā)。如果你想學(xué)得更好,我就不班門(mén)弄斧了。如果感興趣可以搜索一下知乎的 AI移動(dòng)端優(yōu)化 這個(gè)專(zhuān)欄,從里面圈圈蟲(chóng),章小龍,白牛,梁德澎等做優(yōu)化部署的大佬們的文章可以看出,想要學(xué)得更好得嘗試自己去做一些算法優(yōu)化的活。


          因?yàn)椋惴ú渴鹩玫降母鱾€(gè)框架的核心技術(shù)就是針對(duì)特定硬件平臺(tái)的底層優(yōu)化,例如NCNN針對(duì)Arm平臺(tái)使用Neon匯編優(yōu)化,針對(duì)X86使用SSE/AVX2優(yōu)化,針對(duì)GPU使用Vulkan優(yōu)化等等。當(dāng)然我知道一個(gè)人的能力是有限的,如果你僅僅是感興趣而已,那么你可以選擇只學(xué)習(xí)某個(gè)平臺(tái)比如Arm ?CPU的優(yōu)化技術(shù)。


          我也是處于一邊學(xué),一邊做的狀態(tài)。個(gè)人認(rèn)為NCNN是這個(gè)世界上最好的優(yōu)化框架,如果你基礎(chǔ)已經(jīng)夠了(例如你了解了Neon匯編,知道卷積的計(jì)算過(guò)程)可以參考NCNN源碼進(jìn)行學(xué)習(xí),如果你不太了解可以參考上面那個(gè)專(zhuān)欄或者在GiantPandaCVAI移動(dòng)端優(yōu)化專(zhuān)欄學(xué)習(xí)一些基礎(chǔ)知識(shí),先入門(mén)然后我們一起學(xué)得更好。


          雖然我是GiantPandaCV的運(yùn)營(yíng)者,但這個(gè)回答真不是為了打廣告,另外非常感謝其它回答提到了本公眾號(hào),受寵若驚。

          再留一個(gè)我們正在建設(shè)的知識(shí)網(wǎng)站吧,地址:http://www.giantpandacv.com/

          NCNN/Tegine/MNN/MsnhNet傳送門(mén):
          https://github.com/Tencent/ncnn
          https://github.com/OAID/Tengine
          https://github.com/alibaba/MNN
          https://github.com/msnh2012/Msnhnet
          回答鏈接:
          https://www.zhihu.com/question/428800593/answer/1560665664



          回答三

          作者丨OLDPAN

          一看這個(gè)題目的關(guān)鍵字“部署”和“落地”就深深吸引到了我 。想想當(dāng)年(去年)秋招,神仙打架諸神黃昏的CV崗,大神們的簡(jiǎn)歷上都是充滿頂會(huì)比賽top1等等,我不擅長(zhǎng)算法(雖然我是算法工程師),簡(jiǎn)歷上也就只能簡(jiǎn)單水水top10的比賽,寫(xiě)一些水水的項(xiàng)目。唯一感覺(jué)和大佬們簡(jiǎn)歷稍微不同的也就落地和部署這塊了。看了前面幾位大佬的回答,感觸頗深,所以我也來(lái)簡(jiǎn)單聊聊(大部分其他回答已經(jīng)說(shuō)了,我再補(bǔ)充些吧)。


          個(gè)人認(rèn)為算法部署落地這個(gè)方向是比較踏實(shí)務(wù)實(shí)的方向,相比“設(shè)計(jì)模型提出新算法”,對(duì)于咱們這種并不天賦異稟來(lái)說(shuō),只要你肯付出,收獲是肯定有的(不像設(shè)計(jì)模型,那些巧妙的結(jié)果設(shè)計(jì)不出來(lái)就是設(shè)計(jì)不出來(lái)你氣不氣)。其實(shí)算法部署也算是開(kāi)發(fā)了,不僅需要和訓(xùn)練好的模型打交道,有時(shí)候也會(huì)干一些粗活累活(也就是dirty work),自己用C++、cuda寫(xiě)算子(預(yù)處理、op、后處理等等)去實(shí)現(xiàn)一些獨(dú)特的算子。算法部署最常用的語(yǔ)言是啥,當(dāng)然是C++了,C++雖然復(fù)雜,但是由于優(yōu)異的性能和各種特性(類(lèi)對(duì)象、元編程等),被很多推理框架作為backbone的語(yǔ)言。


          如果你想要自學(xué)但不知道學(xué)哪個(gè),無(wú)從下手,哈哈恭喜你和當(dāng)初的我一毛一樣。不過(guò)你現(xiàn)在要是問(wèn),我還是不知道應(yīng)該跟你怎么說(shuō),因?yàn)椴渴鹇涞剡@方面你需要學(xué)習(xí)需要做的事情還是蠻多的。最好還是以項(xiàng)目作為驅(qū)動(dòng),或者找一些開(kāi)源的推理部署框架練練手,找一兩個(gè)開(kāi)源項(xiàng)目玩玩,找找感覺(jué),自己也就逐漸有方向了。


          前面幾位大佬提到的NCNN(優(yōu)秀)、MNN(牛逼)等框架(還有很多框架這里不一一列舉了額),是針對(duì)移動(dòng)端進(jìn)行部署進(jìn)行優(yōu)化的推理引擎,對(duì)ARM核進(jìn)行了優(yōu)化,如果你想做和移動(dòng)端或者嵌入式端有關(guān)系的,可以看看這兩個(gè)框架的源碼,跑一兩個(gè)demo找找感覺(jué),另外還有Openvino和TensorRT,分別是對(duì)應(yīng)cpu和gpu端的首推框架(想詳細(xì)了解可以參考我之前的文章),可以找相關(guān)的項(xiàng)目去做做。


          部署的流程一般就是:

          • 訓(xùn)練一個(gè)模型,也可以是拿一個(gè)別人訓(xùn)練好的模型

          • 針對(duì)不同平臺(tái)生成的模型進(jìn)行轉(zhuǎn)換,也就是俗稱(chēng)的parse、convert,前端解釋器

          • 針對(duì)轉(zhuǎn)化后的模型進(jìn)行優(yōu)化,這一步很重要,涉及到很多優(yōu)化的步驟

          • 將轉(zhuǎn)化好的模型運(yùn)行在特定的平臺(tái)(嵌入端或者服務(wù)端)


          需要掌握什么技術(shù),學(xué)好C++很重要,起碼能看懂各種關(guān)于部署精巧設(shè)計(jì)的框架(再列一遍:Caffe、libtorch、ncnn、mnn、tvm、openvino、tensorrt,不完全統(tǒng)計(jì),我就列過(guò)我用過(guò)的)。當(dāng)然并行計(jì)算編程語(yǔ)言也可以學(xué)一個(gè),針對(duì)不同的平臺(tái)而不同,可以先學(xué)學(xué)cuda,資料更多一些,熟悉熟悉并行計(jì)算的原理,對(duì)以后學(xué)習(xí)其他并行語(yǔ)言都有幫助。


          部署和落地的重要性...當(dāng)然是很重要呃,對(duì)于硬件公司來(lái)說(shuō),需要將深度學(xué)習(xí)算法部署到性能低到離譜的開(kāi)發(fā)板上,因?yàn)槌杀灸苁【褪。@時(shí)就需要部署了。在算法層面優(yōu)化模型是一方面,但更重要的是從底層優(yōu)化這個(gè)模型,這就涉及到部署落地方面的各個(gè)知識(shí)(手寫(xiě)匯編算子加速、算子融合等等);對(duì)于軟件公司來(lái)說(shuō),我們往往需要將算法運(yùn)行到服務(wù)器上,當(dāng)然服務(wù)器可以是布滿2080TI的高性能CPU機(jī)器,但是如果QPS請(qǐng)求足夠高的話,需要的服務(wù)器數(shù)量也是相當(dāng)之大的。這個(gè)要緊關(guān)頭,如果我們的模型運(yùn)行的足夠快...可以省機(jī)器又可以騰一些buffer上新模型豈不很爽,這個(gè)時(shí)候也就需要優(yōu)化模型了,其實(shí)優(yōu)化手段也都差不多,只不過(guò)平臺(tái)從arm等嵌入式端變?yōu)間pu等桌面端了。


          系統(tǒng)的知識(shí)嘛,有是有,不過(guò)實(shí)際中都是用到啥再看啥,有項(xiàng)目在push你,個(gè)人建議直接上手項(xiàng)目,沒(méi)有自己找找,按需學(xué)習(xí)。

          這里簡(jiǎn)單總結(jié)下可以選擇上手:

          • 好用的開(kāi)源推理框架:caffe NCNN、MNN、TVM

          • 好用的不開(kāi)源推理框架:Openvino、TensorRT

          • 好用的開(kāi)源服務(wù)器框架:triton-server

          • 好用又不好用的編程語(yǔ)言:C++、CUDA、python

          • 基礎(chǔ)知識(shí):計(jì)算機(jī)原理 編譯原理等

          最近在搞triton server,將TensorRT作為inference后qps很夸張(這個(gè)是服務(wù)端部署),有興趣可以找我一塊交流。

          回答鏈接:

          https://www.zhihu.com/question/428800593/answer/1560898134


          推薦閱讀



            添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開(kāi)發(fā)者互動(dòng)交流~

            △長(zhǎng)按添加極市小助手

            △長(zhǎng)按關(guān)注極市平臺(tái),獲取最新CV干貨

            覺(jué)得有用麻煩給個(gè)在看啦~??
            瀏覽 62
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

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

            手機(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>
                    亚洲第六页 | 久久久aV片 | 西西4444www无码大胆 | 欧美在线免费播放不卡欧美 | 青青草手机免费视频 |