999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的Izhikevich神經元定制計算方法

2023-12-16 10:29:04葉鈞超柴志雷
計算機工程 2023年12期
關鍵詞:模型

葉鈞超,徐 聰,黃 堯,柴志雷,2

(1.江南大學 人工智能與計算機學院,江蘇 無錫 214122;2.江蘇省模式識別與計算智能工程實驗室(江南大學),江蘇 無錫 214122)

0 概述

雖然人工神經網絡已被證明在各種應用中非常成功,但需要大量的計算能力提供支持。相比之下,脈沖神經網絡(Spiking Neural Network,SNN)可以憑借事件驅動[1]的特性進行節能計算,并在實時應用中顯示出巨大的潛力[2-5],因此廣泛應用于大量任務中,如圖像[6]和孤立詞識別[7]、目標檢測[8]、導航[9]和運動控制[10]。

2003 年,IZHIKEVICH[11]引入了 一個基 于映射的模型(稱為Izhikevich 神經元模型)。Izhikevich 模型結合了霍奇金-赫胥黎模型(Hodgkin-Huxley,HH)[12]生物行為多樣性以及帶泄露積分觸發模型(Leaky-Integrate-and-Fire,LIF)簡單計算的優點,因此被普遍認定為準確且計算成本較低的模型。文獻[13]指出,在都利用前向歐拉數值方法求解常微分方程的條件下,在保持頻率誤差在1%以下且膜電位的誤差在0.015 mV 內的精確度時,仿真1 ms 時Izhikevich 神經元所處理的操作數為1 400,是LIF 神經元的30 多倍。因此,當使用Izhikevich 模型在通用CPU平臺上進行類腦仿真時,會存在高能耗、低性能的問題。利用GPU[14]多線程的并行屬性對Izhikevich 神經元進行加速優化,以及利用超級計算機[15]通過確保隨機訪問發生在高速緩存中進行加速仿真,雖然都能解決通用CPU 平臺的低性能問題,但會造成更高的能耗。如何在大規模仿真時保持高性能、靈活性以及低功率的設計成為一項挑戰,FPGA 平臺[16]能以極低的能耗獲得較高的運算性能,因此,FPGA在類腦領域受到廣泛的關注。

近年來,針對Izihkevich 神經元在FPGA 上的研究逐漸深入。有研究者從簡化計算的角度對Izhikevich 進行優化,利用旋轉坐標數字計算方法(Coordinate Rotation Digital Computer,CORDIC)[17-18]近似替換Izhikevich 神經元方程中的計算復雜的平方項,以提升單個神經元的更新計算效率。WANG 等[19]在前者的基礎上消除了冗余迭代和相關的計算,進而提出了一種快速收斂的CORDIC 算法,這有助于縮小誤差與提高平方計算的效率。也有人通過設計一種新的硬件體系結構[20-21]來縮短單個神經元更新方程的流水線階段的時鐘周期,在不失去計算速度的情況下降低功耗。還有從更新方程的求解方法角度對Izhikevich 進行優化探索,如Moslem[22]通過對比速度、功耗等硬件性能指標發現歐拉方法中的時間步長能線性影響軟件仿真和硬件實現的性能,而最佳的步長可以通過網絡中電流輸入的數量和每個輸入電流的最大權重來確定。上述這些關于Izhikevich 神經元在FPGA 上的優化研究都只注重針對單個神經元性能、能耗的研究,沒有考慮不同精度數據類型帶來硬件資源、時間上的消耗,也沒有考慮整體網絡的優化手段,而且沒有接入真實的類腦仿真平臺。如果考慮這些額外因素,則會面臨以下幾個挑戰:一是Izhikevich 神經元參數、種類很多,目前較少有針對這些參數數值、類別的具體分析;二是針對類腦軟硬件沒有一個通用數據接口。

針對上述挑戰,本文進行以下工作:首先分析Izhikevich 神經元模型各參數的取值范圍,并通過平衡誤差與資源消耗進行混合精度定制設計;然后提出一種定制化的數據流式計算架構,在接口處利用數據重排支持后續多個神經元處理單元的同時更新,并使用平衡數據路徑的方式優化單個神經元更新的流水線階段;最后將該架構用于NEST 仿真器加速,支持多種基于Izhikevich 的脈沖神經網絡。

1 Izhikevich 神經元

1.1 Izhikevich 神經元計算模型

Izhikevich 神經元是一種計算高效的模型,由兩個耦合的常微分方程組成,雖然計算相對簡單,但可以至少實現20 種生物尖峰神經元的計算特性。下面介紹兩個耦合的常微分方程:

