神經(jīng)網(wǎng)絡(luò)加速器基本上是一個(gè)中介拓?fù)浼軜?gòu)的神經(jīng)網(wǎng)絡(luò)加速器,其通過(guò)指令解析模塊將不同指令分發(fā)到不同的數(shù)據(jù)處理模塊。這些數(shù)據(jù)處理模塊共享片上的存儲(chǔ)。這種結(jié)構(gòu)的優(yōu)點(diǎn)有:
1) 結(jié)構(gòu)簡(jiǎn)單,控制起來(lái)容易。對(duì)應(yīng)每個(gè)數(shù)據(jù)處理模塊都對(duì)應(yīng)一個(gè)復(fù)雜指令,在進(jìn)行神經(jīng)網(wǎng)絡(luò)加速的時(shí)候,只需要根據(jù)神經(jīng)網(wǎng)絡(luò)的中的不同數(shù)據(jù)計(jì)算部分,提取出可在硬件上進(jìn)行布置的部分,根據(jù)這部分完成指令編寫。同時(shí)一個(gè)神經(jīng)網(wǎng)絡(luò)的計(jì)算流圖決定了不同類型指令之間的依賴關(guān)系。
2) 可擴(kuò)展性強(qiáng)。數(shù)據(jù)處理模塊可以任意進(jìn)行擴(kuò)展,對(duì)應(yīng)著指令集也可以任意增加。每個(gè)模塊和指令的接口以及cache的接口形式是一定的,它們之間可以通過(guò)cache來(lái)進(jìn)行數(shù)據(jù)交互。指令集和模塊的增加和減少都不會(huì)影響到整體架構(gòu)。我們只要開發(fā)出新的模塊IP以及指令就夠了。

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

2) 不同數(shù)據(jù)處理模塊之間通過(guò)cache進(jìn)行數(shù)據(jù)交互,以及指令分發(fā)造成了延時(shí)。這對(duì)于一個(gè)大的神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),這些開銷占比很小,但是當(dāng)一個(gè)神經(jīng)網(wǎng)絡(luò)很小,計(jì)算復(fù)雜的時(shí)候,不同模塊之間的數(shù)據(jù)交互就會(huì)降低整體效能。

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

硬核IP不僅僅包括在FPGA上開發(fā)出的各種計(jì)算核,還包含有CPU,因?yàn)镕PGA資源限制以及計(jì)算的復(fù)雜性,并不是所有的神經(jīng)網(wǎng)絡(luò)計(jì)算都可以在FPGA上實(shí)現(xiàn)。
軟件根據(jù)網(wǎng)絡(luò)模型,分析哪些計(jì)算可以用FPGA實(shí)現(xiàn),評(píng)估其實(shí)現(xiàn)性能,選擇最適合在FPGA上進(jìn)行加速的計(jì)算。同時(shí)需要評(píng)估FPGA資源情況,配置每個(gè)核的大小,使用資源等。然后根據(jù)神經(jīng)網(wǎng)絡(luò)計(jì)算流圖,確定不同IP核的連接關(guān)系,構(gòu)建圖。
圖結(jié)構(gòu)大致設(shè)想如下:

不同節(jié)點(diǎn)代表一個(gè)計(jì)算模塊,這些模塊之間直接通過(guò)數(shù)據(jù)流交互,不經(jīng)過(guò)共享內(nèi)存的方式,計(jì)算可以實(shí)現(xiàn)流水。節(jié)點(diǎn)控制器對(duì)每個(gè)節(jié)點(diǎn)實(shí)現(xiàn)參數(shù)配置,和數(shù)據(jù)流控制,數(shù)據(jù)流控制也很簡(jiǎn)單,只需要控制數(shù)據(jù)閘門的開關(guān),以及數(shù)據(jù)量流通的多少就行了。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21923瀏覽量
612354 -
加速器
+關(guān)注
關(guān)注
2文章
821瀏覽量
38802 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4797瀏覽量
102409
發(fā)布評(píng)論請(qǐng)先 登錄
PowerVR Series2NX神經(jīng)網(wǎng)絡(luò)加速器設(shè)計(jì)

張量計(jì)算在神經(jīng)網(wǎng)絡(luò)加速器中的實(shí)現(xiàn)形式

評(píng)論