武長春 周莆鈞 王俊杰 李國 胡紹剛 于奇 劉洋
(電子科技大學電子科學與工程學院,成都 610054)
脈沖神經網絡(spiking neural network,SNN)作為第三代神經網絡,其計算效率更高、資源開銷更少,且仿生能力更強,展示出了對于語音、圖像處理的優秀潛能.傳統的脈沖神經網絡硬件加速器通常使用加法器模擬神經元對突觸權重的累加.這種設計對于硬件資源消耗較大、神經元/突觸集成度不高、加速效果一般.因此,本工作開展了對擁有更高集成度、更高計算效率的脈沖神經網絡推理加速器的研究.阻變式存儲器(resistive random access memory,RRAM)又稱憶阻器(memristor),作為一種新興的存儲技術,其阻值隨電壓變化而變化,可用于構建crossbar 架構模擬矩陣運算,已經在被廣泛應用于存算一體(processing in memory,PIM)、神經網絡計算等領域.因此,本次工作基于憶阻器陣列,設計了權值存儲矩陣,并結合外圍電路模擬了LIF(leaky integrate and fire)神經元計算過程.之后,基于LIF 神經元模型實現了脈沖神經網絡硬件推理加速器設計.該加速器消耗了0.75k 憶阻器,集成了24k 神經元和192M 突觸.仿真結果顯示,在50 MHz 的工作頻率下,該加速器通過部署三層的全連接脈沖神經網絡對MNIST (mixed national institute of standards and technology)數據集進行推理加速,其最高計算速度可達148.2 frames/s,推理準確率為96.4%.
近年來,隨著深度學習的發展,神經網絡已經得到了廣泛的應用.通過反向傳播、梯度下降等方法訓練出神經網絡可以協助人類完成復雜的工作[1],有時甚至可以做出優于人類的決策[2].傳統的人工神經網絡(ANN)使用了MP(McCulloch and Pitts)神經元模型[3],通過對前一層神經元信號的加權累加和非線性激活輸出來模擬神經元的行為,但是其生物置信度差、計算效率低、硬件資源開銷大.為了構建一種具有更高生物置信度的神經元模型,1952 年,Hodgkin 和Huxley[4]基于神經元細胞膜電位生理現象的非線性微分方程,提出Hodgkin-Huxley(HH)模型.HH 模型可以更加精確地模擬生物神經元膜電壓變化和脈沖發放,但是由于其存在大量的微分、積分操作,硬件實現難度大.相比于HH 模型,LIF(leaky integrate and fire)神經元模型[5]在保留一定程度仿生能力的同時,極大地降低了計算復雜度,使之可以輕易部署到硬件平臺上,具有更強的硬件友好性.基于LIF 神經元模型的SNN[6,7]作為第三代神經網絡,相比于傳統的單層感知器和多層感知器具有更強的生物合理性及處理時空信息時潛在的更優計算效率,同時具有相對較低的硬件設計資源開銷.
近年來,基于SNN 的神經形態計算[8,9]受到了廣泛關注并得到極大發展.神經形態計算的一個重要目標是通過硬件模擬生物神經網絡計算.基于馮·諾依曼架構的硬件計算平臺(CPU,GPU 等)是實現神經形態計算的重要途徑之一.但是馮·諾依曼架構存在存算分離導致的馮·諾依曼瓶頸[10,11],這使得其在實現神經形態計算時效率低下,且擁有極為龐大的功耗、面積開銷.ASIC 設計是實現神經形態計算的另一個重要途徑.相比于通用計算平臺,ASIC 設計具有高的專用性,其計算效率更高[12]、功耗更低、硬件資源開銷更少.相比于基于模擬ASIC 設計的類腦計算芯片[13],基于數字ASIC 設計的類腦計算芯片[14-17]可以實現更高的集成度,因此受到了更加廣泛的關注.為了解決馮·諾伊曼瓶頸對計算效率的影響,數字ASIC 設計中往往使用寄存器作為存算單元,實現存算一體的神經形態芯片設計.但是隨著設計規模的不斷增加,寄存器陣列及其外圍電路的復雜度不斷上升、資源開銷迅速增長.
近年來,基于憶阻器的存算一體技術[18]由于其資源開銷低、計算效率高等特點受到了廣泛的關注.相比于數字集成電路中基于寄存器的存算一體架構,基于憶阻器的crossbar 架構復雜度更低,且集成度更高.同時,基于憶阻器crossbar 架構的類腦計算[19-22]可以并行輸入多組脈沖,通過對輸出電流的統計、求和,從而實現對多路突觸的并行計算.但是,其輸出往往是電流形式,需要外加運算放大器和ADC 才能實現模擬電流到數字電壓的轉換,其外圍電路復雜度高且不易集成.2020 年,國防科技大學憶阻器研究團隊[23]提出了使用N位等值邏輯比較電路實現憶阻器陣列的數字電壓輸出,其在一定程度上降低了外圍電路的復雜程度,但是需要更多的時間步長進行計算.此外,隨著突觸集成度的增加,憶阻器陣列規模需要不斷擴大,資源開銷隨之增加.通過突觸復用的方式可以有效地解決資源開銷隨設計規模增擴大而增加的問題,但是這需要對憶阻器反復擦寫來更新突觸權值.盡管這種設計方法降低了設計資源開銷,但是其犧牲了較多的計算效率.
在本次工作中,致力于解決硬件資源開銷與計算效率之間的矛盾,采用硬件設計語言(Verilog)構建了基于憶阻器的crossbar 陣列作為類腦計算的權值存儲陣列.基于crossbar 陣列設計,提出了基于權值共享技術的緊湊化權值存儲陣列設計,并通過神經元、突觸復用技術減少憶阻器陣列的擦寫頻率,僅使用0.25k 憶阻器單元模擬8k 神經元和64M 突觸計算.此外,通過在憶阻器陣列的輸出端進行串聯電阻分壓實現了憶阻器陣列輸出從電流到電壓的轉換.憶阻器陣列的輸出結果可以直接通過數字電路采集.基于權值存儲陣列的設計,構建了緊湊化計算核心.隨后,基于緊湊化計算核心設計了推理加速器,并使用通用驗證方法學(UVM)搭建驗證平臺.通過GPU 對784×1024×1024×10規模的全連接網絡進行了訓練,并將其部署到加速器平臺對MNIST 數據集進行推理驗證實驗.實驗結果表明,該加速器可以實現148.2 frams/s 的圖像識別速率,同時識別精度達到了96.4%.最后,基于硬件加速設計部署了不同規模的網絡進行推理測試,總結了該設計對于不同規模網絡的加速效果并對結果進行了分析.
LIF 神經元模型是實現脈沖神經網絡的一個重要神經元模型.其相比于傳統的MP 神經元模型,LIF 神經元模型可以通過更少硬件資源來實現,并且可以更好地模擬生物神經元工作原理.(1)式所示為LIF 神經元膜電位與輸入脈沖的關系:

式中,Vmp是神經元膜電位;Oi是輸入脈沖;Wi是與輸入脈沖對應的權重;VL是神經元的泄漏電壓;Vth是膜電位的閾值;Vreset是神經元膜電位的復位值;N是神經元個數.同時將膜電位恢復至,其膜電位升高.在一個“time step”的計算中,神經元完成所有突觸的計算,其膜電位將與閾值電壓作對比.當神經元的膜電位達到閾值電壓(Vth)時,其將發放一個脈沖,同時將膜電位恢復至靜息值(Vreset);否則,神經元將不會發放脈沖,并將當前膜電位與泄漏電壓VL相加并保存,用于下一個“time step”計算.
基于LIF 神經元模型的四層全連SNN 結構如圖1 所示.該網絡由一個輸入層、兩個隱藏層和一個輸出層組成,輸入層與各隱藏層分別由5 個神經元組成,輸出層由兩個神經元組成.相比于傳統的ANN,該SNN 網絡中神經元的輸入和輸出都是脈沖形式的,即0/1 脈沖電平.輸出端統計兩個輸出神經元的脈沖發放數量,經過n個 time step”的脈沖統計后,根據脈沖統計結果進行分類.脈沖發放最多的神經元表示其激活程度最高,即意味著輸入的脈沖序列最有可能對應該神經元所代表的類別.

