目前在機器學習領域異構計算得到重視,GPU佔據主流位置,Fpga初現端倪,不知fpga在機器學習的前景如何?

時間 2021-05-30 09:52:26

1樓:chengfangYe

機器學習演算法中運算量最大的矩陣運算是一種向量(Vector)運算,而CPU對於向量運算只能說是部分支援。這時候,GPU進入了機器學習研究者的視野。GPU原本的目的是影象渲染,因此使用完美支援向量運算的SIMD(單指令流多資料流,single instruction multiple data)架構,而這個架構正好能用在機器學習演算法上.

GPU本來就是為了加速3D遊戲效能的加速器,這裡又被用到了加速機器學習應用上,其實是很有趣的一件事。

現在深度學習的網路結構日新月異,但是ASIC上市速度那麼慢而且一旦製作完成(流片)就無法更改,如何能跟上深度學習的發展速度呢?針對這個問題,我想

首先需要釐清乙個概念,即用於深度學習加速的ASIC到底要做什麼?有人認為神經網路ASIC就是真的實現乙個神經網路結構在晶元上,因此網路結構一改(例如從12層變成15層,或者權重引數變一下)該ASIC就不能用了。其實這樣的理解是不對的:

ASIC加速器做的是幫助CPU快速完成深度學習中的運算(例如卷積),當CPU在執行人工智慧演算法時只要遇到這種運算就交給加速器去做。因此只要神經網路的主要運算不變,則ASIC加速器完全可以使用。網路結構會影響ASIC加速器的效能,一種ASIC加速器可能是針對GoogleNet優化過的所以執行GoogleNet會特別快;當你換到VGG Net的時候這款ASIC還是可以用的,只是執行效率相比執行GoogleNet時要打個折扣,不過無論如何都要比CPU快得多。

FPGA和ASIC在實現深度學習加速器方面各有所長,FPGA的可配置性更適合企業、軍工等應用,而ASIC的高效能和低成本則適合消費電子領域(包括移動終端)。為了實現快速迭代,ASIC可以採用SoC+IP的模式,而這種模式也使得沒有資源量產晶元的中小公司可以專注於深度學習加速器IP的架構和前端設計,並在人工智慧市場上占有一席之地。

GPU的架構經過仔細設計(例如使用深度流水線,retiming等技巧),在電路實現上是基於標準單元庫而在關鍵路徑(即晶元中乙個時鐘週期內延遲最長的路徑,直接決定了電路最高執行速度)上可以用手工定製電路,甚至在必要的情形下可以讓半導體fab依據設計需求微調工藝製程,因此可以讓許多core同時跑在非常高的頻率。相對而言,FPGA首先設計資源受到很大的限制,例如GPU如果想多加幾個core只要增加晶元面積就行,但FPGA一旦你型號選定了邏輯資源上限就確定了(浮點運算在FPGA裡會占用很多資源),好漢也會被尿憋死。而且,FPGA裡面的邏輯單元是基於SRAM-查詢表,其效能會比GPU裡面的標準邏輯單元差好多。

最後,FPGA的佈線資源也受限制(有些線必須要繞很遠),不像GPU這樣走ASIC flow可以隨意佈線,這也會限制效能.

除了晶元效能外,GPU相對於FPGA還有乙個優勢就是記憶體介面。GPU的記憶體介面(傳統的GDDR5,最近更是用上了HBM和HBM2)的頻寬遠好於FPGA的傳統DDR介面(大約頻寬高4-5倍),而眾所周知伺服器端機器學習演算法需要頻繁訪問記憶體,因此記憶體介面的頻寬可以決定機器學習應用的效能。

但是從靈活性來說,FPGA遠好於GPU。FPGA可以根據特定的應用去程式設計硬體(例如如果應用裡面的加法運算非常多就可以把大量的邏輯資源去實現加法器),但是GPU一旦設計完那就沒法改動了,沒法根據應用去調整硬體資源。目前機器學習大多數適合使用SIMD架構(即只需一條指令可以平行處理大量資料),因此用GPU很適合。

但是有些應用是MISD(即單一資料需要用許多條指令平行處理)這種情況下用FPGA做乙個MISD的架構就會比GPU有優勢。不過FPGA的程式設計對於程式設計師來說並不容易,,這些都是只有大公司才能做。

2樓:科技表音字

中國應該從Deep Learning的ASIC開始,緊跟世界處理器研發步伐。CPU、GPU早就無法追趕了。

要投資,就投這個。為國為民,功德無量。

