神經網絡加速器基本上是一個中介拓撲架構的神經網絡加速器,其通過指令解析模塊將不同指令分發到不同的數據處理模塊。這些數據處理模塊共享片上的存儲。這種結構的優點有:
1) 結構簡單,控制起來容易。對應每個數據處理模塊都對應一個復雜指令,在進行神經網絡加速的時候,只需要根據神經網絡的中的不同數據計算部分,提取出可在硬件上進行布置的部分,根據這部分完成指令編寫。同時一個神經網絡的計算流圖決定了不同類型指令之間的依賴關系。
2) 可擴展性強。數據處理模塊可以任意進行擴展,對應著指令集也可以任意增加。每個模塊和指令的接口以及cache的接口形式是一定的,它們之間可以通過cache來進行數據交互。指令集和模塊的增加和減少都不會影響到整體架構。我們只要開發出新的模塊IP以及指令就夠了。

我個人認為,目前的架構還存在如下缺陷:
1) 架構不夠靈活。相對于千變萬化的神經網絡結構,其只能加速有限的的計算模塊。而且如果不同神經網絡之間進行切換的時候,如果這兩種神經網絡差別很大,則可能造成不太好找到一個比較匹配的XRNN結構。比如一個神經網絡要用到模塊A,但是另外一個神經網絡要用到模塊B,那么我們的架構就需要將模塊A和B都加上,這樣才能適合兩種網絡。當然也可以選擇不加,但是終歸是有模塊不能得到充分利用。

2) 不同數據處理模塊之間通過cache進行數據交互,以及指令分發造成了延時。這對于一個大的神經網絡來說,這些開銷占比很小,但是當一個神經網絡很小,計算復雜的時候,不同模塊之間的數據交互就會降低整體效能。

3) 介于AI芯片和GPU之間的尷尬處境。使用FPGA來進行神經網絡加速器,和GPU比不過算力,同時又不能像AI芯片那樣具有高速和充足資源的特點。所以針對大計算的網絡,面對GPU我們的性能很難PK過。
4) FPGA的優勢沒有顯現出來。可以和GPU等競爭的優勢在于FPGA的動態可重配置以及流水線處理,這些是GPU等芯片不具備的。流水線可以容納更多的計算核,而且能夠減少計算核之間數據延時,而可重配置的特點可以更好的適配千變萬化的神經網絡結構。這兩個優點在神經網絡加速器中也得到了一定的體現,比如矩陣乘法核的大小,cache大小都是可配置的。而且不同的計算模塊之間還可以做一定的直連,也能夠降低讀寫cache帶來的延時。但是這些特點還并沒有得到很好的利用。
圖架構設想:
對于神經網絡加速器,我們總是渴望在FPGA上構建一個統一的IP核,能夠盡力去適應不同的神經網絡,能夠盡力去加速每個神經網絡。于是乎,我們增加了一個個模塊IP,不斷擴充指令集。但是這些都受到了兩個條件的制約:一個是FPGA資源的有限性,另外一個就是神經網絡的千變萬化。如果我們換一種思路,不去追求一種統一的神經網絡加速IP,而是基于FPGA可重配置特點構建一種平臺,在這個平臺下,可以由用戶根據需要加速的不同神經網絡來自行搭建一套加速器。而我們要做的就是,建立一個IP庫,庫里包含各種計算IP,比如矩陣乘法,向量加法,concat,embedding等等。整個平臺來根據網絡模型選擇不同IP來構建一個神經網絡加速器。
基本設想的結構是這樣的:

硬核IP不僅僅包括在FPGA上開發出的各種計算核,還包含有CPU,因為FPGA資源限制以及計算的復雜性,并不是所有的神經網絡計算都可以在FPGA上實現。
軟件根據網絡模型,分析哪些計算可以用FPGA實現,評估其實現性能,選擇最適合在FPGA上進行加速的計算。同時需要評估FPGA資源情況,配置每個核的大小,使用資源等。然后根據神經網絡計算流圖,確定不同IP核的連接關系,構建圖。
圖結構大致設想如下:

不同節點代表一個計算模塊,這些模塊之間直接通過數據流交互,不經過共享內存的方式,計算可以實現流水。節點控制器對每個節點實現參數配置,和數據流控制,數據流控制也很簡單,只需要控制數據閘門的開關,以及數據量流通的多少就行了。
-
FPGA
+關注
關注
1645文章
22012瀏覽量
616691 -
加速器
+關注
關注
2文章
826瀏覽量
39027 -
神經網絡
+關注
關注
42文章
4812瀏覽量
103236
發布評論請先 登錄
PowerVR Series2NX神經網絡加速器設計

評論