普通FPGA工程師怎樣向人工智慧靠攏?
在人工智慧這個大趨勢下,普通FPGA工程師是否有必要向人工智慧靠攏?
私以為,人工智慧最主要指的是深度學習,而將FPGA直接應用於深度學習還在嘗試階段,門檻高路子窄,所以不如先做和人工智慧的相關領域,比如先去安防監控行業做機器視覺(人臉識別等),然後等深度學習大規模普及而門檻降低之後再跳到深度學習。樓主不是Ph.D,樓主就是個普通的fpga碼農。
從接觸FPGA來,發現FPGA從業者一直存在的焦慮:以FPGA做產品的,怕產品穩定後被ASIC晶元替換掉;做ProtoType原型驗證的,覺得做的這塊太窄了。偶爾發現塊新大陸想去闖一闖,發現轉的方向也挺大,供給相比軟體來講嚴重不足,如轉互聯網、AI、異構計算等,這種焦慮應該也會一直存在下去吧。
個人覺得異構計算這塊領域不錯,以後市場需求會增長很快,且不用擔心ASIC晶元的競爭問題。目前從業者要麼在Intel這樣的供應商那裡,要麼在騰訊雲、阿里雲這樣的大企業用戶那裡,但隨著進一步成熟,普通用戶也有這樣的需求,那第三方解決方案公司會興起,可以容納大量的就業人員(現在也有些公司在做這塊),就是做add-in板卡硬體和軟體打包方案的。
---------------------------------------------------------------
兩位前S公司同事,之前做FPGA的,最近半年內都跳去創業公司做AI相關的,也是用FPGA實現,地點上海。所以不要想那麼多,真有興趣就多關注市場供需行情,多在獵頭那裡掛下號,說不定哪家你從沒聽說過的小公司就在招人呢?那下一個決定是:你真願意去嗎?
這幾年投資界過一兩年就換個新名詞:O2O,大數據,穿戴設備,AI,深度學習,智能駕駛等,但風頭過後還剩下多少在堅持?這回AI火的時候算比較長了,尤其是有Google、Nvidia這樣的行業領頭公司在推動,可能真的需求到來了。但國內的AI公司有多少是真在做這塊,還是徒有其名?我也不知道。
命里有時終須有,命里無時莫強求。強行蹭熱度不是個好方法。
FPGA的前途跟FPGA的特點離不開啊,fpga相比asic什麼特點? 單次配置成本低,但靈活,量產asic成本低,但開發周期長。
所以google已經給出答案了,最先是開發自家的程序語言tensorflow,然後開發asic:tpu。
FPGA開發asic的過程中肯定有用得上的地方,開發架構驗證架構,可都得要靠fpga。但是驗證完了就轉成asic了。
總結起來,fpga需求還會是有的,但是從經濟的角度考慮的話,必然只存在於架構的升級驗證上(比如google要出tpu2.0的話,肯定需要fpga工程師),所以需求量肯定不會大。需求量大的還是在軟體,應用那一端。而且幾乎肯定的,一開始的溢價會很高。因為不高的話怎麼激勵人改行(機會成本可不低)滿意一個新產業。
所以,對個人來說,兩條路,要麼繼續弄fpga,低風險低收益。要麼改行,高風險高收益。具體取捨看你個人。
反正同為誤入fpga坑的我……準備改行了。現在主流機器學習方法之一是搭建人工神經網路,依靠強勁的運算力獲得不錯的效果。因此GPU非常受依賴。這是一個略有無奈的大背景。
對於不需要移動的應用,把有強勁GPU的各種伺服器鋪開地安置,有多大地兒,擺開多大。
但是無人車這樣的應用就要稍微考慮一下功耗和設備體積了,畢竟把人擠的沒地方坐或者嚴重影響車輛供電也不太好。這個時候把成熟、底層、適合併行的預處理演算法寫進fpga可以顯著提升整體效率。這麼搞可能不夠AI,但要知道,卷積神經網路是個天然的並行結構,要是能寫成fpga,提速效果顯著。有那麼一部分就在搞,並且很受投資人待見。
比無人車更小的空間比比皆是,各種移動機器人、小型無人機,他們對AI的需求也是非常強烈的,對計算力充滿了渴望。常規的GPU已經不能用了,主要是功耗太大、體積太大。慶幸的是,N卡黃教主在釋放各種核彈的同時也兼顧移動設備,如集成了ARM核心和GPU計算塊的TX2,成為為數寥寥的能在有限功耗和體積限制下提供可觀計算力設備,有廣泛應用。如果能把核心的神經網路寫進fpga,就可以把已有的功能推廣到功耗和體積要求更苛刻的地方,如手機一樣的卡片設備。
自從intel收購Altera後還沒有推出針對AI的東西,Google都推出了二代TPU了,N卡黃教主在AI硬體方面動作頻頻,在這場暗流涌動的AI硬體戰爭中,intel應該不會把自己作為局外人,估計不久(非常希望)就會推出集成低功耗x86和專用fpga核心的東西,加速AI的並行計算部分。
說了這麼多,總結起來就是:
把AI放進fpga,門檻比逼格還高!fpga對低功耗、小體積、計算力要求不是非常高的AI場景非常適合,但無奈即使把最簡單的多層卷積寫成VHDL也是較高的門檻,更別說更複雜的網路了。如果能有某種配套的軟硬體,只需要配置不同的層級結構就能把神經網路映射進fpga,那就相當牛叉,爽翻無數在無人機和機器人上搞AI的了!!!太多機會了。
現在AI行業都認為FPGA有著很大優勢,但是很難被碼農使用。這就是機會啊。
1,你可以提供自己能力,幫碼農轉化代碼。
2,你可以開發軟體,幫碼農轉化代碼。
3,你可以開公司,幫碼農轉化代碼。然後再幫產品做成ASIC。
如果是普通FPGA工程師怎麼搭個順風車拿互聯網的工資和待遇,當我沒說。
Xilinx的想法是把模型定點化,然後INT8去做Inference。Altera加強了浮點,讓FPGA可以Train。
其實定點器件用dynamic fix point操作也能訓練,ICLR有論文。
然而如果用到Train就不如GPU了,inference還可以。
嚴格的說,fpga和人工智慧沒關係,fpga類似於一種特殊的編程語言,而人工智慧是演算法與訓練。
fpga人員轉行到軟體是沒有什麼障礙的,反而多一項技能,我一直覺得不要把fpga開發視為一個獨立的職業,實際上我學習verilog併到寫幾千行的過程只用了三個月,c/cpp程序員只要理解了並行,fpga根本不是什麼問題,所以,在非集成電路製造行業的一般民用領域,fpga既不稀缺,也不是專業知識密集,長期以此為生不會有多大前途的。
早早轉行為妙。最近一個人搞人臉識別,擼到心力交瘁。談談看法:人工智慧始終是屬於軟體開發者的,過去是,未來也是。在該領域,軟體開發者的優勢遠大於FPGA工作者,為什麼這麼說,看看X家的PYNQ和SDx就知道了。那麼FPGA工作者怎麼辦,要麼停留在熟悉的傳統行業,學海無涯嘛,要麼學演算法擼代碼做優化,參考深鑒科技,要麼直接轉碼農。個人愚見~
人工智慧與FPGA(嵌入式硬體)到底是什麼關係?或者說,嵌入式人工智慧到底有沒有前途(錢途)?
我的回到是:嵌入式是人工智慧的主要發展方向,必將大火。
為什麼呢?因為便攜、低成本、易維護、開發周期短、速度快。
目前主流的人工智慧框架如caffe、caffe2、tensorflow等都是在PC或者伺服器上搭建的,目前跑神經網路的演算法基本都需要使用GPU,對於某些特定的場景,比如車載環境,某些軍事應用場景,以及未來可能實現的可穿戴場景,我們不可能到處都配置上一台PC:一是因為PC成本高,二十PC可移動性太差,相比之下,一塊FPGA的開發板加上必要的外設,就顯得相當有優勢:快速。
關於門檻高路子窄:
把人工智慧的演算法嵌入到FPGA,最主要的問題是功耗,也就是神經網路參數的體積,如果不把神經網路龐大的參數解決掉,想在功耗敏感的嵌入式平台跑起來人工智慧的演算法不現實。
那麼如何搞定龐大的參數?
回答是演算法壓縮。
如何做演算法的壓縮?
回答是先搭建神經網路框架,然後訓練出自己的參數文件,再參考 deep compression 的方法,把不必要的參數去掉。
說了一大堆,最後上點乾貨,和樓主分享一下嵌入式人工智慧的入門步驟:
第一步:把卷積神經網路的的演算法搞懂,要徹底明白才可以
第二步:學習python 人工智慧的首選語言,當然如果樓主精通MATLAB也可以。
第三步:購買一台強力PC,尤其是強力顯卡,必須是NV的卡。(如果樓主不想訓練一個網路訓練一個月的話,還是乖乖掏錢吧。
第三步:在強力PC上搭建人工智慧框架,樓主想搞圖像視頻處理,那麼我建議Linux+caffe+cuda+cudnn+opencv+python(Linux 首選Ubuntu)
搭建框架這個過程異常痛苦,需要樓主了解Linux系統
第四步:跑起來caffe自帶的minst實例,到這裡,樓主就算入門啦
有空看看深鑒科技的招聘…
雖然畢業了,還在為國家做貢獻,我在幫老師做類人腦計算機,在深圳的話可以聯繫。
可以試試寒武紀這種做ai晶元的公司,先進入圈裡再說。
畢設做的CNN及其硬體加速,也是想著畢業能向人工只能靠攏,用的原生verilog。刷個存在感:
hunterlew/convolution_network_on_FPGA
為了權衡FPGA資源和速度,主要用了移位寄存器卷積加速和分組卷積的trick,最後用vertix7-415t以上的FPGA型號才勉強資源夠用,主要需要大量的乘法器資源。
Xilinx Supertile + reVison ?
最近恰好在搞這個,來說下感受吧!感覺未來還是gpu和asic的天下吧,不過在現在這個時間節點,FPGA也是有存在的理由!總之,還是做FPGA的事,只不過應用不同了吧!另外,gpu也好,asic也好,FPGA也好,你會發現,大部分的工作都是C在完成……
推薦閱讀:
※有哪些職業容易被人工智慧替代,又有哪些行業不易被人工智慧替代?
※大數據平台(分散式系統,如hadoop)和數據挖掘從業者人生髮展前途比較?小弟現在研一,不知道專註哪一個?
※python 機器學習不會很慢嗎?
※如何看待摩根大通利用 AI 機器人執行金融交易?其工作原理是怎樣的?
※cart樹怎麼進行剪枝?
TAG:機器學習 | 現場可編輯邏輯門陣列FPGA | 計算機視覺 | 安防 | 深度學習DeepLearning |