其中:v是膜電位;u是恢復變量;Ie是外部施加電流;vth是閾值電位;a是恢復變量u的時間尺度;b是u對v的敏感度;c是神經元在發射脈沖尖峰后v的復位值;d是神經元在發射脈沖尖峰后u的復位值。

與Izhikevich 模型相比,LIF 神經元模型只涉及到一個微分方程,將神經元膜建模為電容為C的電容器與電阻為R的電阻器并聯,然后更新方程如式(4)和式(5)所示:

其中:τm=RC是電路的時間常數;I是刺激電流。一旦膜電位超過閾值電位(vth),膜電位就會被重置成靜止值(vrst)。

分析比較兩者的更新方程可知,LIF 模型更新方程因其過于簡單,所以無法展現出具有生物特征的多種尖峰行為,而Izhikevich 模型不僅計算方程較為簡單,還可以通過調節a、b、c、d等參數的值產生不同的尖峰行為,以表現出神經元多樣的生物特征行為。Izhikevich 神經元模型結合了HH 模型的生物學合理性以及LIF 模型的計算效率,這種神經元模型能夠重現許多不同的神經元動力學和可能發生在生物尖峰神經元中的脈沖發射行為。

相比較四階Runge-Kutta 法和指數歐拉法這兩種求解常微分的方法,方程經過前向歐拉法求解后的計算復雜度較低,計算成本相對較少。因此,利用前向歐拉法對時間步長(?t=0.1 ms)的常微分方程式(1)和式(2)進行數值求解,可得式(6)和式(7):

1.2 基于Izhikevich 的SNN 網絡計算特性分析

SNN 網絡主要由兩部分組成:神經元和突觸。脈沖神經網絡仿真模擬時間開銷主要集中在神經元更新和突觸傳遞上,具體的兩部分的時間占比會因突觸、神經元、網絡拓撲等的不同而有所差異。相比較基于LIF 的SNN 網絡,基于Izhikevich 的網絡因其膜電位更新方程更復雜,其神經元更新計算的時間占比更大。

一個仿生型的脈沖神經網絡的規模通常達到幾百萬甚至億級的數量,使用分布式多節點的手段,在單節點上也將達到幾千到幾萬的規模。即使選擇最簡單的歐拉法求解常微分方程,單個神經元完成一次更新仍需要15 次運算操作,最后乘以神經元的數量以及更新的次數,將會達到一個幾千萬到幾十億的運算操作[23]。完成運算操作的數據是用雙精度浮點數據類型表示的,這對計算機的硬件資源有很高的要求,而且浮點計算的一次操作需要多個時鐘周期才能完成,所以全部操作完成相應的時間成本會很高。多節點的分布式技術能緩解資源不夠、時間開銷大的問題,但使用浮點計算的單節點因資源受限無法進行較多神經元的更新,需要依靠更多的節點滿足仿真所需。減少位寬表示的定點化數據能極大程度上緩解資源受限的問題,在有限的硬件資源內支持更多神經元的更新,并且還能縮短一定的神經元更新時間。定點化操作不可避免地會帶來一定程度的數值誤差,但神經元膜電位在每次發射脈沖的時候會恢復到一個固定的值,這個過程將會把之前仿真累計的誤差清零,因而盡管在脈沖數值上會有細微差別,但膜電位波形圖、脈沖發射頻率等并不會受到影響。

NEST 仿真器是由時間和事件混合驅動的,即神經元的更新不僅與輸入電流有關,還與相應的脈沖事件有關。時間驅動是神經元的膜電位因持續不斷受到輸入電流的刺激而到達閾值并發射脈沖,事件驅動是脈沖事件被分發給相連的神經元以更新后者的膜電位。通常這個事件會有一定的延遲,這是因為仿真器在一個固定的時間片內會收集延遲內出現的所有脈沖事件再分發到目標神經元內的下一延遲(事件驅動)。這表明在單個時間片內,所有神經元之間都是數據無關的,理論上是可以完全并行的,這部分可以完全在硬件平臺上進行加速優化,脈沖事件也在此并行地紀錄、收集。存儲神經元連接情況的數據結構需要較大的內存,而通常硬件加速平臺片上的存儲資源并不多,因此脈沖事件分發適合放在片外即依舊由軟件仿真平臺執行。另外,優化加速的并行度會受限于平臺的硬件資源,可以根據單個神經元更新處理單元在不同平臺上的資源消耗情況實例化不同的數量。這就要求程序在并行更新計算前,有一個模塊負責把片外串行邏輯的數據讀取到片上,并且重排這些數據以便后續的并行更新計算模塊能進行并行讀取。

