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

概率計算神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)

2021-11-17 08:28:02陳宇昊宋印杰祝亞楠高云飛李洪革
計算機(jī)與生活 2021年11期

陳宇昊,宋印杰,祝亞楠,高云飛,李洪革

北京航空航天大學(xué) 電子信息工程學(xué)院,北京100191

目前,傳統(tǒng)的馮諾依曼架構(gòu)的中央處理器芯片占據(jù)著計算處理的核心。馮氏架構(gòu)通過存儲、計算和控制單元獨(dú)立運(yùn)行、分工配合完成運(yùn)算任務(wù),其特點(diǎn)是利用多比特位的二進(jìn)制數(shù)據(jù)/指令在存儲和計算單元中順序逐條執(zhí)行,以便完成設(shè)定的邏輯計算等功能[1]。目前通用CPU、GPU、TPU 芯片存在致命問題:其一,大數(shù)據(jù)量的卷積計算造成傳統(tǒng)人工智能芯片功耗的激增,不利于人工智能的邊緣側(cè)部署,即“功耗墻”問題;其二,由于深層網(wǎng)絡(luò)包含巨量權(quán)值參數(shù),對存儲帶寬、時延產(chǎn)生更高要求,造成整個系統(tǒng)的計算瓶頸,即“內(nèi)存墻”問題[2]。

生物大腦的計算方法與馮諾依曼計算體系完全不同,生物神經(jīng)元利用基于時間/空間編碼的尖峰脈沖傳遞信息,而非二進(jìn)制編碼的數(shù)據(jù)。脈沖神經(jīng)網(wǎng)絡(luò)是一種模擬生物大腦的神經(jīng)網(wǎng)絡(luò)類型,使用脈沖序列進(jìn)行信息傳遞與運(yùn)算,這與二進(jìn)制數(shù)計算的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)完全不同,具有更低的計算資源需求。因此,探索基于脈沖運(yùn)算的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)體系架構(gòu)是破解計算瓶頸的新的突破口,具有全新的研究價值。

概率計算是神經(jīng)網(wǎng)絡(luò)的重要實(shí)現(xiàn)方法之一[3-5],利用離散脈沖序列取代順序二進(jìn)制數(shù),實(shí)現(xiàn)更低的計算資源占用。然而其在計算時延(latency)或計算精度方面的犧牲也成為硬件設(shè)計的挑戰(zhàn)。針對上述問題,部分研究者已經(jīng)進(jìn)行了一些初步的嘗試,Najafi、Sim 等課題組提出了改進(jìn)概率編碼的方法優(yōu)化上述問題[6-7];Kim 和Liu 等人則采用改進(jìn)隨機(jī)數(shù)的方法提高其計算效率[8-9];Jenson 等人提出了確定性位流的概率計算方法,可達(dá)到更佳的計算精度[10];2020年,Huang 團(tuán)隊基于FinFET 技術(shù),研究了概率邏輯電路的可靠性,為新型納米器件的應(yīng)用提供了良好的前景[11]。然而,使用概率計算方法搭建神經(jīng)網(wǎng)絡(luò)計算架構(gòu)仍然是面臨的挑戰(zhàn)。

基于上述研究成果以及目前仍然存在的各種挑戰(zhàn),本文提出新的設(shè)計思想和方案,其主要貢獻(xiàn)如下:

(1)基于概率計算規(guī)則,對精確概率乘法的時延問題進(jìn)行優(yōu)化,并設(shè)計了單路/多路概率計算電路;

(2)對比分析了概率計算乘加器與傳統(tǒng)布爾邏輯乘加器,并根據(jù)實(shí)驗所得各項物理參數(shù)給出結(jié)論;

(3)設(shè)計了人工神經(jīng)元與脈沖神經(jīng)元的統(tǒng)一運(yùn)算電路,即雙神經(jīng)元形式的計算單元;

(4)搭建了可重構(gòu)神經(jīng)網(wǎng)絡(luò)計算架構(gòu),嘗試運(yùn)行多種網(wǎng)絡(luò)模型,實(shí)現(xiàn)毫瓦級的低功耗設(shè)計。

本文的組織結(jié)構(gòu)如下:首先,基于概率計算的基礎(chǔ)討論了概率計算乘法與誤差來源;其次,設(shè)計了低時延、高計算效率的概率計算電路;再次,基于概率計算,將人工神經(jīng)元向脈沖神經(jīng)元轉(zhuǎn)換,實(shí)現(xiàn)兩者運(yùn)算的統(tǒng)一;另外,基于FPGA 硬件電路設(shè)計,驗證與實(shí)現(xiàn)了概率計算乘加器,并與傳統(tǒng)陣列乘加器進(jìn)行對比分析;再者,搭建可重構(gòu)的脈沖神經(jīng)網(wǎng)絡(luò)計算架構(gòu),基于FPGA 設(shè)計套件得到資源、功耗數(shù)據(jù),并與相關(guān)設(shè)計進(jìn)行對比分析;最后,給出文章的結(jié)論。

1 概率計算與誤差分析

1.1 概率計算基礎(chǔ)

