高琛,張帆
基于FPGA的遞歸神經(jīng)網(wǎng)絡(luò)加速器的研究進(jìn)展
高琛,張帆
(國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,河南 鄭州 450002)
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)近些年來被越來越多地應(yīng)用在機(jī)器學(xué)習(xí)領(lǐng)域,尤其是在處理序列學(xué)習(xí)任務(wù)中,相比CNN等神經(jīng)網(wǎng)絡(luò)性能更為優(yōu)異。但是RNN及其變體,如LSTM、GRU等全連接網(wǎng)絡(luò)的計(jì)算及存儲復(fù)雜性較高,導(dǎo)致其推理計(jì)算慢,很難被應(yīng)用在產(chǎn)品中。一方面,傳統(tǒng)的計(jì)算平臺CPU不適合處理RNN的大規(guī)模矩陣運(yùn)算;另一方面,硬件加速平臺GPU的共享內(nèi)存和全局內(nèi)存使基于GPU的RNN加速器的功耗比較高。FPGA由于其并行計(jì)算及低功耗的特性,近些年來被越來越多地用來做RNN加速器的硬件平臺。對近些年基于FPGA的RNN加速器進(jìn)行了研究,將其中用到的數(shù)據(jù)優(yōu)化算法及硬件架構(gòu)設(shè)計(jì)技術(shù)進(jìn)行了總結(jié)介紹,并進(jìn)一步提出了未來研究的方向。
遞歸神經(jīng)網(wǎng)絡(luò);FGPA;加速器
在當(dāng)今社會,人工智能和機(jī)器學(xué)習(xí)領(lǐng)域的研究已經(jīng)取得了顯著成就?,F(xiàn)有的一些研究表明神經(jīng)網(wǎng)絡(luò)在這些領(lǐng)域相比傳統(tǒng)算法的性能更好。然而,在自然語言處理領(lǐng)域,對機(jī)器來說,理解、學(xué)習(xí)人類語言仍然是一件很困難的事情,這成為一個(gè)比較有挑戰(zhàn)性的問題[1]。研究者提出了很多模型來解決這個(gè)問題,其中比較有代表性的是遞歸神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network)及其變體,這些模型在語音建模[2-3]、機(jī)器翻譯[4]、語音識別[5]、情景分析[6]等任務(wù)中取得了非常好的性能??傮w來說,RNN在語音特征識別及提取任務(wù)中的性能非常好,使其在人工智能領(lǐng)域中應(yīng)用越來越廣泛。
但RNN的計(jì)算及存儲復(fù)雜度比較高,特別是為了取得更好的性能,研究人員往往會將RNN模型設(shè)計(jì)得越來越大、越來越復(fù)雜[7],這導(dǎo)致模型參數(shù)量及計(jì)算復(fù)雜度增加,從而使RNN的訓(xùn)練及推理過程變得很慢。
RNN模型的訓(xùn)練及推理運(yùn)算中包含大量復(fù)雜的矩陣運(yùn)算,這導(dǎo)致在CPU上對RNN進(jìn)行計(jì)算十分不高效,因此選擇一個(gè)合適的硬件加速平臺對RNN模型的運(yùn)算進(jìn)行加速顯得非常重要。一個(gè)典型的CPU每秒可以執(zhí)行10~100 G次浮點(diǎn)操作,電源效率通常低于1 GOP/J,這使CPU很難滿足云計(jì)算應(yīng)用的高性能需求或者移動(dòng)終端應(yīng)用的低能耗需求[8]。與CPU不同,GPU由于其強(qiáng)大的并行處理能力,在大規(guī)模計(jì)算領(lǐng)域扮演著越來越重要的角色[9]。GPU高效的并行計(jì)算能力可以讓RNN模型實(shí)現(xiàn)高性能的訓(xùn)練及推理計(jì)算,另外,深度學(xué)習(xí)框架Caffe和Tensorflow[10]也為GPU提供了很多快速簡易的接口。但由于GPU在計(jì)算時(shí)訪問共享內(nèi)存和全局內(nèi)存,并且有較低的指令驅(qū)動(dòng)執(zhí)行模式,因此基于GPU的設(shè)計(jì)往往需要消耗大量的能源來獲取顯著計(jì)算速度的提升[11]。專用集成電路ASIC能獲得更高的功效,但是開發(fā)周期比較長,成本比較高[8]。
近些年來,F(xiàn)PGA越來越多地被應(yīng)用在高性能人工智能計(jì)算領(lǐng)域。由于其靈活的可配置性、低能耗及并行計(jì)算等特性,基于FPGA的硬件加速計(jì)算近年來成為一個(gè)熱點(diǎn),因此,通過FPGA對RNN模型實(shí)現(xiàn)高性能計(jì)算是一個(gè)可行的方案。相比于GPU,基于FPGA的RNN加速器往往能獲得更高的能源效率[12],所以FPGA更適合用作RNN加速的平臺。
由于RNN模型的參數(shù)量比較大,一般的FPGA芯片不足以完全存儲其權(quán)重參數(shù);另外,由于RNN模型的復(fù)雜性,將RNN模型映射到FPGA上,設(shè)計(jì)合理的加速器架構(gòu)進(jìn)行加速計(jì)算比較困難。目前,比較流行的神經(jīng)網(wǎng)絡(luò)架構(gòu)Caffe和Tensorflow也沒有支持FPGA的API,這使基于FPGA的RNN加速器的設(shè)計(jì)變得很不靈活通用。
現(xiàn)有很多研究旨在解決上述提到的問題。這些研究提出了各種各樣高能效、高速靈活的RNN加速器計(jì)算及存儲架構(gòu),對RNN加速器設(shè)計(jì)的研究推動(dòng)很大。為了將RNN模型映射到FPGA上,他們運(yùn)用數(shù)據(jù)優(yōu)化方法在軟件層面對RNN的數(shù)據(jù)進(jìn)行壓縮優(yōu)化,結(jié)合FPGA硬件層面的并行計(jì)算架構(gòu)、流水線設(shè)計(jì)、數(shù)據(jù)存儲模式等架構(gòu),進(jìn)一步提高內(nèi)存訪問效率及吞吐量,降低了計(jì)算及內(nèi)存訪問能耗,實(shí)現(xiàn)了對RNN模型高效的加速計(jì)算。
本文對現(xiàn)有研究中提到的基于FPGA的RNN加速器設(shè)計(jì)技術(shù)進(jìn)行了總結(jié)歸納,包括所用到的軟件層面的數(shù)據(jù)優(yōu)化方法及硬件層面的架構(gòu)設(shè)計(jì),將其進(jìn)行細(xì)致的比較,對其優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)評估。為了進(jìn)一步提高RNN加速器的計(jì)算精度,提高計(jì)算速度以及通用性,本文提出未來可基于FPGA的深度架構(gòu)設(shè)計(jì)、層內(nèi)層間流水線結(jié)合設(shè)計(jì)及可重構(gòu)RNN加速器設(shè)計(jì)等幾個(gè)方面進(jìn)行研究。
自然語言處理正在成為一個(gè)跨學(xué)科的研究熱點(diǎn),作為自然語言處理的核心,語言建模是一個(gè)重要的部分。這其中比較有代表性的模型是RNN,尤其是在處理語音識別、機(jī)器翻譯、詞性標(biāo)注解析等任務(wù)中,RNN的性能更為優(yōu)異。為了取得更好的性能,研究人員提出了各種各樣優(yōu)異的RNN變體,這導(dǎo)致模型參數(shù)量及計(jì)算復(fù)雜度增加。因此,越來越多的研究者選擇在FPGA等硬件平臺上設(shè)計(jì)高效的計(jì)算架構(gòu),對這些RNN模型進(jìn)行加速運(yùn)算。
在自然語言處理領(lǐng)域應(yīng)用比較廣泛的一個(gè)典型模型是RNN[13]。與卷積神經(jīng)網(wǎng)絡(luò)(CNN)不同,RNN是一種通過隱層節(jié)點(diǎn)間的連接,來捕捉序列化數(shù)據(jù)中信息的全連接神經(jīng)網(wǎng)絡(luò),可以對序列化的數(shù)據(jù)進(jìn)行學(xué)習(xí),并成功應(yīng)用在語音識別、自然語言處理、情景分析等領(lǐng)域。RNN可以保存上下文的狀態(tài),甚至能夠?qū)W習(xí)任意長度的上下文并存儲、學(xué)習(xí)、表達(dá)相關(guān)信息。
圖1 節(jié)點(diǎn)資源分配情況
近年來,RNN已被廣泛用于自然語言處理任務(wù)中,并且已經(jīng)顯示出很強(qiáng)的學(xué)習(xí)和預(yù)測序列數(shù)據(jù)的能力。圖1展現(xiàn)了標(biāo)準(zhǔn)RNN的架構(gòu),RNN的節(jié)點(diǎn)循環(huán)連接,其當(dāng)前隱藏狀態(tài)是下一時(shí)刻的輸入。狀態(tài)的更新用式(1)描述。
LSTM(long short-term memory)算法最早由 Hochreiter S等[14]于1997年提出。LSTM最開始主要是為了解決RNN梯度消失及梯度爆炸問題而提出的,這個(gè)模型有效解決了傳統(tǒng)RNN不能建立長時(shí)間依賴的問題。LSTM算法擴(kuò)展了一個(gè)基本的RNN的隱層單元,增加了3個(gè)乘法單元(稱為輸入、輸出和忘記門)用來控制信息的流入、流出及保存。LSTM模型結(jié)構(gòu)如圖2所示。
圖2 LSTM模型
圖3 GRU模型
研究者近年來一直對RNN模型及其變體進(jìn)行優(yōu)化以求取得更高性能的模型。Wojciech等[16]在LSTM RNN的訓(xùn)練過程中,通過對非循環(huán)連接部分使用dropout算法隨機(jī)地刪除一般的神經(jīng)元連接,顯著地減少了LSTM對各種任務(wù)的過擬合。
表1 節(jié)點(diǎn)信息
另外,在實(shí)際應(yīng)用中,Cho等[15]用典型數(shù)據(jù)集對GRU、LSTM和RNN模型的實(shí)際性能進(jìn)行了評估。他們發(fā)現(xiàn)LSTM及GRU模型在所評估的實(shí)驗(yàn)數(shù)據(jù)集上性能優(yōu)于傳統(tǒng)的RNN模型。在polyphonic和Ubisoft A數(shù)據(jù)集中GRU的性能最好;在Ubisoft B數(shù)據(jù)集中LSTM模型性能更為優(yōu)異。LSTM及RNN在不同的數(shù)據(jù)集中各有優(yōu)勢,在實(shí)際應(yīng)用中需要根據(jù)具體的數(shù)據(jù)集來選擇更為合適的RNN模型。
隨著RNN模型設(shè)計(jì)得越來越復(fù)雜,其訓(xùn)練及推理中的矩陣運(yùn)算量越來越大,這導(dǎo)致RNN在CPU上的運(yùn)算變得不高效。FPGA由于其靈活的可配置性、低能耗及并行計(jì)算等特性,很適合用來對RNN復(fù)雜的矩陣運(yùn)算進(jìn)行加速。
近年來,研究人員基于FPGA開發(fā)了很多針對RNN的優(yōu)化算法及架構(gòu),設(shè)計(jì)了很多高性能的RNN加速器。文獻(xiàn)[17-19]使用HLS將RNN映射到FPGA上來簡化設(shè)計(jì);Li等[20]提出的Independently RNN算法將隱層節(jié)點(diǎn)變得獨(dú)立,IndRNN可以構(gòu)造成深層神經(jīng)網(wǎng)絡(luò);文獻(xiàn)[21-22]設(shè)計(jì)了簡單的可配置的RNN陣列及精度計(jì)算機(jī)制,提高了RNN加速器的通用性。但這些研究涉及的范圍比較窄,在實(shí)際研究中并不多,本節(jié)主要介紹典型的基于FPGA的RNN硬件加速架構(gòu)。
對于一個(gè)典型的基于FPGA的RNN加速器,其系統(tǒng)架構(gòu)如圖4所示。RNN加速器主要包括CPU控制部分及FPGA邏輯運(yùn)算部分。FPGA芯片通常通過一個(gè)PCIe/AXI接口與CPU部分相連。FPGA邏輯運(yùn)算部分主要包含RNN加速器模塊、數(shù)據(jù)控制模塊及存儲模塊。具體地,數(shù)據(jù)控制模塊主要負(fù)責(zé)數(shù)據(jù)的讀取與流出;RNN加速器模塊包括陣列計(jì)算、激活函數(shù)查找表等單元,主要負(fù)責(zé)對RNN模型進(jìn)行加速運(yùn)算,包括矩陣向量乘法計(jì)算、激活函數(shù)計(jì)算、向量乘法計(jì)算等。存儲模塊主要用來臨時(shí)存儲計(jì)算的中間結(jié)果及計(jì)算所需的網(wǎng)絡(luò)權(quán)重參數(shù)、輸入向量等。
圖4 典型的RNN加速器架構(gòu)
通過分析目標(biāo)算法的結(jié)構(gòu),將RNN算法中的矩陣向量乘法運(yùn)算映射至FPGA上進(jìn)行并行計(jì)算,進(jìn)一步結(jié)合流水線設(shè)計(jì),可提高RNN加速器的吞吐量,提高RNN的計(jì)算速度;通過對數(shù)據(jù)進(jìn)行預(yù)處理并設(shè)計(jì)高效數(shù)據(jù)存儲模式,可降低RNN的能耗。FPGA開發(fā)人員可以在硬件上實(shí)現(xiàn)邏輯運(yùn)算的部分,在CPU上實(shí)現(xiàn)對整個(gè)加速器必要的配置與控制,以獲得高效的運(yùn)算。
在FPGA上對RNN進(jìn)行加速運(yùn)算可取得更高的計(jì)算速度和更低的能耗。通過對現(xiàn)有RNN加速器進(jìn)行歸納總結(jié),本文發(fā)現(xiàn)其中用到的硬件加速設(shè)計(jì)技術(shù)包括數(shù)據(jù)量化、數(shù)據(jù)壓縮、陣列計(jì)算、流水線設(shè)計(jì)等,也是針對RNN中的計(jì)算速度及能耗兩方面進(jìn)行優(yōu)化。具體體現(xiàn)在硬件上,概況來說,衡量這些RNN加速器性能的指標(biāo)有吞吐量、功率效率兩方面。
由式(2)可以看出,處理單元的數(shù)量和時(shí)鐘頻率都可以影響RNN加速器的吞吐量。對于一個(gè)確定的FPGA芯片來說,片上可利用的邏輯計(jì)算資源有限,因此,對片上資源的利用率越高,意味著可綜合出的參與計(jì)算的處理單元的個(gè)數(shù)越多,能達(dá)到的峰值計(jì)算性能就越高。另外,通過提高RNN加速器的時(shí)鐘頻率來增加計(jì)算單元每秒可執(zhí)行計(jì)算數(shù)的方式,需要綜合考慮系統(tǒng)及硬件平臺后設(shè)定。在實(shí)際設(shè)計(jì)中,為了提高吞吐量,大多數(shù)設(shè)計(jì)的加速器會采用流水線架構(gòu)[3,24,25],這樣的低延遲RNN加速器可應(yīng)用在更多的實(shí)時(shí)處理設(shè)備中。
能源效率是衡量RNN加速器單位能耗成本內(nèi)實(shí)際性能的一個(gè)指標(biāo)。能源效率的計(jì)算公式如下所示。
高效的計(jì)算架構(gòu)及存儲訪問系統(tǒng)往往能夠提高RNN加速器的計(jì)算性能。為了提高系統(tǒng)的吞吐量,降低系統(tǒng)的計(jì)算及內(nèi)存訪問能耗,加速器的架構(gòu)設(shè)計(jì)顯得十分重要。本節(jié)主要在硬件層面上介紹基于FPGA的RNN硬件加速器的設(shè)計(jì)技術(shù),并將這些技術(shù)分為3個(gè)方面:陣列處理單元設(shè)計(jì)、流水線設(shè)計(jì)及存儲系統(tǒng)設(shè)計(jì)。
陣列處理單元設(shè)計(jì)可以直接影響到加速器的吞吐量,F(xiàn)PGA片上資源的利用率及處理單元的時(shí)鐘頻率都是影響陣列處理單元設(shè)計(jì)的直接因素。由于FPGA邏輯及存儲資源有限,所以設(shè)計(jì)的處理單元越多,對加速器的性能提升越大。在資源有限的情況下,一個(gè)很好的方法就是降低處理單元的大小。第3節(jié)提到的低位寬數(shù)據(jù)量化技術(shù)就是一種能直接減小處理單元大小、降低處理單元對片上資源消耗的方法。合理地把這些處理單元設(shè)計(jì)成陣列進(jìn)行高效的并行運(yùn)算是提高RNN加速器數(shù)據(jù)吞吐量的關(guān)鍵。
Guan等[24]提出了一個(gè)基于FPGA的LSTM RNN加速器。他們將32 bit浮點(diǎn)計(jì)算處理單元設(shè)計(jì)成陣列,并采用線性函數(shù)逼近法近似激活函數(shù)sigmoid,優(yōu)化了計(jì)算性能及數(shù)據(jù)通信的需求,與CPU相比獲得了20.18倍的計(jì)算速度提升。文獻(xiàn)[25-27]采用16 bit定點(diǎn)處理單元陣列的方式來加速LSTM RNN的推理運(yùn)算。實(shí)驗(yàn)表明,16 bit定點(diǎn)運(yùn)算的處理單元并沒有降低模型的性能,并且能取得更高的計(jì)算速度和更低的能源消耗。
Lee等[28]將訓(xùn)練好的LSTM RNN模型的權(quán)重參數(shù)使用6 bit定點(diǎn)量化,進(jìn)一步降低了陣列處理單元的大小,實(shí)現(xiàn)了低延遲和高吞吐量的矩陣向量運(yùn)算。他們以僅9.24 W的功耗將計(jì)算速度提升4.12倍,與高端的GPU設(shè)計(jì)相比,功率效率高出10倍左右。
在RNN中,全連接層的計(jì)算和存儲需求在整個(gè)神經(jīng)網(wǎng)絡(luò)中占據(jù)了絕大部分,所以有必要將全連接層的計(jì)算進(jìn)行仔細(xì)拆分,在FPGA上展開并設(shè)計(jì)成流水線以提高計(jì)算效率。
由于FPGA的片上BRAM與大型神經(jīng)網(wǎng)絡(luò)模型的參數(shù)量相比太小,因此,常見的設(shè)計(jì)往往使用DDR來存儲RNN的權(quán)重參數(shù),但這樣會造成頻繁的內(nèi)存數(shù)據(jù)訪問,給RNN加速器帶來額外的內(nèi)存訪問能耗,降低了加速器的能源效率。
使用第3節(jié)所介紹的模型壓縮算法將模型的參數(shù)量進(jìn)行大規(guī)模壓縮后,可以將模型的權(quán)重參數(shù)存儲到片上存儲器,簡化RNN加速器內(nèi)存訪問系統(tǒng)的設(shè)計(jì),并降低額外的內(nèi)存訪問能耗;在計(jì)算時(shí)僅僅需要從DDR中讀出輸入向量送入RNN加速器中與片上存儲的權(quán)重參數(shù)進(jìn)行乘累加運(yùn)算,提高了加速器的計(jì)算速度,降低了計(jì)算延遲。
文獻(xiàn)[25-28]所設(shè)計(jì)的RNN加速器充分利用了數(shù)據(jù)壓縮算法,將RNN權(quán)重參數(shù)量化壓縮后存儲到FPGA片上的存儲資源中。實(shí)驗(yàn)表明,他們所設(shè)計(jì)的加速器相比在DDR中存儲權(quán)重參數(shù)的RNN加速器,具有更高的能源效率。在對能耗比較敏感的移動(dòng)端或者嵌入式應(yīng)用中,可結(jié)合相應(yīng)的數(shù)據(jù)壓縮算法將權(quán)值存儲在片上存儲器中。
在FPGA上設(shè)計(jì)高效的計(jì)算架構(gòu)及存儲訪問系統(tǒng)能夠提高RNN加速器的計(jì)算性能,這些設(shè)計(jì)往往依賴于RNN加速器所需的數(shù)據(jù)格式及數(shù)據(jù)量。近年來,針對RNN數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)量的優(yōu)化算法越來越多,這些研究基于以上兩點(diǎn)優(yōu)化RNN加速器的計(jì)算模式、降低RNN模型的參數(shù)數(shù)量,實(shí)現(xiàn)了更加高效的RNN加速器系統(tǒng)。
已有研究[30-32]將RNN模型映射到FPGA上,并通過并行運(yùn)算取得了不錯(cuò)的效果,但沒有任何對模型的優(yōu)化方法。一方面,針對RNN模型的優(yōu)化算法往往能夠設(shè)計(jì)出高效且更快速的神經(jīng)網(wǎng)絡(luò)加速器;另一方面,大型、復(fù)雜的RNN模型通常能夠取得更高的性能,這意味著研究者要根據(jù)實(shí)際情況平衡模型性能與硬件的計(jì)算速度及能耗。
現(xiàn)有一些基于RNN數(shù)據(jù)優(yōu)化算法的研究可以很好地平衡模型性能與硬件性能。針對數(shù)據(jù)結(jié)構(gòu),使用低位寬定點(diǎn)數(shù)據(jù)量化等技術(shù)對激活函數(shù)參數(shù)或權(quán)重參數(shù)進(jìn)行量化,簡化RNN模型的計(jì)算以提高計(jì)算速度、降低計(jì)算能耗;針對RNN模型的數(shù)據(jù)量,對RNN進(jìn)行裁剪,應(yīng)用稀疏矩陣乘法、矩陣參數(shù)循環(huán)分塊、矩陣分解等方法,旨在降低RNN加速器的計(jì)算及存儲的復(fù)雜度,實(shí)現(xiàn)高效的計(jì)算、降低內(nèi)存訪問能耗。接下來,本節(jié)將從數(shù)據(jù)格式優(yōu)化及數(shù)據(jù)量壓縮算法2個(gè)層間,詳細(xì)介紹這些現(xiàn)有RNN加速器的數(shù)據(jù)優(yōu)化算法。
RNN模型的參數(shù)量一般比較大,導(dǎo)致在對RNN模型進(jìn)行推理計(jì)算時(shí)耗時(shí)比較多;另外,RNN模型的激活函數(shù)及權(quán)重參數(shù)一般是浮點(diǎn)數(shù),但文獻(xiàn)[28]研究表明在RNN的推理運(yùn)算中低位寬的定點(diǎn)乘法比浮點(diǎn)乘法更高效,且選擇適當(dāng)?shù)牡臀粚拝?shù)幾乎不會對RNN的性能造成損失。
近些年來,有不少研究針對RNN的數(shù)據(jù)結(jié)構(gòu)進(jìn)行優(yōu)化。用FPGA對RNN進(jìn)行加速運(yùn)算最常用的一種方法就是針對模型數(shù)據(jù)進(jìn)行低位寬量化。低位寬數(shù)據(jù)量化技術(shù)能夠降低RNN硬件加速器的內(nèi)存訪問需求及存儲需求,減少內(nèi)存訪問、硬件運(yùn)算的能耗和片上資源的消耗。數(shù)據(jù)量化技術(shù)總體來說分為線性數(shù)據(jù)量化及非線性數(shù)據(jù)量化。
5.1.1 線性數(shù)據(jù)量化
線性數(shù)據(jù)量化一個(gè)很直接的方法就是將激活函數(shù)及全連接層的權(quán)重參數(shù)量化成低位寬定點(diǎn)數(shù)。線性數(shù)據(jù)量化技術(shù)比較簡便,相應(yīng)地也會造成數(shù)據(jù)精度損失并增加計(jì)算結(jié)果的錯(cuò)誤率,且線性量化技術(shù)在數(shù)據(jù)位寬較低時(shí)性能損失較大。
Lee等[28]使用6 bit定點(diǎn)量化訓(xùn)練好的LSTM RNN模型的權(quán)重參數(shù),并存儲在FPGA片上的存儲資源中以減少內(nèi)存訪問能耗。與浮點(diǎn)參數(shù)運(yùn)算相比,該方法僅僅以增加1.5%單詞錯(cuò)誤率的微小成本,將存儲空間需求壓縮了75%;與高端的GPU系統(tǒng)相比,功率效率提高了10倍左右。Joas等[33]用18 bit的定點(diǎn)數(shù)將LSTM RNN模型權(quán)重參數(shù)進(jìn)行了量化,結(jié)合大量的并行運(yùn)算設(shè)計(jì),他們所設(shè)計(jì)的LSTM RNN加速器的計(jì)算速度相比CPU提升了251倍,與Chang等[26]設(shè)計(jì)的RNN加速器相比提升了14倍。
5.1.2 非線性數(shù)據(jù)量化
非線性數(shù)據(jù)量化是將權(quán)重參數(shù)通過函數(shù)映射成相應(yīng)的二進(jìn)制碼,再通過查找表的方式用參數(shù)映射后的二進(jìn)制碼進(jìn)行計(jì)算。非線性量化的目的是將權(quán)重等參數(shù)進(jìn)行壓縮,但可以將RNN模型的數(shù)據(jù)壓縮到更低的位寬,相應(yīng)的非線性量化技術(shù)應(yīng)用通用性較差,需根據(jù)參數(shù)數(shù)據(jù)情況而定。
Skin等[34]研究分析了LSTM模型參數(shù),對參數(shù)量化不敏感的層使用2 bit,對參數(shù)量化敏感的層使用3~5 bit定點(diǎn)數(shù)據(jù)量化后進(jìn)行再訓(xùn)練,在模型性能不變的前提下將參數(shù)的數(shù)量壓縮了90%,同時(shí)存儲空間的需求僅僅為浮點(diǎn)數(shù)據(jù)模型的16.75%。
為了取得更高的模型性能,研究者往往把模型設(shè)計(jì)得特別大,造成對硬件設(shè)備要求提高。另外,大規(guī)模RNN的訓(xùn)練非常不高效,并且消耗大量的存儲資源,因此近些年來針對RNN模型參數(shù)量的數(shù)據(jù)壓縮算法的應(yīng)用越來越多,包括網(wǎng)絡(luò)剪枝算法、稀疏矩陣乘法、Delta RNN算法、低秩矩陣近似算法、循環(huán)分塊矩陣算法。這些算法可以降低RNN的參數(shù)量,從而降低加速器的計(jì)算及存儲需求,使RNN加速器更加高效的運(yùn)作。
5.2.1 網(wǎng)絡(luò)剪枝算法
網(wǎng)絡(luò)剪枝算法就是很直接地將參數(shù)矩陣中的冗余參數(shù)置零后再將RNN剪枝。對已訓(xùn)練的RNN參數(shù)進(jìn)行觀察可以知道,RNN權(quán)重參數(shù)中往往包含很多冗余的小參數(shù)或者零元素,這些參數(shù)對最終的計(jì)算結(jié)果影響不大。因此可以對訓(xùn)練數(shù)據(jù)分析,將這些冗余參數(shù)去除,提高模型的計(jì)算速度。
Han等[35]將RNN進(jìn)行剪枝,減少了神經(jīng)網(wǎng)絡(luò)存儲及計(jì)算需求。整個(gè)工作分3步進(jìn)行:第一步訓(xùn)練LSTM RNN并尋找冗余的連接;第二步將冗余網(wǎng)絡(luò)連接剪枝;第三步將剪枝后的網(wǎng)絡(luò)進(jìn)行再訓(xùn)練對權(quán)重進(jìn)行微調(diào)。壓縮后的LSTM RNN模型參數(shù)僅為原始LSTM的7.69%~11.1%。
圖5 網(wǎng)絡(luò)剪枝前
圖6 網(wǎng)絡(luò)剪枝后
Han等[36]提出一種負(fù)載均衡感知的剪枝方法,通過設(shè)置一個(gè)冗余門限將權(quán)值小于門限的冗余網(wǎng)絡(luò)連接去除,將LSTM RNN模型的大小壓縮了95%,幾乎沒有影響模型的預(yù)測準(zhǔn)確率。網(wǎng)絡(luò)剪枝方法中冗余門限的設(shè)置需要非常慎重,否則會造成模型性能的損失。
5.2.2 稀疏矩陣乘法
對大多數(shù)高性能的RNN模型計(jì)算而言,使用稀疏矩陣乘法來替代稠密矩陣乘法運(yùn)算是一個(gè)很常用的優(yōu)化算法。
Ali等[37]使用CCBV緊湊型列向量稀疏索引方法,使用一維數(shù)組將稀疏矩陣的所有非零數(shù)據(jù)映射成列參數(shù)形式,使參數(shù)量降低為原始模型的18.87%~33.33%,并減少了40%~66.7%的計(jì)算延遲,實(shí)現(xiàn)了低延遲的高效流水運(yùn)算。
稀疏矩陣乘法可以提高RNN模型的性能,但非零數(shù)據(jù)的存儲使內(nèi)存數(shù)據(jù)訪問不規(guī)則。Jeremy等[38]為了解決這個(gè)問題,提出了CISR數(shù)據(jù)編碼算法。他們將每個(gè)時(shí)鐘周期從內(nèi)存接收到的總寬度的數(shù)據(jù)劃分成不同的槽,每個(gè)槽中的數(shù)據(jù)直接送到相應(yīng)的數(shù)據(jù)通道中進(jìn)行運(yùn)算。這種直連接的方式降低了稀疏矩陣乘法硬件實(shí)現(xiàn)的復(fù)雜度。
5.2.3 Delta RNN算法
如式(5)和式(6)所示,與稀疏矩陣向量乘法及網(wǎng)絡(luò)剪枝不同,Delta算法不再關(guān)注參數(shù)矩陣的冗余,轉(zhuǎn)而關(guān)注輸入向量的冗余。
圖7 Delta RNN算法流程
5.2.4 低秩矩陣近似算法
Kingsbury等[41]將低秩矩陣近似算法應(yīng)用到DBN底層網(wǎng)絡(luò)中,將DBN網(wǎng)絡(luò)的權(quán)重進(jìn)行壓縮;Xue等[42]在DNN中使用低秩矩陣近似算法對權(quán)重矩陣進(jìn)行重新構(gòu)造,很大限度上壓縮了DNN模型的大小且?guī)缀鯖]有造成模型性能的損失;Qiu等[43]對CNN全連接層的權(quán)重參數(shù)使用低秩分解近似的方法將參數(shù)壓縮,取得了不錯(cuò)的效果。
低秩矩陣近似算法在RNN硬件加速方面頗有成效。文獻(xiàn)[44-45]使用低秩矩陣近似和參數(shù)共享算法優(yōu)化了RNN及LSTM的權(quán)重參數(shù)。他們分析了循環(huán)架構(gòu)中的冗余,在不影響模型性能的前提下,對RNN權(quán)重矩陣使用低秩矩陣近似算法將權(quán)重矩陣進(jìn)行替代,成功將RNN LSTM模型的參數(shù)量進(jìn)行了壓縮,提高了RNN加速器的性能。
5.2.5 循環(huán)分塊矩陣算法
Li等[46]在RNN模型中使用循環(huán)分塊矩陣算法對RNN模型的參數(shù)進(jìn)行了編碼壓縮,將分塊矩陣的計(jì)算使用FFT和IFFT進(jìn)行優(yōu)化。實(shí)驗(yàn)表明,壓縮后的RNN模型在FPGA上的加速運(yùn)算幾乎沒有造成模型性能的損失,在能源效率方面相比文獻(xiàn)[36]取得了35.7倍的提升。
Wang等[47]使用循環(huán)分塊矩陣算法,并結(jié)合非線性激活函數(shù)和數(shù)據(jù)量化優(yōu)化算法,壓縮了LSTM模型95%的參數(shù)量,降低了內(nèi)存資源的使用。Wang等[29]提出了一個(gè)基于FPGA的C-LSTM框架自動(dòng)優(yōu)化和實(shí)現(xiàn)LSTM RNN的各種變體。C-LSTM通過循環(huán)分塊矩陣算法將LSTM模型的參數(shù)進(jìn)行壓縮,并使用FFT算法對矩陣運(yùn)算進(jìn)行了優(yōu)化,解決了傳統(tǒng)壓縮算法的不規(guī)則計(jì)算及內(nèi)存讀取問題。
計(jì)算架構(gòu)、存儲訪問系統(tǒng)及針對RNN的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)量的優(yōu)化算法,可以提升RNN加速器的計(jì)算速度及能效。盡管這些方法各有不同,但都是針對RNN計(jì)算及能效進(jìn)行的優(yōu)化。為了清晰地對比各方法的優(yōu)劣,本節(jié)按照硬件架構(gòu)設(shè)計(jì)、數(shù)據(jù)格式優(yōu)化、數(shù)據(jù)壓縮優(yōu)化3個(gè)方面對第4節(jié)和第5節(jié)所介紹的方法進(jìn)行總結(jié)評估。
硬件架構(gòu)的設(shè)計(jì)往往依賴于數(shù)據(jù)處理后的數(shù)據(jù)結(jié)構(gòu)形式及數(shù)據(jù)量,并且所針對的RNN模型中的問題有所不同,本文綜合參考文獻(xiàn)中用的硬件優(yōu)化技術(shù),對已有的架構(gòu)設(shè)計(jì)技術(shù)進(jìn)行了總結(jié)評估。
1) 矩陣陣列計(jì)算單元主要針對RNN中的矩陣向量計(jì)算模塊進(jìn)行加速。通過并行計(jì)算矩陣的多行或者多列數(shù)據(jù),以提高RNN加速器的吞吐量。但陣列計(jì)算單元需根據(jù)數(shù)據(jù)格式,設(shè)計(jì)相應(yīng)位寬的浮點(diǎn)或者定點(diǎn)乘法器、加法器。
2) 流水線設(shè)計(jì)主要針對RNN模型的復(fù)雜運(yùn)算進(jìn)行加速。將RNN計(jì)算部分拆分并設(shè)計(jì)成流水計(jì)算,以降低RNN加速器的計(jì)算延遲。
3) 數(shù)據(jù)存儲系統(tǒng)設(shè)計(jì)主要針對RNN的參數(shù),結(jié)合數(shù)據(jù)壓縮算法,降低RNN計(jì)算及內(nèi)存訪問能耗。在實(shí)際應(yīng)用中,可根據(jù)RNN參數(shù)規(guī)模選擇片上存儲模型參數(shù),以進(jìn)一步提高計(jì)算速度。
總體來說,RNN硬件架構(gòu)設(shè)計(jì),如陣列計(jì)算、流水線計(jì)算、存儲系統(tǒng)設(shè)計(jì)技術(shù),可進(jìn)一步降低RNN加速器的計(jì)算延遲及能耗,提高RNN加速器的計(jì)算速度及能效。在實(shí)際應(yīng)用中,可根據(jù)實(shí)際模型數(shù)據(jù)情況選擇合適的硬件架構(gòu)設(shè)計(jì)或合理地搭配使用。
線性量化和非線性量化技術(shù)都可以將RNN的參數(shù)進(jìn)行壓縮,加速處理單元的計(jì)算速度。為了方便對比各方法的優(yōu)劣,本文將參考文獻(xiàn)中用到的數(shù)據(jù)量化技術(shù)及相應(yīng)的加速器性能列在表1中。
從表1中可以簡要看出,非線性量化技術(shù)對RNN模型數(shù)據(jù)的壓縮性能更好,但無法判斷在提升模型性能上哪種數(shù)據(jù)量化方法更好。
表1 節(jié)點(diǎn)信息
盡管非線性量化對模型的壓縮效果更好,但往往受限于特定的參數(shù)數(shù)據(jù)。相對而言,線性量化技術(shù)在神經(jīng)網(wǎng)絡(luò)硬件加速領(lǐng)域更加簡便通用,并可結(jié)合相應(yīng)的數(shù)據(jù)壓縮算法進(jìn)一步優(yōu)化RNN加速器。
針對RNN模型數(shù)據(jù)的壓縮算法種類比較多,但沒有一個(gè)簡要對比來評估這些算法的優(yōu)劣區(qū)別。本文將一些典型的數(shù)據(jù)壓縮算法做了簡要對比,所有的壓縮算法及性能提升來自文獻(xiàn)[35-40, 44, 46-47]。盡管這些壓縮算法針對的數(shù)據(jù)集有所不同,這樣簡單的對比有失偏頗,但圖8仍能展示出不同壓縮算法對模型數(shù)據(jù)的壓縮性能。
圖8 壓縮算法對比
循環(huán)分塊矩陣受限于參數(shù)矩陣的形狀,并不通用;網(wǎng)絡(luò)剪枝方法同樣可以對模型進(jìn)行很好的壓縮,但剪枝后的網(wǎng)絡(luò)往往會造成模型預(yù)測精度上的損失;稀疏矩陣、DeltaRNN算法在壓縮模型數(shù)據(jù)、提高模型的計(jì)算速度及能源效率的同時(shí)會帶來內(nèi)存數(shù)據(jù)的不規(guī)則訪問,給存儲系統(tǒng)的設(shè)計(jì)帶來麻煩;低秩近似矩陣可以避免內(nèi)存數(shù)據(jù)不規(guī)則訪問問題,用2個(gè)低秩矩陣相乘來近似參數(shù)矩陣可以降低模型的參數(shù)量,但秩的選取比較困難。
總體來說,以上這些算法一方面可將RNN進(jìn)行壓縮,減少RNN的數(shù)據(jù)量,降低內(nèi)存數(shù)據(jù)訪問能耗;另一方面可降低計(jì)算次數(shù),從而提高系統(tǒng)的計(jì)算速度,使RNN加速器更加高效地工作。這些數(shù)據(jù)壓縮算法各有優(yōu)勢缺點(diǎn),在實(shí)際應(yīng)用中需要針對不同的數(shù)據(jù)庫及實(shí)驗(yàn)平臺進(jìn)行選擇。
現(xiàn)有研究針對數(shù)據(jù)層面的數(shù)據(jù)量化、數(shù)據(jù)壓縮算法及硬件層面的計(jì)算及存儲架構(gòu)設(shè)計(jì)技術(shù),使RNN的實(shí)際性能在FPGA上得到了顯著提升,但還有幾個(gè)問題亟待解決。
1) 現(xiàn)有RNN加速器的深度一般為1-2層,未來是否可通過構(gòu)建合理的架構(gòu),在FPGA有限的資源上搭建深層RNN以提高模型的計(jì)算精度有待于進(jìn)一步研究。
2) 現(xiàn)有RNN加速器流水線技術(shù)僅應(yīng)用在隱層節(jié)點(diǎn)的計(jì)算或者層間計(jì)算中,未來將隱層內(nèi)流水線推理運(yùn)算與層間流水線設(shè)計(jì)結(jié)合到一塊,模型的性能是否會提升,有待于在FPGA上進(jìn)行進(jìn)一步驗(yàn)證。
3) 現(xiàn)有RNN加速器都是針對不同RNN模型的專用加速器,這導(dǎo)致其應(yīng)用場景十分受限,未來是否可在FPGA上實(shí)現(xiàn)加速器模型的動(dòng)態(tài)可配置,即可以根據(jù)需求及應(yīng)用場景動(dòng)態(tài)配置計(jì)算單元構(gòu)建LSTM、GRU等RNN變體,來自適應(yīng)處理不同的自然語言處理任務(wù)有待于進(jìn)一步研究。
4) 現(xiàn)有RNN加速器優(yōu)化算法發(fā)展比較快、種類比較多,但至今沒有公正客觀的硬件性能對比實(shí)驗(yàn)來評估這些算法的優(yōu)劣。未來是否可在其他設(shè)計(jì)方法相同的前提下,進(jìn)行實(shí)驗(yàn)來評估這些優(yōu)化算法硬件實(shí)現(xiàn)的設(shè)計(jì)復(fù)雜度及對 RNN性能的提升,有待于進(jìn)一步研究。
[1] HAO Y, QUIGLEY S. The implementation of a deep recurrent neural network language model on a Xilinx FPGA[J]. arXiv Preprint arXiv:1710.10296, 2017.
[2] SAK H, SENIOR A, BEAUFAYS F. Long short-term memory based recurrent neural network architectures for large vocabulary speech recognition[J]. arXiv Preprint arXiv:1402.1128, 2014.
[3] MIKOLOV T, KARAFIAT M, BURGET L, et al. Recurrent neural network based language model[C]//Eleventh Annual Conference of the International Speech Communication Association. 2010.
[4] CHO K, VAN -MERRIENBOER B, GULCEHRE C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv Preprint arXiv:1406.1078, 2014.
[5] GRAVES A, MOHAMED A, HINTON G. Speech recognition with deep recurrent neural networks[C]//2013 IEEE International Conference on. Acoustics, speech and signal processing (icassp). 2013: 6645-6649.
[6] BYEONW, BREUEL T M, RAUE F, et al. Scene labeling with LSTM recurrent neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015: 3547-3555.
[7] ZHANG Y, WANG C, GONG L, et al. A power-efficient accelerator based on FPGA for LSTM network[C]//2017 IEEE International Conference on Cluster Computing (CLUSTER). 2017: 629-630.
[8] GUO K, ZENG S, YU J, et al. A survey of FPGA-based neural network accelerator[J]. arXiv preprint arXiv:1712.08934, 2017.
[9] HWANG K, SUNG W. Single stream parallelization of generalized LSTM-like RNNs on a GPU[J]. arXiv Preprint arXiv:1503.02852, 2015.
[10] ABADI M, AGARWAL A, BARHAM P, et al. Tensorflow: large- scale machine learning on heterogeneous distributed systems[J]. arXiv preprint arXiv:1603.04467, 2016.
[11] OUYANG P, YIN S, WEI S. A fast and power efficient architecture to parallelize LSTM based RNN for cognitive intelligence applications[C]//The 54th Annual Design Automation Conference 2017. ACM, 2017: 63.
[12] NURVITADHI E, SIM J, SHEFFIELD D, et al. Accelerating recurrent neural networks in analytics servers: comparison of FPGA, CPU, GPU, and ASIC[C]//2016 26th International Conference on Field Programmable Logic and Applications (FPL).2016: 1-4.
[13] HOPFIELD J J. Neural networks and physical systems with emergent collective computational abilities[J]. Proceedings of the National Academy of Sciences, 1982, 79(8): 2554-2558.
[14] HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780.
[15] CHUNG J, GULCEHRE C, CHO K H, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling[J]. arXiv Preprint arXiv:1412.3555, 2014.
[16] ZAREMBA W, SUTSKEVER I, VINYALS O. Recurrent neural network regularization[J]. arXiv Preprint arXiv:1409.2329, 2014.
[17] RYBALKIN V, PAPPALARDO A, GHAFFAR M M, et al. FINN-L: library extensions and design trade-off analysis for variable precision LSTM networks on FPGAs[J]. arXiv Preprint arXiv:1807. 04093, 2018.
[18] RYBALKIN V, WEHN N, YOUSEFI M R, et al. Hardware architecture of bidirectional long short-term memory neural network for optical character recognition[C]//The Conference on Design, Automation & Test in Europe. European Design and Automation Association. 2017: 1394-1399.
[19] GUAN Y, LIANG H, XU N, et al. FP-DNN: an automated framework for mapping deep neural networks onto FPGAs with RTL-HLS hybrid templates[C]//2017 IEEE 25th Annual International Symposium on Field-programmable Custom Computing Machines (FCCM). 2017: 152-159.
[20] LI S, LI W, COOK C, et al. Independently recurrent neural network (indrnn): building a longer and deeper RNN[C]//IEEE Conference on Computer Vision and Pattern Recognition. 2018: 5457-5466.
[21] HAJDUK Z. Reconfigurable FPGA implementation of neural networks[J]. Neuro Computing, 2018, 308: 227-234.
[22] LIU B, DONG W, XU T, et al. E-ERA: an energy-efficient reconfigurable architecture for RNN using dynamically adaptive approximate computing[J]. IEICE Electronics Express, 2017, 14(15): 20170637-20170637.
[23] 宋翔, 周凡, 陳耀武, 等. 基于FPGA的實(shí)時(shí)雙精度浮點(diǎn)矩陣乘法器設(shè)計(jì)[J]. 浙江大學(xué)學(xué)報(bào)(工學(xué)版), 2008, 42(9):1611-1615. SONG X, ZHOU F, CHEN Y W, et al. Design of real time double precision floating point matrix multiplier based on FPGA [J]. Journal of ZheJiang University,2008,42(9):1611-1615.
[24] GUAN Y, YUAN Z, SUN G, et al. FPGA-based accelerator for long short-term memory recurrent neural networks[C]//IEEE Design Automation Conference (ASP-DAC). 2017: 629-634.
[25] CHANG A X M, CULURCIELLO E. Hardware accelerators for recurrent neural networks on FPGA[C]//2017 IEEE International Symposium on. Circuits and Systems (ISCAS). 2017: 1-4.
[26] CHANG A X M, MARTINI B, CULURCIELLO E. Recurrent neural networks hardware implementation on FPGA[J]. arXiv Preprint arXiv:1511.05552, 2015.
[27] LI S, WU C, LI H, et al. Fpga acceleration of recurrent neural network based language model[C]//2015 IEEE 23rd Annual International Symposium on Field-programmable Custom Computing Machines. IEEE, 2015: 111-118.
[28] LEE M, HWANG K, PARK J, et al. FPGA-based low-power speech recognition with recurrent neural networks[C]//2016 IEEE International Workshop on.Signal Processing Systems (SiPS). 2016: 230-235.
[29] WANG S, LI Z, DING C, et al. C-LSTM: enabling efficient LSTM using structured compression techniques on FPGAs[C]//ACM/ SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, 2018: 11-20.
[30] ZHANG Y, WANG C, GONG L, et al. Implementation and optimization of the accelerator based on FPGA hardware for LSTM network[C]//IEEE International Symposium on Parallel and Distributed Processing with Applications and IEEE International Conference on Ubiquitous Computing and Communications (ISPA/IUCC). 2017: 614-621.
[31] LIAO Y, LI H, WANG Z. Based real-time processing architecture for recurrent neural network[C]//International Conference on Intelligent and Interactive Systems and Applications. 2017: 705-709.
[32] SALCIC Z, BERBER S, SECKER P. FPGA prototyping of RNN decoder for convolutional codes[J]. EURASIP Journal on Advances in Signal Processing, 2006, 2006(1): 015640.
[33] FERREIRA J C, FONSECA J. An FPGA implementation of a long short-term memory neural network[C]//2016 International Conference on ReConFigurable Computing and FPGAs (ReConFig). 2016: 1-8.
[34] SHIN S, HWANG K, SUNG W. Fixed-point performance analysis of recurrent neural networks[J]. arXiv Preprint arXiv:1512.01322, 2015.
[35] HAN S, POOL J, TRAN J, et al. Learning both weights and connections for efficient neural network[C]//Advances in Neural Information Processing Systems. 2015: 1135-1143.
[36] HAN S, KANG J, MAO H, et al. Ese: efficient speech recognition engine with sparse LSTM on FPGA[C]//ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. 2017: 75-84.
[37] ALI S M, SHAOJUN W, NING M, et al. A bandwidth in-sensitive low stall sparse matrix vector multiplication architecture on reconfigurable FPGA platform[C]//13th IEEE International Conference on Electronic Measurement & Instruments (ICEMI). 2017: 171-176.
[38] FOWERS J, OVTCHAROV K, STRAUSS K, et al. A high memory bandwidth FPGA accelerator for sparse matrix-vector multiplication[C]//IEEE 22nd Annual International Symposium on Field- Programmable Custom Computing Machines (FCCM). 2014: 36-43.
[39] NEIL D, LEE J H, DELBRUCK T, et al. Delta networks for optimized recurrent network computation[J]. arXiv Preprint arXiv: 1612.05571, 2016.
[40] GAO C, NEIL D, CEOLINI E, et al. DeltaRNN: a power-efficient recurrent neural network accelerator[C]//ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. 2018: 21-30.
[41] KINGSBURY B E D, SAINATH T N, SINDHWANI V. Low-rank matrix factorization for deep belief network training with high-dimensional output targets[P]. 2016-2-16.
[42] XUE J, LI J, GONG Y. Restructuring of deep neural network acoustic models with singular value decomposition[C]//Interspeech. 2013: 2365-2369.
[43] QIU J, WANG J, YAO S, et al. Going deeper with embedded FPGA platform for convolutional neural network[C]//ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. ACM, 2016: 26-35.
[44] LU Z, SINDHWANI V, SAINATH T N. Learning compact recurrent neural networks[J]. arXiv Preprint arXiv:1604.02594, 2016.
[45] RIZAKIS M, VENIERIS S I, KOURIS A, et al. Approximate FPGA-based LSTM under computation time constraints[J]. arXiv Preprint arXiv:1801.02190, 2018.
[46] LI Z, WANG S, DING C, et al. Efficient recurrent neural networks using structured matrices in FPGA[J]. arXiv Preprint arXiv:1803.07661, 2018.
[47] WANG Z, LIN J, WANG Z. Accelerating recurrent neural networks: a memory-efficient approach[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2017, 25(10): 2763-2775.
Survey of FPGA based recurrent neural network accelerator
GAO Chen, ZHANG Fan
National Digital Switching System Engineering and Technological Research Center, Zhengzhou 450002, China
Recurrent neural network(RNN) has been used wildly used in machine learning field in recent years, especially in dealing with sequential learning tasks compared with other neural network like CNN. However, RNN and its variants, such as LSTM, GRU and other fully connected networks, have high computational and storage complexity, which makes its inference calculation slow and difficult to be applied in products. On the one hand, traditional computing platforms such as CPU are not suitable for large-scale matrix operation of RNN. On the other hand, the shared memory and global memory of hardware acceleration platform GPU make the power consumption of GPU-based RNN accelerator higher. More and more research has been done on the RNN accelerator of the FPGA in recent years because of its parallel computing and low power consumption performance. An overview of the researches on RNN accelerator based on FPGA in recent years is given. The optimization algorithm of software level and the architecture design of hardware level used in these accelerator are summarized and some future research directions are proposed.
recurrent neural network, FPGA, accelerator
s: The National Natural Science Foundation of China (No.61572520); The National Natural Science Foundation for Creative Research Groups of China (No.61521003)
TP391.1
A
10.11959/j.issn.2096?109x.2019034
高?。?994? ),男,河南鄭州人,國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心碩士生,主要研究方向?yàn)镕PGA硬件加速及人工智能芯片。
張帆(1981? ),男,河南鄭州人,博士,國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心副研究員、碩士生導(dǎo)師,主要研究方向?yàn)橹鲃?dòng)防御、芯片設(shè)計(jì)技術(shù)、高性能計(jì)算。
2019?02?20;
2019?04?15
高琛,616414829@qq.com
國家自然科學(xué)基金資助項(xiàng)目(No.61572520);國家自然科學(xué)基金創(chuàng)新研究群體資助項(xiàng)目(No.61521003)
高琛, 張帆. 基于FPGA的遞歸神經(jīng)網(wǎng)絡(luò)加速器的研究進(jìn)展[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2019, 5(4): 1-13.
GAO C, ZHANG F. Survey of FPGA based recurrent neural network accelerator[J]. Chinese Journal of Network and Information Security, 2019, 5(4): 1-13.