2 基于FPGA 的定制計算方法設計

2.1 混合精度的定制設計

2.1.1 可拓展的整數位寬

針對基于Izhikevich的SNN 應用,Izhikevich神經元的a、b、c、d、vth參數只在生成神經元的時候被賦予初值且在整個仿真過程中保持不變,可以針對這些參數的值進行位寬的定制優化設計。文獻[12]中提到的一組Izhikevich模型經典的、廣泛使用的參數值為:

根據這組值,可以把參數a、b、c、d、vth的整數部分位寬分別設計成2、2、8、3、7 bit,其中還包含1 bit的符號位,那么a的取值范圍為[-1,1],b的取值范圍為[-1,1],c的取值范圍為[-128,128],d的取值范圍為[-4,4],vth的取值范圍為[-64,64]。在類腦領域較為常用的ModelDB 官網上,收集所有出現過的Izhikevich 模型,統計各參數的值,如圖1 所示。比較統計的參數值與設計參數的取值范圍,設計的混合數據類型不僅適用于經典值,還適用于絕大部分的Izhikevich 模型,而對于少數不在表示范圍內的值,可以根據具體參數的值修改相應參數的整數部分位寬以適應模型的需要。

生物細胞膜電位v的值域為[-100 mv,60 mv],因此可以設計該參數的整數部分位寬為9bit。方程中v2項的值域為0~10000,214=16384 能滿足表示范圍,還需要加上一位符號位即整數部分位數為15 位。根據式(7)中a和Δt都小于1,因而恢復變量u的值域小于v,因此設計u和v相同的數據類型,即整數位寬也為9 bit。

最后是關于權重的值域。并不是所有SNN 模型權重都能做定點化,可定點化的主要分兩類:一類是機器學習方向上訓練好的SNN 模型,其權重參數固定,可以定點化;另一類是脈沖發射率較為平衡的SNN 網絡,這類網絡最后能平衡下來,其權重的值域較為恒定,可以定點化。收集上述兩種特征的SNN 模型并運行,其權重的分布情況如圖2 所示。實驗結果表明,這兩類Izhikevich 神經元的權重集中分布在-100~30 之間,設置整數位寬為8 bit 就能滿足多數SNN 模型。如果是脈沖發射率較為恒定的SNN 模型,則先在軟件上運行并統計其權重集中的值域,再設計特定的位寬,實現更低的資源消耗以及更短的仿真時間。

圖2 Izhikevich 神經元權重值分布Fig.2 Izhikevich neuron weight value distribution

2.1.2 小數部分的精度設計

在仿真中,任意神經元參數小數部分的設計將直接影響仿真時膜電位的數值變化進而改變神經元脈沖的發射狀態。以參數膜電位小數部分位寬的選取為例,式(9)為膜電位的相對誤差(verr)公式,其中,vfix為各位寬下表示的膜電位數值,vdouble是用雙精度浮點表示的膜電位數值,統計不同位寬下的神經元在仿真模擬30 步后的膜電位相對誤差,如圖3 所示。

圖3 各位寬下膜電位的相對誤差Fig.3 Membrane potential's relative error with each bit width

隨著小數部分位寬增加,膜電位的相對誤差不斷減小,在位寬達到21 bit 以后,該相對誤差減小得很緩慢,更多的位寬會消耗更多的硬件資源。本文實驗選取的模型對于仿真后的膜電位數值有著較高的精度要求,因而選取小數點位寬為21 bit,精度達到10-5。對于膜電位數值精度需求不高的SNN 模型,可以通過縮小小數部分的位寬來減少硬件資源的消耗。根據上述方法對Izhikevich 神經元所有參數定制相應小數部分的位寬,統計結果如表1 所示,其中,“—”表示沒有相應的經典值。

表1 各參數的混合精度設計Table 1 Mixed precision design of each parameter

在SNN 仿真中,把所有的參數分為兩類:定量和變量。定量是Izhikevich 的a、b、c、d、vth參數,變量是Izhikevich 的權重weight、膜電位v、恢復變量u。對于不同Izhikevich 神經元,只需根據定量的值與變量值域修改相應的整數、小數部分位寬就能滿足不同類腦模型的仿真。

2.2 可定制數據流式架構設計

根據1.2 節的分析結論把一個延遲內神經元的更新放在FPGA的可編程邏輯(PL)部分并行執行,有一個數據預處理單元負責對片外的數據進行讀取、重排以便后續的并行更新,還有一個單元整理并行更新后的數據并傳回給片外。神經元間通信則由軟件仿真器執行,如此反復循環以完成脈沖神經網絡的仿真。

2.2.1 整體架構設計

