FPGA vs. ASIC
首先講講FPGA和ASIC的區別。FPGA全稱“可編輯門陣列”(Field Programmable Gate Array),其基本原理是在FPGA晶片內整合大量的數位電路基本閘電路以及儲存器,而使用者可以通過燒入FPGA配置檔案來來定義這些閘電路以及儲存器之間的連線。這種燒入不是一次性的,即使用者今天可以把FPGA配置成一個微控制器MCU,明天可以編輯配置檔案把同一個FPGA配置成一個音訊編解碼器。ASIC則是專用積體電路(Application-Specific Integrated Circuit),一旦設計製造完成後電路就固定了,無法再改變。
小結
SoC+IP模式
說到這裡,不少讀者可能有疑問:現在深度學習的網路結構日新月異,但是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的架構和前端設計,並在人工智慧市場上佔有一席之地。