半定制人工智能芯片-FPGA芯片是最佳選擇
一項深度學習工程的搭建,可分為訓練(training)和推斷(inference)兩個環節。推斷(inference)環節指利用訓練好的模型,使用新的數據去“推斷”出各種結論,如視頻監控設備通過后臺的深度神經網絡模型,判斷一張抓拍到的人臉是否屬于黑名單。雖然推斷環節的計算量相比訓練環節少,但仍然涉及大量的矩陣運算。在推斷環節,除了使用CPU或GPU進行運算外,FPGA以及ASIC均能發揮重大作用。
FPGA(可編程門陣列,Field Programmable Gate Array)是一種集成大量基本門電路及存儲器的芯片,可通過燒入FPGA配置文件來來定義這些門電路及存儲器間的連線,從而實現特定的功能。而且燒入的內容是可配置的,通過配置特定的文件可將FPGA轉變為不同的處理器,就如一塊可重復刷寫的白板一樣。因此FPGA可靈活支持各類深度學習的計算任務,性能上根據百度的一項研究顯示,對于大量的矩陣運算GPU遠好于FPGA,但是當處理小計算量大批次的實際計算時FPGA性能優于GPU,另外FPGA有低延遲的特點,非常適合在推斷環節支撐海量的用戶實時計算請求(如語音云識別)。
FPGA和GPU內都有大量的計算單元,因此它們的計算能力都很強。在進行神經網絡運算的時候,兩者的速度會比CPU快很多。但是GPU由于架構固定,硬件原生支持的指令也就固定了,而FPGA則是可編程的。其可編程性是關鍵,因為它讓軟件與終端應用公司能夠提供與其競爭對手不同的解決方案,并且能夠靈活地針對自己所用的算法修改電路。
在平均性能方面,GPU遜于FPGA,FPGA可以根據特定的應用去編程硬件,例如如果應用里面的加法運算非常多就可以把大量的邏輯資源去實現加法器,而GPU一旦設計完就不能改動了,所以不能根據應用去調整硬件資源。
目前機器學習大多使用SIMD架構,即只需一條指令可以平行處理大量數據,因此用GPU很適合。但是有些應用是MISD,即單一數據需要用許多條指令平行處理,這種情況下用FPGA做一個MISD的架構就會比GPU有優勢。 所以,對于平均性能,看的就是FPGA加速器架構上的優勢是否能彌補運行速度上的劣勢。如果FPGA上的架構優化可以帶來相比GPU架構兩到三個數量級的優勢,那么FPGA在平均性能上會好于GPU。
在功耗能效比方面,同樣由于FPGA的靈活性,在架構優化到很好時,一塊FPGA的平均性能能夠接近一塊GPU,那么FPGA方案的總功耗遠小于GPU,散熱問題可以大大減輕。 能效比的比較也是類似,能效指的是完成程序執行消耗的能量,而能量消耗等于功耗乘以程序的執行時間。雖然GPU的功耗遠大于FPGA的功耗,但是如果FPGA執行相同程序需要的時間比GPU長幾十倍,那FPGA在能效比上就沒有優勢了;反之如果FPGA上實現的硬件架構優化得很適合特定的機器學習應用,執行算法所需的時間僅僅是GPU的幾倍或甚至于接近GPU,那么FPGA的能效比就會比GPU強。
另外,FPGA的靈活性,很多使用通用處理器或ASIC難以實現的下層硬件控制操作技術利用FPGA可以很方便的實現,從而為算法的功能實現和優化留出了更大空間。同時FPGA一次性成本(光刻掩模制作成本)遠低于ASIC,在芯片需求還未成規模、深度學習算法暫未穩定需要不斷迭代改進的情況下,利用具備可重構特性的FPGA芯片來實現半定制的人工智能芯片是最佳選擇。