如圖4 所示,該圖整體是一種ARM+FPGA 的異構混合結構,主要包括3 個主要組件:片外外部緩存(DDR,頂部),應用處理單元(APU,中間),可編程邏輯部分(PL,下部的虛線框部分),其中仿真器的軟件部分運行在DDR 上的Linux 系統環境上,硬件加速部分運行在PL 部分。本文實驗提出了一種可定制的數據流式架構,可定制具體體現在兩個方面:1)可以對不同Izhikevich 神經元的不同參數進行混合精度的定制;2)可以根據不同的FPGA 資源確定合適的處理單元的數目。首先在ARM 端的片外外部緩存(External Memory,EM)內準備好PL 端所需的數據,PL 端使用AXI 協議通過HP 口對EM 進行訪問讀取。數據首先會進入重分配的處理單元,該單元主要負責為后續的并行處理單元進行數據的重組,其中處理單元的數量隨FPGA 硬件邏輯資源的不同而不同;其次,當數據進入單個處理單元內,將Izhikevich 神經元的更新方程的流水化階段縮減為7 個階段;最后,有一個處理單元專門負責數據的整合以及脈沖記錄信息,并返回給ARM 端以便后續的仿真過程。

圖4 可定制數據流架構Fig.4 Customizable data flow architecture

2.2.2 數據重排

在ARM 端會對存儲在神經元本地環形緩沖區內的數據進行一次重組,充分使用64 bit、128 bit 的HP 端口的數據傳輸帶寬,如圖5 所示。在PL 端的數據預處理單元,會對ARM 端重組后發送過來的數據進行一次重分配,以滿足在PL 部分各神經元更新處理單元的計算所需。重分配分3 步:第1 步按32 bit讀取數據到相應的參數內,第2 步需要把相同的參數集合在一起,第3 步把這些參數均勻地分發給各處理單元。數據重分配會帶來額外硬件資源開銷以及時間開銷,開銷的大小與并行度有關系。

圖5 FPGA 上的數據重分配Fig.5 Data redistribution on FPGA

2.2.3 最小化神經元更新方程的數據路徑

分析式(3)、式(6)和式(7)得知,在vt和0.04 相乘的同時,可以進行vt與5 的乘法以及140 與ut的減法,以此類推,就把整個更新公式內具備并行運算條件的部分都進行并行計算,目的是為了平衡數據路徑,使流水線階段整體的最小化。經過優化后的硬件實現如圖6 所示,其中,thre 是閾值。定點化后使用提供的計算邏輯資源都能在一個時鐘周期內完成加、減和乘法等操作,完成單個神經元單次更新所需的流水線時間從原先的15 個時鐘周期縮小到7 個,如果是float、double 等浮點類型表示的數據,則不能在一個周期內完成加、減和乘法操作,而且并不會帶來額外電路開銷,這是因為在都使用流水線的情況下,原先串行流水線第一階段的加、減和乘法器并不會給第二階段復用,而是處理下一個進來的數據。

圖6 單Izhikevich 神經元的硬件設計Fig.6 Hardware design of a Izhikevich neuron

2.2.4 可定制的并行度

各神經元之間更新所需的參數獨立,不存在數據的依賴關系,因而可以對神經元更新部分進行并行化處理。但由于數據的吞吐量和FPGA 邏輯資源的限制,更新計算的并行度有一定的局限性,在資源不足的情況下,通過設計低并行結合流水化架構的方式可以大大提高資源的利用率以及整體的計算性能。假設并行度為P,則針對Izhikevich 神經元的并行流水設計如圖7 所示,對于不同的FPGA 平臺,所擁有的邏輯資源是不同的,因而在各平臺上并行度的最佳值是可定制調節的。在神經元更新程序的最外部設置一個并行度的參數P,通過觀察系統仿真消耗的各種資源情況調整合適的數值。

圖7 多神經元更新優化前后對比Fig.7 Comparison before and after multi-neuron update optimization

假設一個神經元完成一次更新的3 個階段時間分別為Tr、Tc、Td,其中,Tr為數據讀取階段,Tc為數據計算階段,Td為數據寫回階段,即總時間LLatency=Tr+Tc+Td。那么串行完成N個神經元更新所需的時間NLatency=(Tr+Tc+Td)×N,當使用流水線結合并行的架構處理時,其總體所需時間如式(10)所示:

其中:P為并行度。

3 基于Izhikevich 加速的NEST 仿真器

3.1 基于NEST 的軟硬件系統設計

