基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究
(4)面積節(jié)省及相關(guān)問題
為了最小化神經(jīng)元實(shí)現(xiàn)的面積,組成每個(gè)神經(jīng)元的各個(gè)HDL算法模塊的面積也應(yīng)該最小。乘法器以及基本的傳遞函數(shù)(例如,sigmoid激活函數(shù)tanh)是最占用面積的,這類問題非常依賴于所要求的精度,盡管神經(jīng)網(wǎng)絡(luò)常并不要求很精確的計(jì)算,但是不同的應(yīng)用所要求的精度不同。一般來講,浮點(diǎn)運(yùn)算要比定點(diǎn)運(yùn)算需要更大的面積,比如浮點(diǎn)運(yùn)算中的并行加法器本質(zhì)上是定點(diǎn)運(yùn)算超前加法器加上必要的邏輯塊,減法器、乘法器也類似如此,這在激活函數(shù)實(shí)現(xiàn)方面更加突出,文獻(xiàn)[1]中面積優(yōu)化對(duì)比顯示,32位浮點(diǎn)運(yùn)算要比16位定點(diǎn)運(yùn)算大250倍。另外,對(duì)于小型網(wǎng)絡(luò),分布式存儲(chǔ)器很適合權(quán)值存放,但是對(duì)于大型網(wǎng)絡(luò),權(quán)值存儲(chǔ)器不應(yīng)該被放置在FPGA中,因此當(dāng)ANN得到有效實(shí)現(xiàn)的時(shí)候,就要認(rèn)真考慮存儲(chǔ)器的存取問題。其次,神經(jīng)網(wǎng)絡(luò)應(yīng)用有一個(gè)顯著的缺陷:在神經(jīng)計(jì)算方面,不同運(yùn)算的計(jì)算時(shí)間和實(shí)現(xiàn)面積并不平衡。在許多標(biāo)準(zhǔn)神經(jīng)模式中,計(jì)算時(shí)間的大部分用在需要乘法器和加法器的矩陣向量運(yùn)算中,而很多耗費(fèi)面積的運(yùn)算如激活函數(shù),又必須被實(shí)現(xiàn)(它們占用很少的運(yùn)算時(shí)間),而FPGA的面積是嚴(yán)格一定的,因此可將面積的相當(dāng)一部分用來實(shí)現(xiàn)這些運(yùn)算,以至于FPGA僅剩的一小部分卻實(shí)現(xiàn)幾乎所有的運(yùn)算時(shí)間。
(5)資源和計(jì)算速度的平衡(Trade-off)
對(duì)于FPGA,科學(xué)的設(shè)計(jì)目標(biāo)應(yīng)該是在滿足設(shè)計(jì)時(shí)序要求(包括對(duì)設(shè)計(jì)最高頻率的要求)的前提下,占用最少的芯片資源,或者在所規(guī)定的占用資源下,使設(shè)計(jì)的時(shí)序余量更大,頻率更高。這兩種目標(biāo)充分體現(xiàn)了資源和速度的平衡思想。作為矛盾的兩個(gè)組成部分,資源和速度的地位是不一樣的。相比之下,滿足時(shí)序、工作頻率的要求更重要一些,當(dāng)兩者沖突時(shí),采用速度優(yōu)先的準(zhǔn)則。
例如,ANN的FPGA實(shí)現(xiàn)需要各種字長的乘法器,如果可以提出一種新的運(yùn)算法則,從而用FPGA實(shí)現(xiàn)變字長的乘法器,則可以根據(jù)需要調(diào)整字長,從而提高運(yùn)算速度的可能性,其中,基于Booth Encoded opti-mized wallence tree架構(gòu)(見圖2)就可以得到快速高效的乘法器,這種方式實(shí)現(xiàn)的乘法器比現(xiàn)在所用的基于FPGA的乘法器的處理速度快20%)。
(6)亟待解決的問題
FPGA憑借其如同軟件實(shí)現(xiàn)一樣的靈活性,集合了硬件實(shí)現(xiàn)高效和并行性的優(yōu)點(diǎn),好像非常適合神經(jīng)實(shí)現(xiàn)的正常需要,但是,F(xiàn)PGA的二維拓?fù)浣Y(jié)構(gòu)不能處理標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)規(guī)則但復(fù)雜的連線問題,而且FPGA仍然實(shí)現(xiàn)很有限的邏輯門數(shù)目,相反,神經(jīng)計(jì)算則需要相當(dāng)耗費(fèi)資源的模塊(激活函數(shù),乘法器)。這樣對(duì)于FP-GA,可用的CLBs中部分將被用來增加路徑容量(連線),導(dǎo)致計(jì)算資源的丟失。一般的方法只能實(shí)現(xiàn)很小的低精度神經(jīng)網(wǎng)絡(luò),連線問題不能依靠幾個(gè)具有比特序列算法的可重構(gòu)FPGA以及小面積模塊(隨機(jī)比特流或者頻率)解決。
2 基于FPGA的ANN實(shí)現(xiàn)方法
經(jīng)典實(shí)現(xiàn)方法有:
(1)可重構(gòu)的RNN結(jié)構(gòu)(Reconfigurable NeuraINetwork)
可重構(gòu)計(jì)算是一種增加處理密度(每單元硅片面積的性能)的有效方法,且處理密度遠(yuǎn)大于用于通用計(jì)算方法,F(xiàn)PGA作為可重構(gòu)計(jì)算的平臺(tái),可以提供如同軟件一樣的設(shè)計(jì)靈活性。該方法基于可擴(kuò)展的脈動(dòng)陣列結(jié)構(gòu)、可重用的IP(Intellectual Properties)核及FPGA器件,即將要實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)算法分為幾種基本運(yùn)算,這些基本運(yùn)算由可重構(gòu)單元(Reconfigurable Cell,RC)完成,RC間以規(guī)則的方式相互連接,當(dāng)神經(jīng)網(wǎng)絡(luò)變化時(shí),只要增減Rc的數(shù)量或替換不同功能的RC就可重構(gòu)成新的神經(jīng)網(wǎng)絡(luò)硬件;文獻(xiàn)[8]中同時(shí)指出,考慮到硬件實(shí)現(xiàn)要以最少的硬件資源滿足特定應(yīng)用的性能需求,一般用神經(jīng)元并行作為可重構(gòu)部件的基本模式,即神經(jīng)網(wǎng)絡(luò)的各層計(jì)算可復(fù)用相同的陣列結(jié)構(gòu)。
(2)RENCO結(jié)構(gòu)
可重構(gòu)網(wǎng)絡(luò)計(jì)算機(jī)(Reconfigurable Network Computer,RENCO)是一種用于邏輯設(shè)計(jì)原型或可重構(gòu)系統(tǒng)的平臺(tái),所設(shè)計(jì)的可重構(gòu)系統(tǒng)對(duì)于工作在比特級(jí)的算法實(shí)現(xiàn)特別有效,比如模式匹配。RENCO的基本架構(gòu)包括處理器、可重構(gòu)部分(多為FPGA)以及存儲(chǔ)器和總線部分,Altera公司提供的最新的RENCO在可重構(gòu)部分包括近100萬邏輯門,足夠?qū)崿F(xiàn)高復(fù)雜度的處理器。具體參見文獻(xiàn)[9]。盡管如此,得到的可重構(gòu)系統(tǒng)并非對(duì)所有的硬件實(shí)現(xiàn)都是優(yōu)化的方法,比如不適合于浮點(diǎn)運(yùn)算。
評(píng)論