基于順序二進(jìn)制數(shù)的布爾邏輯是計算機(jī)處理器和AI 加速器的計算基礎(chǔ),也是傳統(tǒng)數(shù)字邏輯運(yùn)算的基礎(chǔ)。而概率計算的機(jī)制與順序二進(jìn)制計算邏輯完全不同,這種離散數(shù)字脈沖式的計算方式在加法和乘法計算方面具有獨(dú)特的優(yōu)勢,具體表現(xiàn)在資源、功耗與吞吐量等方面,在大數(shù)據(jù)量的并行計算中其優(yōu)勢也將更加明顯;此外,其脈沖流形式的數(shù)據(jù)表現(xiàn)方式更類似于生物神經(jīng)細(xì)胞,而受到了廣泛的研究。本文首先闡述概率計算的基本概念和計算機(jī)制。

單極性概率脈沖編碼(或稱為單極性概率計算),其脈沖碼流的取值是0 或1,概率脈沖編碼通常由輸入二進(jìn)制數(shù)、隨機(jī)數(shù)發(fā)生器(random number generator,RNG)通過比較器而獲得,本文的RNG 采用線性反饋移位寄存器(linear feedback shift register,LFSR)。LFSR 可以產(chǎn)生周期性的偽隨機(jī)序列,nbit LFSR 生成的隨機(jī)數(shù)的取值范圍是0~2n-1,概率脈沖編碼電路結(jié)構(gòu)如圖1 所示,LFSR 產(chǎn)生的隨機(jī)數(shù)和二進(jìn)制數(shù)輸入給比較器,當(dāng)二進(jìn)制數(shù)大于隨機(jī)數(shù)時輸出“1”脈沖,否則輸出“0”。

Fig.1 Conversion of binary number into stochastic pulse圖1 二進(jìn)制數(shù)向概率脈沖轉(zhuǎn)換的方法

若有兩個無符號二進(jìn)制數(shù)Ab(nbit)、Bb(mbit)分別與nbit 和mbit LFSR 比較得到概率脈沖序列As和Bs,那么在序列As和Bs中,出現(xiàn)脈沖“1”的概率分別為:

如果兩序列互不相關(guān),則As和Bs同時為“1”的概率P(AB)等于概率P(A)、P(B)乘積,即,當(dāng)使用概率脈沖表示數(shù)值時,乘法運(yùn)算可以使用一個“與”邏輯門實(shí)現(xiàn):

式(2)中用“1”出現(xiàn)的頻率代替概率:P(AB)≈ADD/Np,Np是脈沖序列的長度,ADD是乘積脈沖中“1”脈沖的累加數(shù),通常使用計數(shù)器進(jìn)行統(tǒng)計。

假設(shè)Np=2L,代入式(2)得:

若L∈N+,那么乘積Ab?Bb可由ADD移位n+m-L比特作為近似值,避免從乘積脈沖轉(zhuǎn)換到二進(jìn)制數(shù)值時,產(chǎn)生額外的乘法或除法計算,減少硬件開銷。當(dāng)L=n+m時,可得Ab?Bb≈ADD,即“1”脈沖的累加數(shù)ADD可直接作為乘積的近似結(jié)果,不需要對ADD移位。

1.2 概率計算乘法

如1.1 節(jié)所述,在經(jīng)典概率計算的乘法中,為保證輸出脈沖的概率等于兩輸入脈沖的概率之積,要求兩個輸入脈沖彼此互不相關(guān),因此不同編碼電路中需要使用不同RNG 以產(chǎn)生互不相關(guān)的概率脈沖,導(dǎo)致轉(zhuǎn)換器產(chǎn)生較多的硬件資源占用;其次,采用LFSR 作為隨機(jī)數(shù)發(fā)生器,并非真隨機(jī)數(shù)發(fā)生器,難以保證兩脈沖間互不相關(guān),導(dǎo)致在計算中不可避免地產(chǎn)生誤差。

假設(shè),Ab(nbit) 為二進(jìn)制乘數(shù),使用在[0,2n-1]上均勻分布的隨機(jī)序列Rand與Ab進(jìn)行比較,脈沖“1”出現(xiàn)的概率為:

設(shè)脈沖長度為Np,滿足Ab>Rand的隨機(jī)數(shù)個數(shù)的期望為:

本文采用被乘數(shù)調(diào)制乘數(shù)所產(chǎn)生脈沖串的乘法計算方法[12]。Bb(mbit)為被乘數(shù),對乘數(shù)的概率脈沖序列As(長度Np)進(jìn)行調(diào)制,保留有效長度(Nvalid=Np×Bb/2m) 內(nèi)的“1”脈沖;將舍棄部分的“1”脈沖清零。經(jīng)過上述調(diào)制后的脈沖序列作為Ab、Bb的乘積脈沖,乘積脈沖中“1”的概率將正比于Ab×Bb,如式(6)所示:

雖然由上述推理可知,乘積脈沖串的概率是正比于二進(jìn)制數(shù)的乘積,但實(shí)際計算時,得到的結(jié)果往往帶有誤差,這通常是由以下原因引起的:

(1)樣本估計總體導(dǎo)致的誤差:由概率轉(zhuǎn)換為乘積二進(jìn)制數(shù)值時,用脈沖“1”的頻率代替概率值是一種用樣本估計總體的統(tǒng)計思想,頻率是試驗得到的統(tǒng)計量,概率是計算得到的理論值,隨著Np增大,可以使頻率在概率附近的波動范圍減小,但無法保證頻率一定等于概率。

(2)隨機(jī)數(shù)非均勻分布導(dǎo)致的誤差:上述推理建立在隨機(jī)數(shù)發(fā)生器Rand為均勻分布序列這一條件之上,但實(shí)際計算時,使用nbit LFSR 作為隨機(jī)數(shù)發(fā)生器,并非真隨機(jī)數(shù)發(fā)生器,僅在脈沖長度Np=2n×L且L∈N+時,才具備均勻分布隨機(jī)序列的特征,式(4)才成立。