為了解決ARM 和PL 部分之間頻繁的數據通信問題,將PYNQ-Z2 的片上內存DDR 專門劃分出一部分用于兩者間數據通信,避免每次通信時都要申請內存。這里以PYNQ 舉例,PYNQ 有512 MB 的DDR,內存地址為0x0~0x20000000,PYNQ 在開啟狀態可用內存約為350 MB,留給NEST 的內存大小為200 MB,本文將共享內存大小設定為64 MB,滿足式(11)的計算需求:

其中:ppara_num表示神經元的參數數量;IIZHI_num為神經元數量;ttype_data表示各參數對應的數據類型;SSTEP為仿真一個時間片的大小。

SSTEP在NEST 中由式(12)獲得:

其中:ddelay表示最小時延。

如圖8 所示,Host 端通過串口運行Processing System(PS)上基于NEST 仿真器的樣例程序,架構將NEST 仿真器中突觸、神經元的搭建、脈沖分發等任務切換較為頻繁的部分運行在ARM 上,把重復計算的神經元更新部分放到PL 上進行加速。當仿真程序運行到神經元更新時,ARM 會將DDR 上的參數緩存、脈沖事件等地址信息通過通用的AXI Master 接口傳輸給PL,然后PL 部分的數據預處理模塊根據地址信息通過AXI HP 口對DDR 進行數據讀取。HP 端口在PYNQ-Z2 上最大以64 bit讀取一個數據,而在ZCU102 上則可以達到128 bit 讀取一個數據,相當于一次能傳送多個數據。在PL 上有一個數據預處理單元,首先對讀取到的數據塊進行解包操作,即還原成32 bit 的數據格式,然后把數據平均分給后續實例化神經元更新單元。更新完的數據以及脈沖事件等信息會通過數據打包發送處理單元傳回PS,并存儲到DDR 內以供后續的仿真計算。

圖8 基于NEST 的系統結構Fig.8 NEST-based system structure

3.2 通用數據傳輸接口設計

FPGA 上的PL 部分與ARM 上的共享內存進行數據傳輸會花費一定的時間,如果PL 頻繁訪問共享內存則會導致數據讀取時間增加,因此,應盡可能地減少共享內存的訪問次數。所有神經元的初值可以在本地存放,把整個時間步長內的計算放到FPGA里面,只需在最后完成階段返回發生改變的膜電位v、恢復變量u和發射脈沖的相關信息,而不是每一小步都寫回v和u,減少了PL 端訪問共享內存的次數。不過考慮到脈沖權重weight 參數的數據量較大而且不需要寫回,因而選擇不存在本地,而是在讀取本地參數的同時從共享內存處讀入數據并參與計算。另外,除了第一個時間步長內仿真需要準備FPGA 加速部分所需的全部參數數據信息,之后的每一個仿真時間步長只需要傳輸發射脈沖的數據量(uup_size)即可,可由式(13)獲得:

使用4 個性能更好的AXI_HP 接口進行數據傳輸以減少傳輸時間,數據通信接口的設計如圖9所示。

圖9 ARM 與FPGA 數據傳輸接口示意圖Fig.9 Schematic diagram of data transmission interface between ARM and FPGA

一個SSTEP內所有神經元的脈沖信息數據量較大,所以使用AXI_HP0 接口專門負責這部分輸入。AXI_HP1 接口除了在仿真的第一個SSTEP內需要傳入神經元更新所需的所有參數,然后返回更新后的膜電位v和恢復變量u,以后的每一個SSTEP只需要傳入完成更新的v和u即可。最后的兩個AXI_HP 接口分別返回發射脈沖的神經元編號和該神經元發射脈沖的具體時刻,以便后續的仿真計算。

4 實驗結果與分析

實驗采用軟硬件結合的加速開發方式進行實驗,其中:軟件環境為NEST 仿真器2.14.0 版本、PyNN API、Xilinx Vivado 2018.2、PYNQ 環境;硬件環境為PYNQ-Z2 開發板、ZCU102 開發板、Intel?CoreTMi7-10700 CPU。類腦仿真復現了經典的丘腦外側膝狀核網絡模型以及液體狀態機模型,這兩個實驗模型使用了多種Izhikevich 神經元,旨在驗證設計方案的適用性以及性能提升的效果。

4.1 經典的類腦仿真模型

4.1.1 丘腦外側膝狀核網絡模型

