算法崗平時(shí)需要自己寫cuda嗎?
共 4221字,需瀏覽 9分鐘
·
2024-08-02 11:56
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá) ![]()
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ǔ)越深,最后的車的舒適度,性能也越好,這是肯定的。
https://www.zhihu.com/question/436008648/answer/1746022828
默認(rèn)cv崗哈!
比如,現(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)。
https://www.zhihu.com/question/436008648/answer/1649590705
先放結(jié)論:基本上不需要,但是是很好的加分項(xiàng)!
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)出群,謝謝理解~