(3)計算誤差:調(diào)制式的概率乘法計算,只有當(dāng)脈沖串的舍棄部分與有效部分中1 的占比相等時,即Np=2n+m時,乘法結(jié)果才準(zhǔn)確,否則存在計算誤差。

所使用的概率乘法計算,并非對兩乘數(shù)的概率脈沖進(jìn)行邏輯與操作實(shí)現(xiàn)乘法,而是使用調(diào)制式的乘法方式,因此也避免了兩乘數(shù)的脈沖序列互不相關(guān)的制約,可以多個計算單元共用同一個隨機(jī)數(shù)發(fā)生器,每個乘數(shù)僅需要一個比較器或計數(shù)器,有效降低了二進(jìn)制-概率脈沖轉(zhuǎn)換器的硬件資源開銷,且Np=2n+m時可達(dá)到與二進(jìn)制乘法器相同的計算精度[8]。

2 概率計算電路

2.1 脈沖——二進(jìn)制數(shù)轉(zhuǎn)換

1.2 節(jié)所提出的概率脈沖調(diào)制乘法電路結(jié)構(gòu)如圖2 所示,電路包括LFSR、比較器、減法計數(shù)器和脈沖序列計數(shù)器。2n×Bb作為減法計數(shù)器的初始值,每個時鐘遞減1,當(dāng)計數(shù)到0 后,脈沖計數(shù)器的使能信號置零,完成一次乘法運(yùn)算。

Fig.2 Stochastic multiplication with pulse modulation圖2 概率脈沖調(diào)制乘法

脈沖長度Np=2n+m是實(shí)現(xiàn)精確計算的必要條件,而圖2 電路結(jié)構(gòu)需經(jīng)過Nvalid=2n×Bb個時鐘周期才能得到乘積結(jié)果,產(chǎn)生較高的時間消耗。為了提高轉(zhuǎn)換效率,本文利用LFSR 產(chǎn)生的隨機(jī)數(shù)序列具有周期性這一特點(diǎn),實(shí)現(xiàn)了多路脈沖的并行發(fā)送與并行接收功能。

考慮nbit 的數(shù)Ab和mbit 的數(shù)Bb進(jìn)行無符號整數(shù)乘法,Ab與nbit LFSR 產(chǎn)生的隨機(jī)數(shù)比較得到概率脈沖序列As,脈沖序列的周期為2n,脈沖長度Np=2n+m;如果將該脈沖按照周期(2n)分組,可分為2m組{As1As2…},各組脈沖序列是完全相同的且長度為2n;若計數(shù)器并行接收兩組脈沖序列,那么每次接收“1”脈沖的個數(shù)只可能為2 或0,因此可將兩組脈沖合并為一組脈沖,每接收一個脈沖,計數(shù)器執(zhí)行加2操作;以此類推,若將2L組脈沖序列合并,則每個脈沖會令計數(shù)器執(zhí)行加2L操作。

將合并后的脈沖稱作幅度脈沖,長度用Namplitude表示,不同合并數(shù)量得到的幅度脈沖,盡管電壓幅度相同,但實(shí)際包含了不同的累加幅度信息,在實(shí)際電路中,通過時間或者空間上的不同進(jìn)行區(qū)分,并且合并前后的脈沖長度有下列關(guān)系:Np=2L×Namplitude,2L表示參與合并的脈沖組數(shù)。

Np=2n+m的脈沖串進(jìn)行乘法調(diào)制后,有效長度為Nvalid=Np×Bb/2m=2n×Bb,利用上述分組合并的思想,長為Nvalid的脈沖序列可以轉(zhuǎn)換為m組不同合并數(shù)量的脈沖序列。例如,Bb為7 bit 且Bb=63 時,有效長度包含63 個周期,基于二進(jìn)制數(shù)按位構(gòu)造的方式如63=0×26+1×25+1×24+1×23+1×22+1×21+1×20,即(63)10=(0111111)2,其中,Bb二進(jìn)制形式的第L位為1 時,表示可以從有效脈沖序列中選取2L組進(jìn)行合并。

為了保證上述計算方式的計算效率,本文設(shè)計了新的幅度脈沖乘法器,如圖3 所示。乘數(shù)Bb的m位分別與Ab的概率脈沖串同時作為m個二輸入與門的輸入,實(shí)現(xiàn)了m組幅度脈沖的并行生成,其幅度值分別對應(yīng)±20~±2m-1。在脈沖串轉(zhuǎn)換為二進(jìn)制數(shù)的電路中,m組脈沖分別經(jīng)過m個全加器(FA0,FA1,…,FAm-1)累加構(gòu)成低mbit 二進(jìn)制數(shù),而高nbit由計數(shù)器累加構(gòu)成,最終拼接為完整的二進(jìn)制數(shù)存儲。

Fig.3 Pulse generator and binary conversion circuit圖3 脈沖發(fā)生器及二進(jìn)制轉(zhuǎn)換電路

該方案通過脈沖合并,m組并行發(fā)送的方式,大幅度降低了計算時延,由2n+m降至2n個時鐘周期,相比圖2 方案,僅增加少量硬件資源。使用m組并行的Namplitude=2n帶有幅度信息的脈沖代替了串行的Np=2n+m原始概率脈沖,這一方式實(shí)質(zhì)上是對原始的概率脈沖進(jìn)行了編碼轉(zhuǎn)換,并沒有改變精確概率乘法需要Np=2n+m的前提條件。