丘腦外側膝狀核網絡模型(Lateral Geniculate Nucleus,LGN)在傳統上被視為視覺皮層的門戶[24],是控制注意力反應增益的看門人,LGN 會把視覺感覺信息映射到初級視覺皮層(V1)。除此之外,在初級視覺皮層受損但仍然可以對某些圖像做出反應的盲視行為中,AJINA 等[25]指 出LGN 在繞過V1 的 通路中起到關鍵性的作用。該模型包含約70%~80%TCR 細胞和20%~25%IN 細 胞,表 明TCR 與IN 之比約為4∶1[4],而在TRN 上沒有一個精確可用的相應數據信息,所以在此模型中任意設置為單元格數量的兩倍,即將TCR、IN 和TRN 群體中的細胞比例設置為8∶2∶4。本文中LGN 模型的突觸布局如圖10 所示,實際模型實現了14 000 個Izhikevich 神經元,該模型的突觸布局基于從哺乳動物和嚙齒動物的背外側膝狀核獲得的實驗數據。

圖10 丘腦外側膝狀核網絡模型拓撲Fig.10 Topology of the network model of the lateral geniculate nucleus of the thalamus

4.1.2 液體狀態機模型

液體狀態機(Liquid State Machine,LSM)是一種使用脈沖神經網絡的儲層計算機。LSM 由大量神經元節點組成,每個神經元節點從外部源(輸入層)以及其他節點接收隨時間變化的輸入,節點間彼此隨機連接,而且連接后就不再改變。這說明兩兩神經元之間連接權值不需要訓練,一般可以采用靈活多變的算法來訓練輸出層以達到所需的精度及目標任務。實驗采用文獻[26]中提到的LSM 模型,網絡拓撲示意圖如圖11 所示(彩色效果見《計算機工程》官網HTML 版,下同),且中間層取用12 500 個Izhikevich 神經元隨機連接構成,輸入層用泊松發射機提供輸入信號,因為中間層是靜態的權重,所以神經元之間的連接用靜態突觸來實現。

圖11 LSM 網絡拓撲Fig.11 Topology of LSM network

4.2 仿真數值驗證

實驗選取參數為1 400 個Izhikevich 神經元、dt=0.1 的LGN 模型進行正確性驗證。比較一個神經元仿真1 000 ms 時間內恢復變量u和膜電位v經過混合精度前后的數值波形變化,如圖12 和圖13 所示,圖中藍色點表示雙精度浮點(double)數據對應的數值,紅色的點表示混合精度(fixed)數據類型對應的數值。

圖12 不同數據類型下恢復變量波形圖Fig.12 Waveform diagrams of recovery variable under different data types

圖13 不同數據類型下膜電位波形圖Fig.13 Waveform diagrams of membrane potential under different data types

觀察圖12 和圖13 可知,恢復變量u在加速前后數值波形變化高度一致,神經元膜電位v在脈沖峰值上表現出細微的誤差,但整體變化波形仍然完全一致。至于峰值出現誤差,這是因為定制化后的數據相比較double 浮點表達盡管只有很輕微誤差(10-5),但隨著仿真時間的推移,該誤差會隨著計算不斷地累積。使用低位寬的優化手段,該峰值的誤差必然是會存在的,但可以通過增加小數部分的位寬來縮小這個峰值的差距,進一步提高數值模擬的精確度。在膜電位v計算達到閾值恢復到初始值的同時,也能對這個峰值的誤差完成清零操作,這表明只要定制合適的位寬就能取得與浮點一致的數值波形變化。在SNN 模型仿真中,研究人員往往并不關注峰值的高低,反而專注于發射脈沖的狀態,膜電位的波形變化規律是關鍵因素,因而定制的混合精度數據類型能滿足LGN 等模型的仿真所需。

為了進一步說明仿真結果的準確性,比較經過相同的仿真時間內舊版double 類型和FPGA 定點類型的神經元膜電位v以及恢復變量u關于時間的平均相對誤差(vMRE/uMRE),結果如表2 所示。

表2 神經元膜電位一段時間內的平均相對誤差分析Table 2 Analysis of average relative error over time in neuronal membrane potential

vMRE/uMRE的計算式如式(14)所示:

其中:Ts表示的是該神經元在Ts的仿真時間內記錄v/u的次數;x取值為膜電位v或者恢復變量u。分析表2 中的數據可知,每1 000 ms 膜電位的平均相對誤差為5%左右,而恢復變量為2%左右,在可接受的誤差范圍之內。

4.3 資源消耗

數據類型的不同表達,不僅影響存儲單元的使用率,還會影響運算器等硬件邏輯單元的開銷。7 000 個神經元在并行實例化2 份神經元更新處理單元的情況下,頻率為100 MHz,在PYNQ-Z2 上全部更新一步所需的資源以及單神經元更新一步所需的時鐘周期如表3 所示。

表3 PYNQ-Z2 上資源統計Table 3 Resource statistic on PYNQ-Z2

