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

          共 3482字,需瀏覽 7分鐘

           ·

          2022-05-20 04:51

          鏈接:https://www.zhihu.com/question/436008648
          編輯:深度學(xué)習(xí)與計(jì)算機(jī)視覺
          聲明:僅做學(xué)術(shù)分享,侵刪

          工業(yè)界里面numba用的多嗎,還是說工業(yè)界主要還是直接寫cuda?


          作者:知乎用戶
          https://www.zhihu.com/question/436008648/answer/1683251210
          95%的算法崗都不需要。

          真實(shí)的故事:我同事,再來英偉達(dá)前申請的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社回來反挖失敗那就是另一回事了。

          評論圈有人說既然選了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寫煉丹算法還是要注意這些的。比如什么情況會造成新分配內(nèi)存啊,何時(shí)內(nèi)存會被copy啊,等等。輪子的基礎(chǔ)越深,最后的車的舒適度,性能也越好,這是肯定的。


          作者: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ì)就是利用動態(tài)圖的性質(zhì)由numpy、py_func等實(shí)現(xiàn)然后手動定義反向梯度函數(shù)。

          這里相對更重要的反而是算法工程師定義反傳的能力。雖然不是什么特別難的工作,但不少算法崗的同學(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í)上從個人經(jīng)驗(yàn)來說,有時(shí)候自己實(shí)現(xiàn)的算子庫跑模型很容易比native的tensorflow快兩到三倍,如果是一些特殊情況,十幾甚至極限情況上百倍也有可能。并且合理的設(shè)計(jì)比起生硬的用原生算子能夠大大減少顯存開銷,這對于訓(xùn)練和推理都是有極大益處的。

          但是,CUDA開發(fā)有些不小的成本,特別是對于算法研究,靈活性非常重要。可能要短時(shí)間里嘗試很多種不同的自定義算子,這時(shí)候堆機(jī)器能解決的話一般先不急著進(jìn)行深層次的優(yōu)化,而且在整個網(wǎng)絡(luò)結(jié)構(gòu)確定下來之前,很難進(jìn)行最終的優(yōu)化。除非有特別高頻使用的算子,優(yōu)化前后的差距非常明顯(比如對整體的影響5倍左右,無論是顯存還是速度)才可以考慮進(jìn)行個別算子的優(yōu)化。萬一一通CUDA操作下來,模型效果提升不明顯,最終的時(shí)間/人力成本不一定劃算。我更傾向于盡量先驗(yàn)證算法再進(jìn)行優(yōu)化。
          此外,涉及到這么深層次的研究,并且CUDA優(yōu)化非常必要的情況,一般公司都會有專門的HPC組或者團(tuán)隊(duì)接手了,或者可能就該思考為什么通用的算子不能滿足需求。
          再說下CUDA開發(fā)的成本。C/CPP本身的編寫和調(diào)試難度就不提了,CUDA C基本就是小半個新語言,Debug邏輯也是全新的。如果為了極限性能進(jìn)行魔改然后遇到一些非法的顯存訪問更是頭疼,不過現(xiàn)在各類nv的可視化調(diào)試工具出來了應(yīng)該體驗(yàn)會好很多。一些初入坑的同學(xué)可能會覺得把算子換成cudnn api就好了,但其實(shí)很多時(shí)候性能瓶頸是來自于訪存效率,這往往意味著需要寫新的kernal來融合算子,親自掌控顯存/緩存的管理。工作量特別是調(diào)試上會比想象的大很多。如果只是簡單換下cudnn,很可能反而增大了潛在的數(shù)據(jù)拷貝開銷導(dǎo)致性能變差。這里面的各方面經(jīng)驗(yàn)需要長時(shí)間的積累,要不就交給專業(yè)的團(tuán)隊(duì)做,要不就自己長時(shí)間保持這方面的學(xué)習(xí)實(shí)踐。基本上不會作為一個算法工程師的必備素質(zhì)。
          但是如果擁有這樣的視野對于算法工程師來說是非常好的,即使沒有用到,平時(shí)也能在設(shè)計(jì)模型時(shí)保持從性能和效率的角度思考問題,而不是局限于模型效果。工業(yè)界對于成本是非常看重的。

          作者:DLing
          https://www.zhihu.com/question/436008648/answer/1746022828
          默認(rèn)cv崗哈!

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

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

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

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


          作者:知乎用戶 https://www.zhihu.com/question/436008648/answer/1651056548
          這個是基本功,逃不掉的。
          當(dāng)研究員的話,總會碰到現(xiàn)有op無法組合出新提出的算法的情況,有的時(shí)候可以強(qiáng)行組合但效率非常低,也是需要自己寫的。
          當(dāng)工程師的話,為了提高模型速度,會寫cuda,甚至?xí)?yōu)化cuda都是必備技能。

          作者:鳳舞九天 https://www.zhihu.com/question/436008648/answer/1797954558
          一般的算法崗是不需要自己寫cuda的。只能說大家分工不同,算法工程師主要是調(diào)模型,而模型訓(xùn)練一般都是tf或pytorch這些開源框架,算法工程師只需要調(diào)用相關(guān)的接口就可以,更多的還是理解數(shù)據(jù),理解業(yè)務(wù),理解問題,理解模型~

          作者:知乎用戶
          https://www.zhihu.com/question/436008648/answer/1730191107
          是指軟件算法崗位吧?平時(shí)要寫cuda的估計(jì)應(yīng)該都是大廠里的員工,大概占程序猿總量的千分之一,也許還少吧…。
          個人覺得本問題可以換成“面試中需要問CUDA相關(guān)知識嗎”。程序猿的話大部分都是if else那些,最難的問題一般超不過你大廠面試時(shí)候的難度。
          說回CUDA。NIVIDA的文檔真的還是不錯的,照著開發(fā),安裝的cuda里面自帶的examples看一看,差不多吧。如果是面試的話我覺得一般不會問API,可能問點(diǎn)底層架構(gòu)(比如Volta和Ampare的差異)、什么是stream、core…
          至于某些崗位上的要求“熟悉/精通CUDA編程”,感覺跟街道辦事處招收一個劍橋的博士有“異曲同工”之妙。

          往期精彩:

           機(jī)器學(xué)習(xí)交流群來了!

           講解視頻來了!機(jī)器學(xué)習(xí) 公式推導(dǎo)與代碼實(shí)現(xiàn)開錄!

           更新!《機(jī)器學(xué)習(xí):公式推導(dǎo)與代碼實(shí)現(xiàn)》1-16章PPT下載

          《機(jī)器學(xué)習(xí) 公式推導(dǎo)與代碼實(shí)現(xiàn)》隨書PPT示例

           時(shí)隔一年!深度學(xué)習(xí)語義分割理論與代碼實(shí)踐指南.pdf第二版來了!

           新書首發(fā) | 《機(jī)器學(xué)習(xí) 公式推導(dǎo)與代碼實(shí)現(xiàn)》正式出版!

          《機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)》將會配套PPT和視頻講解!

          瀏覽 77
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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中文字幕 | 天天日天天搞 |