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

          算法崗平時(shí)需要自己寫cuda嗎?

          共 4221字,需瀏覽 9分鐘

           ·

          2024-08-02 11:56

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

               
                  
          重磅干貨,第一時(shí)間送達(dá) 
          鏈接:https://www.zhihu.com/question/436008648
          聲明:僅做學(xué)術(shù)分享,侵刪
          作者:知乎用戶
          https://www.zhihu.com/question/436008648/answer/1683251210

          95%的算法崗都不需要。

          真實(shí)的故事:我同事,再來英偉達(dá)前申請(qǐng)的G社,二輪電話面試被刷。原因是不能熟練的擼一個(gè)b樹被刷。該同事的背景是當(dāng)時(shí)德國某校Assistant Professor,出版兩本CUDA和并行編程書,可以熟練擼PTX。當(dāng)時(shí)人家還跟G社爭吵說可以提供性能相當(dāng)?shù)亩鏄銫UDA實(shí)現(xiàn),被拒絕并說不需要。

          我只能說,前世界上95%的算法和碼農(nóng)崗位都不需要你能夠GPU編程,刷好題比這些都重要。

          當(dāng)然了,前一陣G社回來反挖失敗那就是另一回事了。

          評(píng)論圈有人說既然選了G社,就應(yīng)該知道需要刷題,這屬于準(zhǔn)備不善。確實(shí),我同事后來也是這么說的,當(dāng)時(shí)根本就沒有準(zhǔn)備刷題,因?yàn)楸旧硪矝]準(zhǔn)備去做碼農(nóng),抱著試試看的心理去了。

          至于這類數(shù)據(jù)結(jié)構(gòu)和算法輪子,大家千萬不要認(rèn)為用不到刷的題屬于無用功。其實(shí)即便是用pytorch寫煉丹算法還是要注意這些的。比如什么情況會(huì)造成新分配內(nèi)存啊,何時(shí)內(nèi)存會(huì)被copy啊,等等。輪子的基礎(chǔ)越深,最后的車的舒適度,性能也越好,這是肯定的。


          作者:DLing
          https://www.zhihu.com/question/436008648/answer/1746022828

          默認(rèn)cv崗哈!

          一般工作中用不到手?jǐn)]cuda,但這位大神卻時(shí)時(shí)刻刻在我們身邊,每天在各種三方庫中都能夠見到,就是不大會(huì)直接去調(diào)用cuda函數(shù)。但是如果遇到性能瓶頸了,可能就得請(qǐng)cuda大神出場(chǎng)了。

          比如,現(xiàn)在要優(yōu)化模型推理性能,剪枝,蒸餾,量化一大通操作下來,模型純推理時(shí)間由30ms降到15ms,性能翻倍,感覺不錯(cuò),但是一看數(shù)據(jù)預(yù)處理,耗時(shí)10ms,模型后處理耗時(shí)15ms,算下來處理數(shù)據(jù)花的時(shí)間比我模型推理花的時(shí)間還要長。這時(shí)候,cuda大神就可以上場(chǎng)了,我們把預(yù)處理和后處理搬到cuda上,一測(cè),預(yù)處理,后處理共5ms就搞定了。這時(shí)候,報(bào)告一寫,模型推理時(shí)間55ms降低到20ms,領(lǐng)導(dǎo)看后一頓夸,心里美滋滋,升職加薪不是夢(mèng)。

          再比如,最近模型指標(biāo)一直上不去,看著三年前的老模型,一臉嫌棄,感覺是時(shí)候擁抱新模型了。然后各種頂會(huì),博客看下來,找到了個(gè)三個(gè)月前剛發(fā)表的新論文,華麗的辭藻,sota的指標(biāo)讓你按捺不住,想趕快把它用在自己的工程中,結(jié)果github上沒找到開源代碼。這時(shí)候,cuda大神又可以上場(chǎng)了,熬幾個(gè)通宵,把論文中跳動(dòng)的字符轉(zhuǎn)換成cuda實(shí)現(xiàn)的美麗算子,然后模型一訓(xùn),數(shù)據(jù)一測(cè),指標(biāo)提了3個(gè)點(diǎn),老板看后又一頓夸,心里又美滋滋,升職加薪又不是夢(mèng)。

          cuda的作用很多,水也很深,一般做cv方向手?jǐn)]cuda的機(jī)會(huì)還真不多,但是真的用上的時(shí)候,大概率是用來解決重大問題的時(shí)候。多了解了解,用的6確實(shí)可以算是自己很大的加分項(xiàng)。


          作者:Chan Yu
          https://www.zhihu.com/question/436008648/answer/1649590705

          先放結(jié)論:基本上不需要,但是是很好的加分項(xiàng)!

          純算法崗的話接觸CUDA一般是需要實(shí)現(xiàn)一些非常規(guī)算子來滿足一些試驗(yàn)性質(zhì)的算法嘗試。
          而大部分自定義算子 無論是tensorflow還是pytorch 都可以通過現(xiàn)階段豐富的基本算子庫來workaround。
          再不濟(jì)就是利用動(dòng)態(tài)圖的性質(zhì)由numpy、py_func等實(shí)現(xiàn)然后手動(dòng)定義反向梯度函數(shù) 。
          這里相對(duì)更重要的反而是算法工程師定義反傳的能力。雖然不是什么特別難的工作,但不少算法崗的同學(xué)可能也沒仔細(xì)思考過最基礎(chǔ)的矩陣乘法怎么定義grad,或者不清楚tensorflow 或者pytorch的autograd機(jī)制而導(dǎo)致無從下手。
          然后提到CUDA最大的關(guān)心點(diǎn)必然是性能。無論是速度還是顯存都有可能通過CUDA開發(fā)來過得極大的提升,一般體現(xiàn)在訪存效率、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算子融合 等技巧上。事實(shí)上從個(gè)人經(jīng)驗(yàn)來說,有時(shí)候自己實(shí)現(xiàn)的算子庫跑模型很容易比native的tensorflow快兩到三倍,如果是一些特殊情況,十幾甚至極限情況上百倍也有可能。并且合理的設(shè)計(jì)比起生硬的用原生算子 能夠大大減少顯存開銷,這對(duì)于訓(xùn)練和推理都是有極大益處的。
          但是,CUDA開發(fā)有些不小的成本,特別是對(duì)于算法研究,靈活性非常重要。可能要短時(shí)間里嘗試很多種不同的自定義算子,這時(shí)候堆機(jī)器能解決的話一般先不急著進(jìn)行深層次的優(yōu)化,而且在整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)確定下來之前,很難進(jìn)行最終的優(yōu)化。除非有特別高頻使用的算子,優(yōu)化前后的差距非常明顯(比如對(duì)整體的影響5倍左右,無論是顯存還是速度)才可以考慮進(jìn)行個(gè)別算子的優(yōu)化。萬一一通CUDA操作下來,模型效果提升不明顯,最終的時(shí)間/人力成本不一定劃算。我更傾向于盡量先驗(yàn)證算法再進(jìn)行優(yōu)化。
          此外,涉及到這么深層次的研究,并且CUDA優(yōu)化非常必要的情況,一般公司都會(huì)有專門的HPC組或者團(tuán)隊(duì)接手了,或者可能就該思考為什么通用的算子不能滿足需求。
          再說下CUDA開發(fā)的成本。C/CPP本身的編寫和調(diào)試難度就不提了,CUDA C基本就是小半個(gè)新語言,Debug邏輯也是全新的。如果為了極限性能進(jìn)行魔改然后遇到一些非法的顯存訪問更是頭疼,不過現(xiàn)在各類nv的可視化調(diào)試工具出來了應(yīng)該體驗(yàn)會(huì)好很多。一些初入坑的同學(xué)可能會(huì)覺得把算子換成cudnn api就好了,但其實(shí)很多時(shí)候性能瓶頸是來自于訪存效率,這往往意味著需要寫新的kernal來融合算子,親自掌控顯存/緩存的管理。工作量特別是調(diào)試上會(huì)比想象的大很多。如果只是簡單換下cudnn,很可能反而增大了潛在的數(shù)據(jù)拷貝開銷導(dǎo)致性能變差。這里面的各方面經(jīng)驗(yàn)需要長時(shí)間的積累,要不就交給專業(yè)的團(tuán)隊(duì)做,要不就自己長時(shí)間保持這方面的學(xué)習(xí)實(shí)踐?;旧喜粫?huì)作為一個(gè)算法工程師的必備素質(zhì)。
          但是如果擁有這樣的視野對(duì)于算法工程師來說是非常好的,即使沒有用到,平時(shí)也能在設(shè)計(jì)模型 時(shí)保持從性能和效率的角度思考問題,而不是局限于模型效果。工業(yè)界對(duì)于成本是非??粗氐摹?/span>

          作者:OLDPAN
          https://www.zhihu.com/question/436008648/answer/1707546242

          看業(yè)務(wù)方向,比如我主要負(fù)責(zé)模型開發(fā)和模型部署,前者主要是python后者是C++和cuda。

          我們組也有只寫python訓(xùn)練模型研究模型改進(jìn)模型搭建服務(wù)的,加速任務(wù)交給其他人或者我來搞。

          如果只是模型開發(fā)的話,我們一般都是使用框架,例如pytorch。大概率不需要自己寫cuda,只要能夠看懂一些cuda代碼并且能夠以正確姿勢(shì)白嫖其他人造好的cuda輪子即可。因?yàn)榇蟛糠值膐p都有cuda版本,例如dcn,你訓(xùn)練模型可以直接白嫖用。

          但是如果涉及到了部署和模型加速或者模型要上服務(wù)器,只要你的模型需要快速運(yùn)行在GPU上。就需要自己寫一些加速的cuda代碼,前處理或者后處理或者模型中某個(gè)op,也是類似dcn這樣的自定義op。例如TensorRT或者triton-server,需要自己寫一些自定義插件,用cuda和c++寫,目的就是為了加速。

          就算業(yè)務(wù)上沒有使用cuda的地方,也可以學(xué)學(xué)cuda并行語言的思想。并行思想和普通的串行差距還是蠻大,有一定的代溝,需要時(shí)間過渡。

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

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

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


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


          瀏覽 178
          點(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>
                  中国黄色视频一级片 | 蜜桃91精品秘 入口 | 一本道无码在线观看 | 青青草社区视频 | 黄片网站在线播放 |