分析資源的使用情況,設計的混合精度數據類型相比較double、float 數據類型在BRAM、DSP、FF、LUT 的使用上都減少了很多,意味著在該FPGA 平臺上可以實例化更多并行的神經元更新處理單元以及更多Izhikevich 神經元的加速。分析3 種數據類型下單神經元完成一次更新所需的時鐘周期可知,float 相比較double 只減少了10%的時間,而設計的混合精度數據類型相比較double 減少近83%。產生這種現象的原因是:盡管使用平衡最短數據路徑的方法將原先的流水線階段縮短至7 個階段,但是double 與float 數據類型在各階段內的加減乘法等不能在一個周期內結束,這就使得后期流水階段會進入等待狀態。

表4 所示為7 000 神經元仿真一步,在不同并行度下資源以及時間開銷情況。相比較并行度1(即原始串行版本),并行度為2 時存儲BRAM、DSP 資源幾乎成倍增長,FF 和LUT 也有所增加,時間有所降低。這是因為當使用并行時,相比較原始串行版本,需要額外在本地也存一份數據再進行數據的重分配,此時就會成倍增加存儲的開銷,這也會帶來一定的時間開銷。原先串行版本計算時間占主體,此時計算模塊的時間開銷減半,會對整體膜電位更新整體時間造成很大的影響,所以,盡管重分配會帶來一定的時間開銷,但整體的時間還是降低的。對比并行度2、4、8,除了DSP 依舊成倍數增長外,別的資源增長并不多且時間降低變得緩慢。這是因為計算所需的加、減和乘法器等DSP 資源會隨著并行度而成比例增長,這過程并不需要大量其他的資源的參與,至于時間減少不多是因為此時的程序數據的重分配、通信等非計算所需的時間占主體,計算占比很小,因而計算時間減半,對整體更新時間的減少效果減弱。

表4 不同并行度下PYNQ-Z2 上資源統計Table 4 Resources statistic on PYNQ-Z2 under different degrees of parallelism

4.4 Izhikevich 模型優化綜合對比分析

表5 是關于Izhikevich 所做的其他方法與本文方法對比,其中MPU 表示單個神經元膜電位更新一次所需的時鐘周期數。表中其他方法也使用了定點化的方法,但那是對神經元中所有值都進行相同的位寬設計,而本文使用混合精度的設計能進一步降低神經元的整體資源開銷,同時縮小膜電位的絕對誤差,盡管所提方法的MPU 時間不是最低的,但也比別的多數方法小很多。相比較傳統的硬件描述語言VHDL,使用的是開發更便捷的高層綜合語言(High-Level Synthesis,HLS),同時還進行了一定規模的脈沖神經網絡的仿真模擬。

表5 Izhikevich 模型不同優化綜合對比Table 5 Comprehensive comparison of different optimizations of the Izhikevich model

4.5 Izhikevich 整體加速效果

有關Izhikevich 神經元的研究,主要集中在單個神經元的性能、能耗,從簡化更新方程中復雜項、求解方程的時間步長等方向上優化加速,但都沒有與經典的類腦應用對接。本文從數據的存儲類型角度,利用混合精度優化整體網絡,利用平衡數據路徑、并行、流水等手段加速神經元更新計算過程,并與開源的NEST 仿真器對接,以下是兩個經典的類腦仿真模型在不同平臺上的表現。

選擇數量大小為14 000 個Izhikevich 神經元,仿真6 000 ms、Δt=0.1 的LGN 模型進行實驗,神經元更新模塊實例化了4 份處理單元,并比較經過FPGA 加速部分的Izhikevich 更新部分與舊版本更新部分在不同平臺上的性能與能效,如表6 所示,其中,MOP表示每秒百萬次運算(Million Operations Per Second),更新能效比為MOP/功率,加粗數據表示最優值,下同。

表6 不同平臺上LGN 模型更新部分性能對比Table 6 Performance comparison of the update part of the LGN model on different platforms

分析比較表6 可知,雖然PYNQ-Z2 上的更新所需時間最長,但其功率很低,更新部分的能效比是i7-10700 CPU 的7.94 倍,比ZCU102 稍低。使用FPGA 架構更好的ZCU102 板卡,首先運算性能是PYNQ-Z2 的3.90 倍,是i7-10700 CPU 的2.31 倍,更新能效比是i7-10700 CPU 的8.53 倍。接下來使用12 500 個Izhikevich 神經元,仿真20 000 ms 的LSM模型進行實驗,統計結果如表7 所示。

表7 不同平臺上LSM 模型更新部分性能對比Table 7 Performance comparison of the update part of the LSM model on different platforms