圖1 基于LIF 模型的全連接脈沖神經網絡結構圖Fig.1.Structure diagram of fully connected spiking neural network based on LIF model.
一個典型的LIF 神經元模型的硬件結構如圖2(a)所示.其主要實現了脈沖輸入、膜電位累加、膜電位比較及脈沖發放.輸入脈沖與對應權值相乘并類形成膜電位,在膜電位計算完畢后,神經元通過將之與閾值電壓相比較判斷是否發放脈沖輸出.其在硬件中的計算原理圖如圖2(b)所示.輸入的脈沖序列由1/0 脈沖串組成.輸入脈沖通過多路選擇器實現與權值的“乘”操作,選擇結果作為突觸的輸入.神經元將初始膜電位(即上一個“time step”結束后保存的膜電位)與所有突觸的輸入相累加,形成總的膜電位,并與閾值電壓相比較,如果膜電位超出閾值電壓,則將膜電位清零并保存用作下一個“time step”的初始膜電位,同時發放一個脈沖輸出;反之,膜電位將加上一個泄露電壓并保存,同時不產生脈沖輸出.
圖3 所示為基于突觸復用技術及權值共享技術的LIF 神經元模型架構.與傳統LIF 神經元架構不同,其只有一個脈沖輸入通道,通過分時復用的技術實現所有突觸的計算.所有突觸共享M個權值,因此,每個突觸的脈沖輸入同時伴隨一組權值索引輸入,通過對應的權值索引來獲取其對應的權值數據.當神經元依次完成對所有突觸的膜電位累加后,神經元會對膜電位進行判斷并控制脈沖發放.

圖3 基于突觸復用技術及權值共享技術的LIF 神經元模型架構Fig.3.The LIF neuron model architecture based on synapse multiplexing technology and weight sharing technology.
憶阻器由上下兩塊電極及其中間起隔離作用的氧化層組成,如圖4(a)所示.當其兩端加正向電壓,氧化層中會出現氧空位,從而組成導電細絲,使得憶阻器導電能力增強,呈現低阻特性,其阻值為RL.當其兩端加反向電壓,導電細絲會斷裂,憶阻器呈現高阻特性,其阻值為RH.本次工作主要利用了憶阻器的這兩種工作狀態,將其作為二值器件使用,其中憶阻器的高阻與低阻的阻值相差千倍以上.
基于憶阻器單元A,設計了crossbar 結構,如圖4(b)所示.crossbar 的行數代表了權值的數量,每一行代表了一個權值,每一個憶阻器代表權值的一位,其高阻態代表邏輯0,低阻態代表邏輯1.列數則代表了權值的位寬.當輸入端有高電平脈沖輸入時,其對應的權值被激活,并以電流形式從輸出端輸出.每一列的輸出端串聯一個分壓電阻RD,從而將輸出電流轉化成電壓數據,其中串聯電阻的阻值因為RD遠大于憶阻器的低阻阻值且遠小于憶阻器的高阻阻值,因此,當RD對應列被激活的憶阻器阻值為RL時,即可認為輸出端是邏輯電平“1”;當RD對應列被激活的憶阻器阻值為RH時,即可認為輸出端是邏輯電平“0”.用這樣的方式即可通過數字電路直接對crossbar 陣列的輸出進行結果采集,而不需要使用運算放大器、數模轉換器等模擬電路,降低了其外圍電路的復雜度,同時提升了計算效率.

圖4 (a) 憶阻器的建立/擦除示意圖;(b) 基于憶阻器的crossbar 陣列Fig.4.(a) The set/reset operation of the memristor;(b) the crossbar structure based on the memristor.
在神經網絡結構中,一個神經元需要與多個突觸相連接,每個突觸都對應有一個權值用來表示連接關系的強弱.隨著網絡規模的增加,突觸的數量急劇增加,憶阻器陣列的資源開銷隨之增加.為了減少權值數量從而降低硬件資源開銷,本工作提出了一種基于憶阻器陣列的權值共享技術.一層網絡中所有突觸的權值被聚類成16 個16-bit 權值Wi,有{Wi∈W0,W1···W15}.突觸通過一個4-bit 的索引Sj對權值進行索引,有{Si∈S0,S1···S15}.
本次工作基于784 × 1024 × 1024 × 10 的全連接網絡開展了對權值共享技術的應用與分析.實驗結果如圖5 所示,相比于聚類前,聚類后的權值占用的存儲開銷從28.4 Mb (784 × 1024 × 16 bit +1024 × 1024 × 16 bit+1024 × 10 × 16 bit)下降至0.75 kb,但網絡推理精度僅下降了約1%.同時,由于聚類后權值精度固定為16-bit,軟件到硬件的映射過程不存在截斷誤差或舍入誤差造成的精度損失,因此,權值聚類后的網絡可以以同樣的精度從軟件平臺映射到硬件平臺.