2.2 多路并行概率計算乘加器

在保證計算精度的前提下,如繼續(xù)改善計算時延,還可將Namplitude=2n的單路m組脈沖串拆分為4路并行m組的脈沖串,則時延可降低為2n-2,其電路結(jié)構(gòu)如圖4 所示。

在圖3 方案中,nbit LFSR 的作用是產(chǎn)生[0,2n-1]的均勻分布序列,可以用4 個并行的(n-2) bit LFSR代替實(shí)現(xiàn)相同功能。(n-2) bit LFSR 產(chǎn)生的數(shù)值范圍是[0,2n-2-1],將4 個LFSR 的輸出數(shù)據(jù)編號為LFSR1至LFSR4,將隨機(jī)數(shù)送入比較器之前先分別進(jìn)行下列運(yùn)算:Rand1=LFSR1,Rand2=LFSR2+2n-2,Rand3=LFSR3+2×2n-2,Rand4=LFSR4+3×2n-2,則Rand1至Rand4的取值范圍分別為[0,2n-2-1],[2n-2,2n-1-1],[2n-1,3×2n-2-1],[3×2n-2,2n-1],實(shí)現(xiàn)了在[0,2n-1]上均勻分布隨機(jī)序列的4 路并行輸出。基于此方式,4 個(n-2) bit LFSR 與4 個比較器將并行產(chǎn)生4 路脈沖,每路包含m組脈沖序列,可將計算時延縮短為2n-2個時鐘周期。

Fig.4 Signed MAC with 4 channels based on stochastic computing圖4 帶符號數(shù)的4 路并行概率計算乘加器

圖4 的4 路并行脈沖發(fā)送具有如下特點(diǎn):4 路脈沖均使用同一個Bb作為脈沖的調(diào)制乘數(shù),對于二進(jìn)制轉(zhuǎn)換電路而言,即任意一路如果發(fā)送了“1”脈沖,對應(yīng)的累加值均等于Bb,否則為0;Rand1至Rand4的取值范圍依次增大,當(dāng)?shù)贚路發(fā)送“1”脈沖時,第L路以下的也一定發(fā)送脈沖“1”,因此僅使用m個與門對Rand1產(chǎn)生的概率脈沖進(jìn)行調(diào)制,其余3 路發(fā)送“1”脈沖時,可根據(jù)第一路m組脈沖確定累加值;在一個時鐘周期內(nèi),每有1 路發(fā)送了脈沖“1”,加法器就需要累加1 次Bb,即一個時鐘周期內(nèi),Bb的累加次數(shù)等于發(fā)送了脈沖“1”的通路數(shù)。

二進(jìn)制轉(zhuǎn)換電路設(shè)置移位補(bǔ)償模塊,其目的是將4 路脈沖通路在每個時鐘周期里產(chǎn)生的4 次累加運(yùn)算,并行地在一個時鐘周期內(nèi)完成。由于上述脈沖“1”的特殊發(fā)送規(guī)律,顯著簡化了移位步長模塊的電路結(jié)構(gòu),相比于圖3 方案,雖然該方案硬件資源增加約78%,但計算速度是原先的4 倍,因此,綜合計算效率比單通道又提高約1.25 倍。

由于實(shí)際計算往往是有符號數(shù)的乘累加運(yùn)算,圖4所示電路還包含原-補(bǔ)碼轉(zhuǎn)換模塊。對于Ab(nbit)、Bb(mbit)的有符號數(shù)運(yùn)算,Bb、Ab以原碼形式表示,最高位各有1 bit 符號位,累加值需要先進(jìn)行原補(bǔ)碼轉(zhuǎn)換,再完成累加,乘加運(yùn)算結(jié)果為補(bǔ)碼形式。

3 神經(jīng)網(wǎng)絡(luò)計算架構(gòu)

3.1 神經(jīng)元基礎(chǔ)

無論是傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò)還是卷積神經(jīng)網(wǎng)絡(luò)都是參考神經(jīng)元結(jié)構(gòu)和功能實(shí)現(xiàn)的數(shù)學(xué)模型,并以人工神經(jīng)元作為網(wǎng)絡(luò)的基本單元,其基本邏輯功能如圖5 所示,X=[x1,x2,…,xi]是神經(jīng)元的輸入信號,W=[w1,w2,…,wi]是與神經(jīng)元相對應(yīng)的權(quán)值,i是表示神經(jīng)元個數(shù)的正整數(shù),每個神經(jīng)元對輸入和權(quán)值進(jìn)行加權(quán)求和得到膜電位。

Fig.5 Neuron model圖5 神經(jīng)元模型

而神經(jīng)元本身都存在偏置信號θ,在外界激勵的作用下,其結(jié)果經(jīng)過激活函數(shù)f后輸出,其完整表達(dá)如下:

不同于傳統(tǒng)人工神經(jīng)元,脈沖神經(jīng)元則模擬了生物神經(jīng)元的運(yùn)行特點(diǎn)。神經(jīng)元接收脈沖信號P(t)=[p1(t),p2(t),…,pm(t)],根據(jù)連接權(quán)值增強(qiáng)或抑制膜電位;神經(jīng)元達(dá)到閾值電壓時會進(jìn)入激活狀態(tài),向下一層神經(jīng)元釋放脈沖并將膜電位快速拉低至靜息電位,也就是進(jìn)入不應(yīng)期。所對應(yīng)神經(jīng)元膜電位表達(dá)式:

式中,u、p、s、w分別為膜電位、神經(jīng)脈沖、激活狀態(tài)(未激活時s=1)和權(quán)值,g(t)為一個尖峰脈沖對膜電位所產(chǎn)生增量隨時間t的變化曲線。

為了以數(shù)字電路的形式實(shí)現(xiàn)運(yùn)算,需對時間域離散的脈沖神經(jīng)元重新建模,將尖峰脈沖替換為方波,設(shè)T為采樣間隔,則可以得到下述表達(dá)式:

將每兩個采樣點(diǎn)之間的時間段劃分為一個活動周期,同一個活動周期內(nèi)的神經(jīng)元活動(收發(fā)脈沖)視為同時進(jìn)行的,因此式(9)的計算需要記錄從上一個不應(yīng)期結(jié)束時刻(n0T)到當(dāng)前時刻的所有活動周期的輸入脈沖數(shù)據(jù),計算量龐大,計算效率低,于是對膜電位變化曲線g(t)進(jìn)行改進(jìn),采用如圖6 的分段擬合方法實(shí)現(xiàn),即g(nT)=2-nT,用tn表示nT,且T=1,則式(10)可以簡化為式(11):

Fig.6 Piecewise fitting membrane potential curve圖6 分段擬合的膜電位變化曲線

根據(jù)上式,神經(jīng)元在當(dāng)前活動周期結(jié)束時的膜電位可由上一活動周期結(jié)束時的膜電位uj(tn-1)、當(dāng)前活動周期的接收脈沖pi(tn)以及自身狀態(tài)sj(tn)求得,避免了大量的運(yùn)算,且g(t)變化曲線系數(shù)取為1/2,也即上一活動周期膜電位的衰減系數(shù),通過移位實(shí)現(xiàn),進(jìn)一步減小硬件資源開銷。

基于脈沖神經(jīng)元膜電位表達(dá)式構(gòu)造脈沖神經(jīng)元模型,如圖7 所示。神經(jīng)元電路結(jié)構(gòu)包含:脈沖接收器、實(shí)現(xiàn)膜電位衰減的移位器、判斷激活條件的比較器、脈沖發(fā)生器等。

Fig.7 Spiking neuron circuit圖7 脈沖神經(jīng)元電路結(jié)構(gòu)

3.2 雙神經(jīng)元計算單元

基于概率計算范式,可將人工神經(jīng)元轉(zhuǎn)換為脈沖神經(jīng)元完成對應(yīng)運(yùn)算。為了實(shí)現(xiàn)片上神經(jīng)網(wǎng)絡(luò)重構(gòu)系統(tǒng),本文提出了雙神經(jīng)元結(jié)構(gòu)作為基本計算單元(processing element,PE),模擬輸入神經(jīng)元到輸出神經(jīng)元的概率脈沖傳輸過程。輸入神經(jīng)元包括本地權(quán)值存儲單元、膜電位及其激活單元和概率脈沖調(diào)制乘法單元(包括比較器和LFSR 等);輸出神經(jīng)元包括脈沖接收模塊、膜電位移位寄存器。

對于單個神經(jīng)元結(jié)構(gòu)而言,其工作過程為:輸入數(shù)據(jù)經(jīng)過乘法、加法再經(jīng)過激活函數(shù),并根據(jù)權(quán)值發(fā)送脈沖編碼信號。而在雙神經(jīng)元結(jié)構(gòu)中,輸入數(shù)據(jù)位于輸入神經(jīng)元,先經(jīng)過激活函數(shù),再根據(jù)權(quán)重發(fā)送脈沖;輸出神經(jīng)元將接收到的脈沖累加至膜電位寄存器,并在切換活動周期時衰減膜電位。

基于上述概率計算的雙神經(jīng)元,本文提出了基于概率計算的脈沖神經(jīng)元與傳統(tǒng)神經(jīng)元可重構(gòu)的設(shè)計方案。針對神經(jīng)元的乘加運(yùn)算(式(7))以及脈沖神經(jīng)元的條件加權(quán)的累加運(yùn)算(式(11)),均采用概率脈沖編碼的方式轉(zhuǎn)換為脈沖形式實(shí)現(xiàn)運(yùn)算,以實(shí)現(xiàn)在同一個電路架構(gòu)下,同時支持不同神經(jīng)元模型的計算功能:

式中,Cij(m)為基于概率計算得到的頻率編碼脈沖序列,對于脈沖神經(jīng)元的計算具有如下轉(zhuǎn)換關(guān)系,α與Cij的編碼長度N相關(guān)。

對于傳統(tǒng)神經(jīng)元的計算具有如下轉(zhuǎn)換關(guān)系,α同樣與脈沖編碼長度N相關(guān),且進(jìn)行人工神經(jīng)元計算時,式(12)中上一活動周期膜電位衰減uj(tn-1)/2 用偏置θ代替,sj、pi取值為1。