比較表6 和表7 可以發現,LSM 模型相較于LGN 模型,各平臺更新能效比都有一定程度的降低,潛在的原因是LSM 模型網絡結構、初始化值的不同以及仿真時長導致網絡的脈沖發射率高于LGN 模型,即傳遞脈沖的時間占比多了,導致整體更新能效比下降。在PYNQ-Z2 平臺上盡管更新時間并不比i7-10700 CPU 快,但更新能效比為其11.23 倍,而在ZCU102 上,不僅運算性能是PYNQ-Z2 的3.62 倍、i7-10700 CPU 的3.03 倍,還能在更新能效比上取得i7-10700 CPU 的11.20 倍的效果。

5 結束語

相比較計算更簡單的LIF 神經元,Izhikevich 神經元能表現出更多生物尖峰神經元的計算特性,但基于其的研究目前都還只停留在針對單神經元的加速上,沒考慮整體網絡的優化。本文在單神經元優化的基礎上,對大量脈沖網絡仿真的存儲數據進行了定點化的優化研究,結合計算、存儲的特性提出一套定制計算方法,從而在有限硬件資源的條件下更高效地完成更多神經元的仿真,為大型的類腦模型仿真提供解決思路。

在開源的NEST 仿真器下進行設計的實現,驗證定制計算方法的性能與能效比。實驗結果表明,相比于Intel?CoreTMi7-10700 CPU,經典的丘腦外側膝狀核模型、液體狀態機模型神經元更新部分的運算性能、能效比在FPGA 平臺上都有較大的提升。后續的工作將從以下方面展開:1)實踐發現軟件端數據準備階段所占整體時間比重較大,將探究優化NEST 仿真器脈沖的分發機制,減少軟件上數據的二次搬運;2)為了驗證所提定制計算方法的拓展性,將尋找更多的模型、FPGA 平臺進行實驗驗證。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 老司国产精品视频| 亚洲精品自拍区在线观看| 亚洲国产天堂久久综合| 亚洲视频免| 日韩欧美中文在线| 国产大片黄在线观看| 久久久久久久97| 无码精油按摩潮喷在线播放| 四虎永久免费网站| 深夜福利视频一区二区| 亚洲精品在线影院| 欧洲极品无码一区二区三区| 久久精品中文字幕少妇| 亚洲福利片无码最新在线播放| 国产swag在线观看| 日本少妇又色又爽又高潮| 成人毛片免费观看| 日本人妻一区二区三区不卡影院 | 亚洲中文字幕久久无码精品A| 亚洲国产成人久久精品软件| 久久久噜噜噜| 国产区免费| 永久免费无码日韩视频| 久久中文字幕不卡一二区| 青草午夜精品视频在线观看| 欧美性猛交xxxx乱大交极品| 中文无码精品A∨在线观看不卡| 亚洲精品卡2卡3卡4卡5卡区| 国产欧美又粗又猛又爽老| 97国产在线播放| 国产主播喷水| 欧美日韩精品一区二区视频| 国产成人综合网在线观看| 波多野结衣一区二区三区四区| 成人午夜天| 无码AV高清毛片中国一级毛片| 国产欧美性爱网| 日韩天堂视频| 免费可以看的无遮挡av无码| 欧美日韩专区| 欧美五月婷婷| 无码在线激情片| 伊人色综合久久天天| 欧美在线综合视频| 久久6免费视频| 久久精品一卡日本电影| 四虎国产在线观看| 中文字幕第4页| 久久香蕉国产线看精品| 亚洲高清无在码在线无弹窗| 午夜激情福利视频| 国产av色站网站| 国产成人高清精品免费5388| 五月激情婷婷综合| 国产亚洲视频中文字幕视频| 亚亚洲乱码一二三四区| 国产精品午夜福利麻豆| 日本伊人色综合网| 视频二区亚洲精品| 国产亚洲日韩av在线| 大学生久久香蕉国产线观看| 被公侵犯人妻少妇一区二区三区| 五月天福利视频 | 又爽又大又光又色的午夜视频| 精品一區二區久久久久久久網站 | 久久久久人妻精品一区三寸蜜桃| 91精品人妻互换| 伊人AV天堂| 久久精品电影| 看国产毛片| 国产精品成人不卡在线观看| 久久人搡人人玩人妻精品| 伊人五月丁香综合AⅤ| 91视频精品| 亚洲精品在线影院| 日韩亚洲综合在线| 91麻豆久久久| 操操操综合网| 国产午夜无码片在线观看网站 | 狠狠综合久久| 亚洲国产亚洲综合在线尤物| 成人韩免费网站|