圖5 權值共享技術對精度的影響Fig.5.The influence of weight sharing technology on accuracy.
權值量化、權值共享技術通過犧牲很少的網絡精度大幅度降低了權值數量與硬件平臺資源開銷,是一種對硬件設計十分友好的技術.通過分析該技術與網絡精度的變化發現,聚類使得突觸的權值向不同方向偏移產生±ΔW,但是宏觀上權值偏移量存在互補,因此網絡精度變化不明顯.從另一方面來講,神經網絡的連接關系相比于權值大小更為關鍵,在一定的網絡架構下輕微調整權值大小不會對網絡精度造成較大影響.
基于憶阻器陣列的計算核架構如圖6 所示,其中包含一個脈沖整形單元、一個多位的D 觸發器、一個由憶阻器構成的權重矩陣、多位行波計數器和一個憶阻器控制器.脈沖整形單元實現了對輸入脈沖進行計數,并依據每個脈沖對應的索引值,將輸入脈沖序列轉換成16 個通道的脈沖數據流,每個通道內的脈沖對應相同的索引.16 個通道中的脈沖數據通過D 觸發器傳遞給權重矩陣進行計算.多位行波計數器統計每個突觸的權重,并進行膜電位累加.憶阻器控制器可以對憶阻器的阻值進行擦寫,同時也可以將每個“time step”計算后的膜電位與閾值電壓進行對比,從而控制輸出脈沖的發放.

圖6 基于憶阻器陣列的計算核架構Fig.6.Computing core architecture based on resistive random access memory matrix.
在一次計算過程中,脈沖整形器首先對輸入脈沖計數,并將其整形并預存到不同通道對應的緩存區間中.每一個通道的脈沖依次送入到權值矩陣中進行權值索引,同時多位行波計數器對權值進行累加.直至所有脈沖輸入完畢,憶阻器控制器會將行波計數器的加結果與上一個“time sep”保存的膜電位相加,并與閾值電壓相對比,控制脈沖發放.如果膜電位超過閾值電壓,憶阻器控制器會發放一個脈沖輸出,同時清零并保存膜電位;如果膜電位小于等于閾值電壓,其會保存當前膜電位用于下一個“time step”的計算,且不會發放脈沖.
基于計算核的設計,構建了具有三個計算核的硬件加速器架構,并設計了完整的應用架構,如圖7所示.軟件層通過泊松編碼將原始MNIST 數據集的幀圖像轉換成脈沖圖像,并送入硬件加速器進行計算.硬件加速器包含三個前文所述計算核心,可以同時進行三層網絡計算.硬件加速器在計算完成后,其脈沖輸出被采集、統計并分析,最終得出計算結果.

圖7 基于硬件加速器的應用架構圖Fig.7.Application architecture diagram based on hardware accelerator.
推理網絡模型到硬件加速的映射關系示意圖如圖8 所示.示例中,輸入的幀圖像為“9”,其通過編碼轉換成N個“time step”的脈沖圖像,并輸入到硬件加速器中.硬件加速器中的三個計算核組成了一個三層的計算網絡,第一層接受輸入的圖像脈沖數據并啟動計算,最后一層將輸出脈沖作為計算結果輸出至片外.軟件層統計硬件加速器的輸出脈沖數,當N個“time step”的脈沖數據計算完畢后,軟件層將輸出脈沖數量做對比,選擇累計發放脈沖最多的神經元所對應的標簽為本次輸入對應的計算結果.圖8 中,輸出層對應標簽為“9”的神經元累計發放的脈沖數量最多,因此,軟件層將本次計算結果統計為“9”,與輸入脈沖圖像標簽相符,是一次正確的計算.