另外,由于卷積計算具有規(guī)則性和重復(fù)性,輸入特征圖的不同像素點(diǎn)將與同一個權(quán)重數(shù)值進(jìn)行乘法運(yùn)算,即卷積計算的重要特點(diǎn)之一“權(quán)值共享”,如果將權(quán)值作為乘數(shù)的概率脈沖信號,膜電位激活值作為被乘數(shù),也就是概率脈沖調(diào)制的使能信號,那么可以將多個計算單元的比較電路進(jìn)行合并,如圖8 所示,共用一個權(quán)重數(shù)值,并行進(jìn)行多個乘加運(yùn)算,比較器電路的資源平攤到各個計算單元中,每個計算單元的平均開銷就能夠進(jìn)一步降低。

Fig.8 Double neuron computational unit with shared weight圖8 權(quán)值共享的雙神經(jīng)元計算單元

3.3 神經(jīng)網(wǎng)絡(luò)的可重構(gòu)架構(gòu)

基于雙神經(jīng)元計算單元設(shè)計了可重構(gòu)神經(jīng)網(wǎng)絡(luò)運(yùn)算架構(gòu),用xm-ym,k符號表示一個雙神經(jīng)元計算單元,其中xm代表脈沖發(fā)生電路,連線代表權(quán)重,ym,k代表接收器且采用圖4 所示電路結(jié)構(gòu)。

基于雙神經(jīng)元概率計算的神經(jīng)網(wǎng)絡(luò)計算架構(gòu)如圖9 所示。其中,輸入膜電位ui,m(tn)存入xm,判斷激活情況并根據(jù)權(quán)重大小向ym,k發(fā)送概率脈沖;tn-1活動周期膜電位uo,k(tn-1)衰減1/2 后從輸入端輸入,并依次經(jīng)過y1,k,y2,k,…,ym,k,接收各輸入神經(jīng)元發(fā)送的脈沖信號,完成一系列累加運(yùn)算,從輸出端輸出tn活動周期的膜電位數(shù)值uo,k(tn)。

Fig.9 Computing array based on double neuron圖9 雙神經(jīng)元計算陣列

上述運(yùn)算過程為脈沖神經(jīng)網(wǎng)絡(luò)的一層運(yùn)算,輸出的膜電位數(shù)值既被用于當(dāng)前層的下一活動周期運(yùn)算,同時也是網(wǎng)絡(luò)下一層的輸入神經(jīng)元膜電位,參與下一層當(dāng)前活動周期的運(yùn)算。當(dāng)網(wǎng)絡(luò)的所有層依次完成運(yùn)算后,則一個活動周期計算完畢,進(jìn)入下一個活動周期,并再次重復(fù)上述過程。

為了適配SNN(spiking neural network)和CNN(convolutional neural network)網(wǎng)絡(luò)可重構(gòu)結(jié)構(gòu),設(shè)計了控制與數(shù)據(jù)路由模塊,用于計算陣列的配置與復(fù)用,實(shí)現(xiàn)對計算資源的充分利用;一個陣列的尺寸設(shè)置為m=3,k=32,共96 個雙神經(jīng)元單元。兩者組成一個可以獨(dú)立完成網(wǎng)絡(luò)處理工作的計算核,可實(shí)現(xiàn)多種模態(tài)的神經(jīng)網(wǎng)絡(luò)運(yùn)算。

4 硬件實(shí)現(xiàn)

4.1 乘累加單元性能對比

為了驗證概率計算構(gòu)造的邏輯電路性能,概率計算乘加器與經(jīng)典的二進(jìn)制數(shù)陣列乘加器進(jìn)行了對比。使用包含相同16 個計算單元構(gòu)造的乘加器計算電路,從而并行執(zhí)行乘累加運(yùn)算。乘累加運(yùn)算uj=,其中,i=1,2,…,16。

本實(shí)驗使用的FPGA 芯片是KINTEX-7,二進(jìn)制乘加器受限于關(guān)鍵路徑,插入一級流水后最高時鐘僅達(dá)200 MHz,而概率計算方法最高時鐘頻率可達(dá)700 MHz,即所采用FPGA 芯片的時鐘上限。因此,本實(shí)驗對概率計算給出兩套時鐘頻率的實(shí)驗結(jié)果,均基于FPGA 配套的設(shè)計套件得到硬件實(shí)現(xiàn)的各項報告,整理如表1 所示。

以O(shè)PS 為單位的能效數(shù)值存在一個取值范圍,與不同Tc取值一一對應(yīng),例如單路方案700 MHz 能效換算為:最高能效時Tc=1,243.5 GSOPS/W=487 GOPS/W;最高精度時Tc=128,243.5 GSOPS/W=3.8 GOPS/W。同理4 路方案700 MHz 能效換算為:最高能效時Tc=1,722.6 GSOPS/W=361.3 GOPS/W;最高精度時Tc=32,722.6 GSOPS/W=11.3 GOPS/W。

表1 中統(tǒng)計對象是16 個計算單元并行時的資源開銷,功耗是在同等條件下完成對數(shù)據(jù)輸入輸出獲得的結(jié)果。不同的乘法器電路對功耗的影響,也即計算邏輯電路產(chǎn)生的功耗,在FPGA 中主要體現(xiàn)在clocks、signal、logic 上,因此表1 列出的功耗僅為三者之和的動態(tài)功耗。其余功耗如時鐘管理器(MMCM)功耗和靜態(tài)功耗主要由FPGA 本身以及I/O 決定,與所設(shè)計的計算邏輯電路無關(guān)。

Tabel 1 Performance comparison between traditional MAC and stochastic MAC表1 二進(jìn)制陣列乘加器與概率計算乘加器性能對比