3樓:洪春濤

對做學術的來說,此坑勉強可跳

對做產品的來說,深坑,千萬別進

FPGA有什麼優點?大家常說它效能功耗比高,同樣的效能,它的功耗比ASIC低;同樣的功耗,它的效能比ASIC好。但是,這裡面其實有個陷阱,它的對比物件並不是所有ASIC,而是通用CPU。

另外還有一種ASIC是針對應用定製的,這種定製ASIC效能功耗比遠高於FPGA。於是FPGA就變成了一種介於通用CPU和定製ASIC之間的產品。這就比較尷尬了:

這兩者都會擠壓FPGA的市場。

先說說FPGA的各項所謂優勢:

1. 可程式設計性。在這點上, 通用CPU/GPU >> FPGA > 定製ASIC。通用CPU/GPU直接寫軟體就好了,FPGA需要寫VHDL之類的,定製ASIC則一旦造出來就改不了了

2. 效能。在這點上,不嚴格的講,GPU/定製ASIC > FPGA >= 通用CPU。

定製ASIC一般根據場景不同會定製成不同的效能,所以不一定會很快。FPGA則需要看型號,小FPGA是很差的,大板能做到TFLOPS,但動輒幾萬人刀,而GTX1080 GPU只需要5000就有8TFLOPS。另外現在的通用CPU其實很強大的,單CPU已經能達到500GFLOPS了

3. 功耗。 GPU > 通用CPU > FPGA > 定製ASIC。這裡FPGA也需要區別大小板,大板一般也要幾十W,而定製ASIC則在mW級

現在我們再看看應用場景:

1. Training。訓練DNN模型(這裡用DNN代表所有深度模型)時,現在大家一般是GPU訓練,有少部分土豪也用CPU(如Google,因為CPU機器太多)。

因為訓練一般不需要太擔心功耗問題,而CPU/GPU上的工具鏈是最完善的。

2. Prediction。分兩種場景,一種是伺服器端,像Google image search這一類;另一種是終端,如無人機,手機這些裝置。

1)伺服器場景一般就直接上GPU了,因為目前CPU效能還是差點,延時不好控制。當然,現在MKL DNN出來應該會有越來越多人用CPU做prediction。(因為prediction時候GPU並不能發揮最大效能,跟CPU其實差別並不是特別大。

現在差別大的最大原因是CPU上的DNN實現太差)。FPGA可能有點用,但是用起來太費勁,而且也太貴,除非萬不得已(比如CPU,GPU都沒辦法達到延時要求,但這時候可能又會有相應的ASIC來填這個空白),否則不會有人用的。

2) 終端場景下,GPU和通用CPU因為功耗的問題,一般都不好用,所以最好的方式還是定製ASIC。FPGA在相同效能下,功耗還是比定製ASIC高一兩個數量級的,所以很難想像有人會在手機裡放一塊FPGA...。更靠譜的應該還是ARM加上乙個mW級的定製ASIC

綜上,我不認為FPGA在深度學習方面會有太多應用。搞學術的灌水也就得了,做產品的千萬別跳這個坑。

目前機器學習在生物學領域有應用嗎?

林錦堅 比如,冷凍電鏡領域,答主曾在清華結構生物中心參與過科研。三維結構和動力學資訊對於蛋白質功能理解至關重要。深度學習技術可以直接提取冷凍電鏡密度圖中蛋白質動態資訊的文章,用深度學習演算法可以僅憑藉冷凍電鏡密度資料,獲得了與分子動力學模擬和實驗方法資料高度相關的動力學資訊。還可以結合了自然語言處理...

系統辨識在人工智慧 機器學習等領域有哪些應用?

人工智慧最主要解決的問題就是模式識別 廣義的 因為這也是人類大腦工作最神奇的地方。而系統辨識可以認為是當前模式識別所使用技術的一種傳統 經典方案。機器學習肯定用到了很多系統辨識所使用的一些技術 術語,但是兩者還是完全不同的東西。所以不要想著將傳統的系統辨識技術在機器學習領域找到應用,而應該是將系統辨...

研究者July在計算機和機器學習領域的水平怎麼樣?

calelin 恕我直言,本身國內能稱得上機器學習研究者的,在好一點的985技校乙個學校就兩三個,乙個東華理工的也敢稱自己是機器學習研究者?估計連最末流的機器學習崗位都幹不了吧。 apocrypha n.作者 或真實性 權威性 可疑的著作 旁經相關例句 July often shared apocr...