圖8 推理網絡模型到硬件加速的映射示意圖Fig.8.Mapping diagram of network to hardware accelerator.
為驗證加速器的效果,采用Verilog 對模擬憶阻器陣列設計,并實現整體硬件加速器平臺設計,通過SPICE 仿真獲取內部延時;采用UVM 搭建驗證平臺;采用Synopsis 公司的VCS2018 軟件進行編譯、仿真,并對MNIST 數據集中的10000 張圖片進行識別.
在軟件層訓練了784×1024×1024×10 的全連接ANN 網絡,并通過脈沖轉換的方法,將其轉換成SNN 網絡.軟件仿真表明,其在測試集推理精度為96.5%.之后,在軟件層通過3.2 節所述的權值量化的方法,分別將三層網絡的突觸權值量化成16 個16-bit 的權值數據,同時為每個突觸生成一個4-bit 的索引數據.憶阻器控制器通過對憶阻器陣列的掃描,將權值數據寫入到憶阻器陣列中.閾值電壓、泄漏電壓等配置參數被配置到憶阻器控制器中.軟件仿真表明,權值量化后的SNN 網絡在測試集的推理精度為96.4%,相比于量化前,精度下降了1%,但是存儲開銷降低了約99.997%.
為驗證加速器對不同規模網絡的加速效果,在不考慮精度的前提下,本工作分別將4 種不同規模的網絡部署到硬件加速器平臺,對MNIST 數據集進行推理測試.4 種不同的網絡規模分別為784 ×1024 × 1024 × 10,784 × 1024 × 2048 × 10,784 ×1024 × 4096 × 10 和784 × 1024 × 8192 × 10.
測試結果如圖9 所示.實驗結果表明,加速器對于784 × 1024 × 1024 × 10 的網絡計算速率為148.2 frames/s,隨著網絡規模的增長,其計算速率呈線性下降.通過理論分析發現,由于硬件加速器的三個計算核心通過并行計算對網絡推理進行加速,因此加速器對網絡的加速效率取決于規模最大的一層網絡,即計算量最大的一層網絡.硬件加速器的加速效率隨著神經網絡中最大規模的一層網絡的規模增加而線性下降.

圖9 硬件加速器對不同規模神經網絡計算的加速效率Fig.9.Acceleration efficiency of hardware accelerator for different scale neuron networks.
此外,該加速器對小規模網絡表現出了優秀的加速效果,而對大規模網絡的加速效果不明顯.因此,該硬件加速器架構更適用于計算量相對較小、資源相對匱乏的邊緣計算.
表1 所列為本次工作與近年來其類似工作的對比.從表1 中可以看出,本次工作相較于其他工作,使用憶阻器實現了更為簡單的LIF 神經元模型,通過更少的憶阻器資源開銷(0.75k)集成了更大規模的神經元/突觸.同時,在MNIST 數據集的識別工作中擁有相對較高的推理準確率(96.4%).

表1 本次工作與其他類似工作的對比Table 1.Comparison of this work with other works.
在本次工作中,對基于LIF 神經元模型的脈沖神經網絡進行了詳細闡述,并基于憶阻器陣列及其外圍電路實現了LIF 神經元的硬件設計.基于神經元/突觸復用技術和權值共享技術的權值存儲陣列可以通過0.25k 的憶阻器存儲64M 突觸的權值.此外,通過電阻分壓的方式對憶阻器陣列輸出進行電流-電壓轉換,并通過數字電路進行采集.基于憶阻器陣列設計,提出了神經形態計算核設計.計算核可以實現至多8k 神經元、64M 突觸的計算.最終,通過三個神經形態計算核構建了脈沖神經網絡推理加速器設計,并開展了仿真、驗證工作.在加速器中部署了784 × 1024 × 1024 × 10的三層全連接脈沖神經網絡,并對MNIST 數據集進行了推理驗證.試驗結果表明,該加速器設計可以實現148.2 frames/s 的推理計算,同時擁有96.4%的推理準確率.
受限于憶阻器存儲材料的工作頻率,該架構的硬件加速器最高工作頻率為50 MHz,未來隨著工藝的發展,憶阻器的工作主頻將進一步提升,硬件加速器的性能也能隨之得以提升.此外,隨著部署在加速器中的網絡規模不斷提升,加速器的計算效率逐漸下降,因此,該加速器設計適合部署在資源匱乏、算力需求低的邊緣設備中進行加速工作.在算力需求較高的應用環境下,則需要擴大設計規模,這也就意味著需要更大規模的憶阻器陣列和外圍電路.