由于使用概率計算實(shí)現(xiàn)乘累加運(yùn)算時,計算時長與計算精度有關(guān),難以直接用乘加操作作為衡量算力計量單位,引入另一種算力計量單位:概率計算中的計算操作稱作突觸操作(synaptic operations),是一種條件加權(quán)的累加操作,最早由IBM 的True-North團(tuán)隊提出[2],對應(yīng)的算力單位為SOPS,表示每秒進(jìn)行的累加操作次數(shù)。

4.2 神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)

在KINTEX-7 上實(shí)例化了16 個3.3 節(jié)所述計算核并行運(yùn)行,時鐘頻率設(shè)置為350 MHz,基于FPGA配套設(shè)計套件得到各項報告,如圖10、圖11 所示,并完成了如下幾個常見SNN 或CNN 模型的運(yùn)行實(shí)驗,各網(wǎng)絡(luò)模型的權(quán)重數(shù)據(jù)均采用8 bit 量化方案,且Tc設(shè)置為32,即精確乘加計算。

基于綜合報告,計算每個核的峰值算力為134.4 GSOPS;與表1 相同,功耗部分不計入與邏輯電路無關(guān)的時鐘管理模塊功耗、靜態(tài)功耗與I/O 功耗,平均單計算核功耗為227 mW,峰值能效為0.592 TSOPS/W。

Fig.10 FPGA synthesis report of single core(350 MHz)圖10 計算核FPGA 綜合報告(350 MHz)

Fig.11 FPGA synthesis report of 16 cores(350 MHz)圖11 16 核FPGA 綜合報告(350 MHz)

4.2.1 SNN 神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)

基于單層SNN 的監(jiān)督學(xué)習(xí)算法,對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用MNIST 數(shù)據(jù)集,網(wǎng)絡(luò)結(jié)構(gòu)為一層全連接形式的SNN 網(wǎng)絡(luò),輸入神經(jīng)元784 個,輸出神經(jīng)元10 個,對應(yīng)手寫數(shù)字0~9,共10 個類別。

訓(xùn)練所得網(wǎng)絡(luò)測試集正確率為89.3%,8 bit 量化后正確率為89%,降低0.3 個百分點(diǎn)。由于MNIST 的圖像數(shù)據(jù)為二進(jìn)制數(shù)值,在進(jìn)行SNN 運(yùn)算前還需要將圖像編碼為脈沖序列。利用概率脈沖編碼,將28×28 個像素點(diǎn)的二進(jìn)制灰度值轉(zhuǎn)換為784個輸入神經(jīng)元(784=28×28)各自發(fā)送的Np=256 脈沖序列,也即256 個活動周期。

雙神經(jīng)元PE 的計算順序為:輸入神經(jīng)元膜電位,經(jīng)過激活函數(shù)后產(chǎn)生脈沖;輸出神經(jīng)元接收脈沖,進(jìn)行累加運(yùn)算得到輸出膜電位。而單層SNN 計算順序為先進(jìn)行累加運(yùn)算得到輸出膜電位,再經(jīng)過階躍形式的激活函數(shù)(閾值比較)得到輸出神經(jīng)元發(fā)送的脈沖,并根據(jù)產(chǎn)生脈沖的先后或者有無,判斷分類結(jié)果。因此陣列計算時需要設(shè)置為兩層以實(shí)現(xiàn)上述運(yùn)算。第一層負(fù)責(zé)膜電位計算的累加與衰減操作,第二層則僅負(fù)責(zé)激活判斷,不進(jìn)行計算操作。

搭建了相應(yīng)的顯示系統(tǒng),如圖12 所示,第1、3 行為隨機(jī)選取的數(shù)據(jù)集圖像,第2、4 行為相應(yīng)的識別結(jié)果。

Fig.12 MNIST dataset and SNN operation mode圖12 MNIST 數(shù)據(jù)集與SNN 運(yùn)行模式

4.2.2 Stochastic CNN 神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)

根據(jù)3.2 節(jié)的基于概率計算的神經(jīng)元轉(zhuǎn)換方法,對兩種常見CNN 模型進(jìn)行SNN 轉(zhuǎn)換,轉(zhuǎn)換后的網(wǎng)絡(luò)模型既不完全與SNN 一致,也不同于CNN,稱其為SCNN(stochastic CNN),SCNN 的計算結(jié)果與Tc存在較大關(guān)系,采用4 路方案的概率計算時,當(dāng)Tc=32時,網(wǎng)絡(luò)運(yùn)行結(jié)果與原CNN 一致;Tc<32 時,計算與原CNN 模型相比將產(chǎn)生誤差,實(shí)驗中使用Tc=32 的精確計算模式。

使用前述計算核進(jìn)行硬件加速,各CNN 模型同樣采用8 bit 量化:首先,通過計算機(jī)軟件仿真對轉(zhuǎn)換后網(wǎng)絡(luò)模型的準(zhǔn)確率進(jìn)行了測試,由于采用Tc=32的精確計算模式,因此轉(zhuǎn)換前后的計算結(jié)果是一致的,準(zhǔn)確率并沒有損失;其次,對電路進(jìn)行功能仿真,得到詳細(xì)的電路運(yùn)算過程,并觀察運(yùn)行結(jié)果(膜電位變化以及神經(jīng)元激活情況等)與軟件仿真結(jié)果完全一致,同時根據(jù)仿真時間得到各模型的處理幀率,各項實(shí)驗結(jié)果如表2 所示。

Table 2 Performance of common deep learning networks with single core表2 常見深度學(xué)習(xí)網(wǎng)絡(luò)的單核性能

在傳統(tǒng)的二進(jìn)制計算過程中,受到數(shù)據(jù)調(diào)度與計算時間不均衡的限制,無法時刻處于峰值計算狀態(tài),PE 利用率一般很低,如表3 所示,列出了幾款現(xiàn)有硬件加速器所能達(dá)到的PE 利用率。

Tabel 3 Comparison of PE utilization rate表3 PE 利用率比較

列舉的三款加速器采用ASIC 實(shí)現(xiàn),算力與能效的計量單位也非突觸操作,因此均值能效、峰值能效與本設(shè)計并不具有可比性,但PE 利用率與電路實(shí)現(xiàn)方式無關(guān),而與所采用的計算架構(gòu)有關(guān),因此是有對比意義的一項屬性。本文基于概率計算以脈沖神經(jīng)元的形式完成運(yùn)算操作,對數(shù)據(jù)讀寫速度的需求大幅降低,更易實(shí)現(xiàn)數(shù)據(jù)調(diào)度與脈沖計算的同步進(jìn)行,保證了計算時間與調(diào)度時間的均衡,大幅度減少了計算單元等待數(shù)據(jù)調(diào)度的空閑時間,因此達(dá)到了極高的PE 利用率。

5 結(jié)論

神經(jīng)網(wǎng)絡(luò)基礎(chǔ)計算單元直接影響其硬件加速器的計算能效。本文提出了基于低功耗、高計算效率的概率計算的基礎(chǔ)單元——乘加器。基于概率計算單元構(gòu)造了脈沖神經(jīng)網(wǎng)絡(luò)和概率卷積神經(jīng)網(wǎng)絡(luò),并實(shí)現(xiàn)了支持SNN 與SCNN 運(yùn)算的可重構(gòu)計算核心:北航籌算(BUAA-ChouSuan)。

基于KINTEX-7 平臺對幾種乘加器方案進(jìn)行對比測試,相比于經(jīng)典的二進(jìn)制乘加器,概率計算模式的乘加器單元在面積與功耗方面具有明顯的優(yōu)勢。在200 MHz 時鐘頻率下,單路概率計算的邏輯資源開銷(LUT)降低80%,功耗降低76%,最高能效比是二進(jìn)制乘累加器的8.82 倍。在SCNN 網(wǎng)絡(luò)計算中,測試了LeNet 與AlexNet,在時鐘頻率350 MHz,均值能效可達(dá)0.536 TSOPS/W,PE 利用率在90%以上。對MNIST 數(shù)據(jù)集,在8 bit 量化權(quán)重,Tc=32 條件下,識別精度可達(dá)97.87%與98.28%。

主站蜘蛛池模板: 网久久综合| 无码网站免费观看| 亚洲成人在线网| 精品国产欧美精品v| 欧美国产中文| 2021国产精品自拍| 亚洲色图欧美在线| 久精品色妇丰满人妻| 国产精彩视频在线观看| 人人91人人澡人人妻人人爽 | 免费人成视频在线观看网站| 国产欧美精品专区一区二区| 91色爱欧美精品www| 好吊妞欧美视频免费| 欧美a级在线| 72种姿势欧美久久久大黄蕉| 久久综合丝袜日本网| 丁香六月激情婷婷| 国产99精品久久| 婷婷色婷婷| 成人一级免费视频| 国产在线精彩视频二区| 天堂久久久久久中文字幕| 国产免费人成视频网| lhav亚洲精品| 国产永久在线观看| 天堂成人在线视频| 园内精品自拍视频在线播放| 男人天堂伊人网| 全部免费特黄特色大片视频| 99久久国产自偷自偷免费一区| 亚洲视频四区| 亚洲娇小与黑人巨大交| 朝桐光一区二区| 精品欧美一区二区三区在线| 亚洲AV电影不卡在线观看| 喷潮白浆直流在线播放| 国产成人久久777777| 国产肉感大码AV无码| 国产精品 欧美激情 在线播放| 毛片视频网址| 欧美黄网站免费观看| 久久久噜噜噜| 天天综合色网| 国产又色又刺激高潮免费看| 精品一區二區久久久久久久網站| 国模视频一区二区| 在线观看亚洲精品福利片| 亚洲第一中文字幕| 国产最爽的乱婬视频国语对白| 国产自在自线午夜精品视频| 亚洲欧美一区二区三区图片| 成年人国产视频| 欧美日本在线一区二区三区| 一本大道AV人久久综合| 国产一在线| 日韩二区三区无| 亚洲精品自拍区在线观看| 日韩A级毛片一区二区三区| 欧美啪啪一区| 国产喷水视频| 在线无码av一区二区三区| 一区二区理伦视频| 99er这里只有精品| 久久伊伊香蕉综合精品| 亚洲精品图区| 国产成人免费高清AⅤ| a在线亚洲男人的天堂试看| 日韩中文字幕免费在线观看| 免费在线视频a| 97在线免费| 国产主播在线一区| 亚洲全网成人资源在线观看| 无遮挡一级毛片呦女视频| 国产亚洲欧美日本一二三本道| 免费人成网站在线高清| 波多野结衣国产精品| 亚洲资源在线视频| 亚洲成人一区二区三区| 日本伊人色综合网| 国产精品美乳| 亚洲综合亚洲国产尤物|