国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

神經(jīng)網(wǎng)絡(luò)訓(xùn)練處理器的浮點(diǎn)運(yùn)算優(yōu)化架構(gòu)

2023-07-06 12:42:08張立博李昌偉戚魯鳳
關(guān)鍵詞:浮點(diǎn)尾數(shù)加速器

張立博,李昌偉,齊 偉,王 剛,戚魯鳳

(1.中國綠發(fā)投資集團(tuán)有限公司,北京 100010;2.山東魯軟數(shù)字科技有限公司,濟(jì)南 250001)

0 引言

隨著人工智能(AI)蓬勃發(fā)展,網(wǎng)絡(luò)模型的精準(zhǔn)度不斷提升,應(yīng)用場(chǎng)景愈發(fā)廣泛,但網(wǎng)絡(luò)模型存儲(chǔ)壓力不斷增加,模型運(yùn)算量日益增大,資源受限的互聯(lián)網(wǎng)設(shè)備面臨新的挑戰(zhàn)[1]。AI技術(shù)需要利用低能耗的神經(jīng)網(wǎng)絡(luò)處理器,但最近的大多數(shù)研究都集中在設(shè)計(jì)僅用于推理的加速器上[2]。然而,為了能夠真正利用AI服務(wù)于現(xiàn)實(shí)需求,還需實(shí)現(xiàn)自我監(jiān)督和半監(jiān)督學(xué)習(xí),這就要求神經(jīng)網(wǎng)絡(luò)處理器除了具有推理功能外,還要減少訓(xùn)練過程。

大多數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)加速器的研究都集中在確定輸入數(shù)據(jù)準(zhǔn)確性的正向架構(gòu)和電路結(jié)構(gòu)上[3]。然而,為了盡可能地模擬人類或動(dòng)物的神經(jīng)網(wǎng)絡(luò),有必要在反向傳播中設(shè)計(jì)一個(gè)通過精度反饋的神經(jīng)網(wǎng)絡(luò)電路,從而能夠使用尺寸更小且功耗更低的運(yùn)算_架構(gòu)。文獻(xiàn)[4]指出神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)可分為芯片外學(xué)習(xí)和芯片內(nèi)學(xué)習(xí)。其中,芯片外學(xué)習(xí)通過借助互聯(lián)網(wǎng)設(shè)備分散大量運(yùn)算,文獻(xiàn)[5]總結(jié)出使用邊緣設(shè)備收集、處理和分析神經(jīng)網(wǎng)絡(luò)類數(shù)據(jù)更有效。文獻(xiàn)[6]驗(yàn)證了與服務(wù)器重復(fù)交互的邊緣設(shè)備更能顯著減少電能消耗。文獻(xiàn)[7]開發(fā)了基于樹的算法用于預(yù)測(cè)資源受限的互聯(lián)網(wǎng)設(shè)備。芯片內(nèi)學(xué)習(xí)則是通過設(shè)計(jì)優(yōu)化的輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型在低功耗且小尺寸的芯片上實(shí)現(xiàn)訓(xùn)練[8]。

為了實(shí)現(xiàn)低功耗,必須為所涉及的數(shù)學(xué)計(jì)算選擇適當(dāng)?shù)母袷健N墨I(xiàn)[9]研究表明整數(shù)運(yùn)算足以設(shè)計(jì)低功耗推理加速器,然而,還需要大量的研究來訓(xùn)練具有合理精度的神經(jīng)網(wǎng)絡(luò)。文獻(xiàn)[10]的實(shí)證結(jié)果表明,訓(xùn)練神經(jīng)網(wǎng)絡(luò)需要至少16bit精度。文獻(xiàn)[11]中實(shí)現(xiàn)了使用整數(shù)運(yùn)算的混合精度訓(xùn)練,將兩個(gè)整數(shù)相乘并輸出存儲(chǔ)到整數(shù)累加器中。然而,整數(shù)運(yùn)算符無法代表廣泛的數(shù)字,嚴(yán)重阻礙了訓(xùn)練引擎中使用。

當(dāng)用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),浮點(diǎn)運(yùn)算比定點(diǎn)運(yùn)算具有更高的精度[12]。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)電路設(shè)計(jì)研究集中在利用GPU 或定點(diǎn)計(jì)算硬件進(jìn)行浮點(diǎn)運(yùn)算。然而,大多數(shù)現(xiàn)有的基于浮點(diǎn)的神經(jīng)網(wǎng)絡(luò)僅限于推理操作,只有少數(shù)包含針對(duì)高速服務(wù)器而非低功耗移動(dòng)設(shè)備的訓(xùn)練引擎[13]。將訓(xùn)練與高精度目標(biāo)結(jié)合起來需要使用浮點(diǎn)運(yùn)算符。神經(jīng)網(wǎng)絡(luò)中的高精度浮點(diǎn)運(yùn)算結(jié)構(gòu)往往會(huì)大量能耗。因此,需要設(shè)計(jì)出優(yōu)化浮點(diǎn)運(yùn)算的加速器。通過計(jì)算近似技術(shù)可以有效降低計(jì)算復(fù)雜性,最大限度地減少浮點(diǎn)算子的顯著能耗[14]。雖然計(jì)算近似技術(shù)在能耗和吞吐量?jī)?yōu)化方面表現(xiàn)出較好的性能,但現(xiàn)有研究熱點(diǎn)集中在反向傳播期間保持權(quán)重更新的精度。文獻(xiàn)[15]通過維護(hù)浮點(diǎn)權(quán)重的主副本來實(shí)現(xiàn)混合精度訓(xùn)練,并且在向前和向后傳播期間使用浮點(diǎn)的另一副本。然后,權(quán)重梯度需要更新浮點(diǎn)運(yùn)算主副本并在每次迭代中重復(fù)該過程。盡管減少了整體內(nèi)存使用量,但保持權(quán)重的副本會(huì)將權(quán)重的內(nèi)存需求增加兩倍[16],并且由于額外的內(nèi)存訪問將不可避免地導(dǎo)致整體性能發(fā)生延遲。

為了能夠兼顧神經(jīng)網(wǎng)絡(luò)訓(xùn)練中浮點(diǎn)運(yùn)算的訓(xùn)練過程和高精度,本文設(shè)計(jì)了一種具有高性能卷積神經(jīng)網(wǎng)絡(luò)(CNN)訓(xùn)練處理器的浮點(diǎn)運(yùn)算優(yōu)化架構(gòu)。在不犧牲精度的情況下找到最佳浮點(diǎn)格式。利用混合精度架構(gòu),將需要更高精度的層分配了更多的存儲(chǔ),而需要更少精度的層分配了更少的存儲(chǔ)。通過評(píng)估不同的浮點(diǎn)格式及其組合來實(shí)現(xiàn)浮點(diǎn)運(yùn)算符,從而以更少的能耗實(shí)現(xiàn)更高的精度結(jié)果。通過CNN 和浮點(diǎn)訓(xùn)練設(shè)計(jì)一種混合精度加速器實(shí)現(xiàn)更高精度的卷積塊,并運(yùn)用MNIST手寫數(shù)字?jǐn)?shù)據(jù)集驗(yàn)證了優(yōu)化架構(gòu)的有效性。

1 卷積神經(jīng)網(wǎng)絡(luò)(CNN)訓(xùn)練加速器

1.1 CNN架構(gòu)

CNN 作為人工神經(jīng)網(wǎng)絡(luò)(ANN)的分支,最常用于特征提取和分類[17]。使用CNN 訓(xùn)練加速器訓(xùn)練電路,從而高效準(zhǔn)確地對(duì)輸入圖像進(jìn)行分類。CNN 訓(xùn)練加速器的體系結(jié)構(gòu)可在正向傳播過程中使用經(jīng)過訓(xùn)練的權(quán)重從輸入值推導(dǎo)輸出,并在反向傳播過程中更新權(quán)重,進(jìn)而提高正向傳播中下一幅圖像的總體精度[18]。CNN 的總體架構(gòu),如圖1所示。其中,Conv為卷積,ReLu為線性整流函數(shù)。Softmax為歸一化指數(shù)函數(shù)。

圖1 CNN 的總體架構(gòu)

1.2 Softmax模塊

Softmax函數(shù)作為激活函數(shù),根據(jù)概率分布將網(wǎng)絡(luò)的輸出標(biāo)準(zhǔn)化為輸出類。Softmax函數(shù)將N個(gè)實(shí)數(shù)組成的向量xi作為輸入,由N個(gè)概率組成的概率分布建立標(biāo)準(zhǔn)化,且概率與輸入值的指數(shù)成正比。因此,對(duì)每個(gè)輸入向量應(yīng)用標(biāo)準(zhǔn)指數(shù)函數(shù),每個(gè)輸入向量指數(shù)值除以所有累加指數(shù)對(duì)每個(gè)輸入向量進(jìn)行標(biāo)準(zhǔn)化。則SoftMax函數(shù)可以表示為:

從公式(1)可以看出,計(jì)算SoftMax值需要1個(gè)除法器模塊和1個(gè)加法器模塊。

1.3 梯度下降發(fā)生器模塊

CNN 訓(xùn)練模型利用反向傳播算法將輸出層的誤差向后傳播,并使用基于梯度下降的優(yōu)化算法逐層更新變量[19]。本文利用加速變量更新收斂方式平滑梯度下降學(xué)習(xí)過程中遇到的波動(dòng),CNN 模塊中的權(quán)重更新為:

其中:θτ為時(shí)刻τ的權(quán)重,η為學(xué)習(xí)率,Δντ為梯度。從公式(2)可以看出,梯度下降權(quán)重更新需要1個(gè)乘法器和1個(gè)減法器模塊。

2 浮點(diǎn)運(yùn)算體系結(jié)構(gòu)

2.1 通用浮點(diǎn)數(shù)與運(yùn)算

根據(jù)IEEE 754標(biāo)準(zhǔn),由3個(gè)元素定義浮點(diǎn)格式:1)符號(hào)(正/負(fù));2)精度(實(shí)數(shù)的有效位數(shù),尾數(shù));3)位數(shù)(索引范圍)。浮點(diǎn)數(shù)可以表示:

其中:Sign為符號(hào)指數(shù),E為指數(shù)的二進(jìn)制值,eb為指數(shù)范圍的中值,M為尾數(shù),即小數(shù)點(diǎn)后的數(shù)字部分。浮點(diǎn)運(yùn)算的流程圖,如圖2所示。其中,MUX 為多路復(fù)用器,浮點(diǎn)數(shù)的每個(gè)部分單獨(dú)計(jì)算。

圖2 浮點(diǎn)運(yùn)算的流程圖

浮點(diǎn)運(yùn)算的步驟為:

步驟1:在執(zhí)行實(shí)際計(jì)算之前,原始的浮點(diǎn)數(shù)A和B劃分為{符號(hào)A,指數(shù)A,尾數(shù)A}和 {符號(hào)B,指數(shù)B,尾數(shù)B}。

步驟2:對(duì)于每個(gè)分離的元素分別進(jìn)行運(yùn)算:

1)符號(hào):在加法/減法運(yùn)算中,通過比較兩個(gè)輸入的尾數(shù)和指數(shù)來確定輸出符號(hào),在輸入B 的符號(hào)處放置1個(gè)非門和1個(gè)MUX,使用反向符號(hào)在相同模塊進(jìn)行減法運(yùn)算。在乘法/除法運(yùn)算,通過異或(XOR)運(yùn)算得到兩個(gè)輸入符號(hào)。

2)指數(shù):如果指數(shù)值不同,則在兩個(gè)輸入中選擇較大的指數(shù)值。對(duì)于指數(shù)值較小的輸入,有效數(shù)位右移一位使得兩個(gè)數(shù)字與同一個(gè)小數(shù)點(diǎn)對(duì)齊。兩個(gè)輸入的指數(shù)大小之差決定了要執(zhí)行右移的次數(shù)。

3)尾數(shù):通過無符號(hào)運(yùn)算計(jì)算尾數(shù)的值。尾數(shù)位的加法/減法運(yùn)算結(jié)果可能比兩個(gè)輸入的尾數(shù)位大1bit。因此,為了獲得精確的結(jié)果,本文將兩個(gè)輸入的尾數(shù)位大小增加了兩次,然后根據(jù)尾數(shù)的計(jì)算結(jié)果,無論最高有效位(MSB)為0或1,對(duì)尾數(shù)進(jìn)行加法或減法運(yùn)算。如果MSB為0,則不需要標(biāo)準(zhǔn)化。如果MSB為1,則標(biāo)準(zhǔn)化器移動(dòng)先前計(jì)算的指數(shù)位和尾數(shù)位來得到最終合并結(jié)果。

步驟3:每個(gè)計(jì)算出的元素合并成一個(gè)浮點(diǎn)前置模塊,從而生成結(jié)果以浮點(diǎn)形式輸出。

2.2 浮點(diǎn)數(shù)格式的變體

本文利用4種不同的浮點(diǎn)格式優(yōu)化CNN。每種浮點(diǎn)格式的詳細(xì)信息,如表1所示。

表1 4種不同的浮點(diǎn)格式

表1中的有效位表示位,包括符號(hào)位和尾數(shù)位。本文中使用的每種浮點(diǎn)格式,如圖3所示。

16bits自定義浮點(diǎn)格式用于與現(xiàn)有的16bits腦浮點(diǎn)格式進(jìn)行比較,24bits自定義浮點(diǎn)格式用于與其他浮點(diǎn)格式進(jìn)行比較。本文還在16bits卷積塊中使用24bit自定義浮點(diǎn)格式進(jìn)行累加,從而提高網(wǎng)絡(luò)的精度。

2.3 基于倒數(shù)的除法運(yùn)算

本文使用牛頓迭代法[20]作為除法運(yùn)算的算法,只需要減法和乘法即可計(jì)算出一個(gè)數(shù)的倒數(shù)。在數(shù)值分析中,實(shí)值函數(shù)f(y)近似為一條切線,其方程由f(y)的值及其在初始近似處的一階導(dǎo)數(shù)求得。如果yn是真實(shí)值的當(dāng)前估計(jì)值,則下一個(gè)估計(jì)值yn+1可以表示為:

其中:f′(yn)為f(yn)對(duì)yn的一階導(dǎo)數(shù)。

在倒數(shù)生成器中有3個(gè)整數(shù)乘法器,其中兩個(gè)乘法器負(fù)責(zé)在多次迭代后生成倒數(shù)。為了在倒數(shù)生成器中執(zhí)行快速計(jì)算,本文使用Dadda乘法器[21],其中部分乘積在半加法器和全加法器階段求和,然后使用常規(guī)加法器將最終結(jié)果相加?;诘箶?shù)的浮點(diǎn)除法器的結(jié)構(gòu),如圖4所示。

圖4 基于倒數(shù)的浮點(diǎn)除法器的結(jié)構(gòu)

3 浮點(diǎn)運(yùn)算優(yōu)化架構(gòu)

3.1 基于符號(hào)數(shù)組的除法運(yùn)算

由于基于倒數(shù)的除法器需要許多迭代和乘法器,因此,不可避免地受到處理延遲和過多硬件能耗的影響。本文使用符號(hào)數(shù)組來計(jì)算二進(jìn)制數(shù)的除法[22],與使用倒數(shù)的除法計(jì)算相比,符號(hào)數(shù)組除法沒有重復(fù)的乘法運(yùn)算。為了對(duì)分割進(jìn)行優(yōu)化,使用專門設(shè)計(jì)的處理單元,通過減法運(yùn)算和執(zhí)行反饋來選擇除法的商值。符號(hào)數(shù)組除法處理單元(PU)的結(jié)構(gòu),如圖5所示。

圖5 符號(hào)數(shù)組除法處理單元的結(jié)構(gòu)

基于符號(hào)數(shù)組的浮點(diǎn)除法運(yùn)算符整體結(jié)構(gòu),如圖6所示。其中,LSB為最低有效位。首先計(jì)算符號(hào)數(shù)組模塊中的尾數(shù),使用減法器/補(bǔ)償器計(jì)算指數(shù),使用XOR 獨(dú)立計(jì)算結(jié)果的符號(hào)位。符號(hào)數(shù)組模塊中的每行都計(jì)算部分除法(從先前的部分除法中減去),然后將其傳遞到下一行。每行右移一位,使每個(gè)部分除法對(duì)應(yīng)于被除數(shù)的下一位位置。數(shù)組除法器的每行決定了除法的商值的下一個(gè)最高位,將3個(gè)元素進(jìn)行合并得到最終的除法器結(jié)果。

圖6 基于符號(hào)數(shù)組的浮點(diǎn)除法運(yùn)算符整體結(jié)構(gòu)

本文設(shè)計(jì)的加速器結(jié)構(gòu)將能耗和硬件尺寸降至足以滿足互聯(lián)網(wǎng)應(yīng)用需求的程度。為了比較硬件尺寸、處理延遲和總能耗,使用設(shè)計(jì)編譯器合成工具和臺(tái)積電(TSMC)55nm標(biāo)準(zhǔn)單元實(shí)現(xiàn)倒數(shù)和符號(hào)數(shù)組這兩個(gè)除法器。倒數(shù)和符號(hào)數(shù)組進(jìn)行除法計(jì)算的比較,如表2所示。對(duì)于50MHz和100MHz的運(yùn)算時(shí)鐘,本文所提出的符號(hào)數(shù)組除法器比基于倒數(shù)的除法器分別降低了6.1倍和4.5倍。對(duì)于這兩個(gè)時(shí)鐘,符號(hào)數(shù)組除法器的處理延遲分別縮短了3.3倍和6倍。此外,與基于倒數(shù)的除法器相比,顯著降低了17.5~22.5倍的能耗。因此,在實(shí)現(xiàn)CNN 訓(xùn)練加速器的Softmax函數(shù)時(shí)選擇所提出的符號(hào)數(shù)組除法器。

表2 倒數(shù)和符號(hào)數(shù)組進(jìn)行除法計(jì)算的比較

3.2 浮點(diǎn)乘法器

與浮點(diǎn)加法器/減法器不同,浮點(diǎn)乘法器計(jì)算尾數(shù)和指數(shù)時(shí)不依賴于符號(hào)位。符號(hào)位通過兩個(gè)輸入XOR 門計(jì)算。加法器和補(bǔ)償器塊通過將兩個(gè)輸入數(shù)字的指數(shù)相加并從結(jié)果中減去偏移量“127”來計(jì)算得到的指數(shù)。如果計(jì)算的指數(shù)結(jié)果不在0和255之間,則視為上溢/下溢,并飽和到界限。即任何小于0的值(下溢)飽和為0,而大于255的值(上溢)飽和為255。通過兩個(gè)輸入尾數(shù)的整數(shù)乘法計(jì)算得到尾數(shù)輸出,使用指數(shù)值重新排列尾數(shù)位,然后合并生成最終的浮點(diǎn)格式。浮點(diǎn)乘法器的體系結(jié)構(gòu),如圖7所示。

圖7 浮點(diǎn)乘法器的體系結(jié)構(gòu)

3.3 CNN加速器的總體架構(gòu)

為了評(píng)估所提出的浮點(diǎn)運(yùn)算符的性能,本文設(shè)計(jì)了可支持兩種運(yùn)算模式的CNN 加速器,即推理和訓(xùn)練。加速器配備了用于發(fā)送圖像、濾波器、權(quán)重和控制信號(hào)的芯片外接口。CNN 加速器的總體架構(gòu),如圖8所示。其中,F(xiàn)C為全連接網(wǎng)絡(luò),dout為梯度,dW 為權(quán)重導(dǎo)數(shù)。

圖8 CNN 加速器的總體架構(gòu)

在發(fā)送大小為28×28 的MNIST 手寫數(shù)字圖像之前,通過芯片外接口將大小為3×3的4個(gè)濾波器、大小為196×10的FC1和大小為10×10的FC2的初始權(quán)重寫入芯片內(nèi)存儲(chǔ)器。接收到啟動(dòng)信號(hào)后,將訓(xùn)練圖像和濾波器權(quán)重傳遞給卷積模塊,并根據(jù)矩陣的點(diǎn)積計(jì)算卷積。最大池模塊通過在輸出特征數(shù)據(jù)的每個(gè)2×2子陣選擇最大值,對(duì)卷積模塊的輸出進(jìn)行下采樣。對(duì)FC1和FC2兩個(gè)全連通層進(jìn)行SoftMax運(yùn)算,將預(yù)測(cè)輸入圖像的分類作為推理結(jié)果。

在訓(xùn)練模式下,反向傳播按照CNN 層的倒序計(jì)算矩陣點(diǎn)積的梯度下降。Softmax層和反向傳播層也用于進(jìn)一步訓(xùn)練部分權(quán)重。從圖8可以看出,全連接層分為dout模塊和dW 模塊,其中,dout模塊用于計(jì)算梯度[23],dW 模塊用于計(jì)算權(quán)重導(dǎo)數(shù)[24]。由于反向卷積為最后一層,因此沒有dout模塊。通過反復(fù)計(jì)算dout和dW 來訓(xùn)練每個(gè)層的權(quán)重值,直至權(quán)重值達(dá)到所需的精度。經(jīng)過訓(xùn)練的權(quán)重存儲(chǔ)在各自的存儲(chǔ)器中,并用于訓(xùn)練過程的下一次迭代的推理。

3.4 CNN結(jié)構(gòu)優(yōu)化

為了找到最佳浮點(diǎn)格式來優(yōu)化CNN 體系結(jié)構(gòu),本文計(jì)算了不同精度格式的準(zhǔn)確率和動(dòng)態(tài)功率,從而找到具有合理精度的浮點(diǎn),如表3所示。

表3 不同精度格式的準(zhǔn)確率和動(dòng)態(tài)功率

本文選擇93%的目標(biāo)準(zhǔn)確率,盡管自定義-24 格式滿足93%的準(zhǔn)確率閾值,但其動(dòng)態(tài)功率為30mW,比單精度-16浮點(diǎn)格式高58%。因此,在滿足目標(biāo)準(zhǔn)確率的同時(shí),搜索各個(gè)層的最佳浮點(diǎn)格式來實(shí)現(xiàn)最小的能耗。本文中設(shè)置為單精度-16的初始浮點(diǎn)格式計(jì)算準(zhǔn)確率,將指數(shù)逐漸增加1bit,直至準(zhǔn)確率停止增加或開始降低。因此,在第k次迭代中,指數(shù)位增加,而隨著尾數(shù)位的減少,整體數(shù)據(jù)寬度(DW)保持不變。在確定指數(shù)位寬度后,算法使用新的浮點(diǎn)數(shù)據(jù)格式計(jì)算性能指標(biāo)(準(zhǔn)確率和能耗)。在本文實(shí)驗(yàn)中,發(fā)現(xiàn)尾數(shù)優(yōu)化之前的新浮點(diǎn)格式為(Sign,Exp,DW-Exp-1),DW=16bit,Exp=8,尾數(shù)=16-8-1=7bit。通過逐漸將尾數(shù)增加1bit對(duì)每層的精確度格式進(jìn)行優(yōu)化,直至當(dāng)前DW 滿足目標(biāo)準(zhǔn)確率。當(dāng)所有層在滿足目標(biāo)準(zhǔn)確率的同時(shí)以最小能耗進(jìn)行優(yōu)化時(shí),將為所有層存儲(chǔ)最佳格式的組合。然后,將所有層的DW 增加1bit,重復(fù)上述過程來搜索其他最佳格式,直至DW 達(dá)到最大數(shù)據(jù)寬度(MAX DW),本文實(shí)驗(yàn)中DW 設(shè)置為32bit。完成上述搜索過程后,將比較所有搜索結(jié)果的準(zhǔn)確率和功率,在保持目標(biāo)準(zhǔn)確率的情況下,確定功率最小的格式構(gòu)建最佳組合。

4 實(shí)驗(yàn)分析

4.1 浮點(diǎn)運(yùn)算符的比較

使用Synopsys軟件設(shè)計(jì)編譯器對(duì)不同格式的比較進(jìn)行了評(píng)估,編譯器可以將HDL設(shè)計(jì)合成為SoC數(shù)字電路。使用臺(tái)積電(TSMC)55nm 工藝技術(shù)和100 MHz的固定頻率進(jìn)行評(píng)估。不同位寬的浮點(diǎn)加法器和減法器的比較,如表4所示。

表4 不同位寬的浮點(diǎn)加法器和減法器的比較

由表4可見,浮點(diǎn)加法器/減法器運(yùn)算的位數(shù)越少,硬件尺寸或能耗就越小。每個(gè)位寬的浮點(diǎn)格式由N(S,E,M)表示,其中N為總位數(shù),S為符號(hào)位,E為指數(shù),M為尾數(shù)。使用不同位寬的浮點(diǎn)乘法器的比較,如表5所示。

表5 不同位寬的浮點(diǎn)乘法器的比較

由表5可見,浮點(diǎn)乘法器運(yùn)算的位數(shù)越少,硬件尺寸和能耗就越小。與加法器/減法器不同,乘法器能耗大幅增加。使用不同位寬的浮點(diǎn)除法器的比較,如表6所示。

表6 不同位寬的浮點(diǎn)除法器的比較

由表6可見,與其他運(yùn)算符相比,浮點(diǎn)除法器運(yùn)算延遲時(shí)間是恒定的,但浮點(diǎn)除法運(yùn)算的位數(shù)越少,硬件尺寸和能耗就越小。

4.2 CNN訓(xùn)練加速器的性能評(píng)估

本文所提出的CNN 訓(xùn)練加速器使用Verilog在寄存器傳輸級(jí)設(shè)計(jì)中實(shí)現(xiàn),并使用Vivado Verilog模擬器進(jìn)行驗(yàn)證。確認(rèn)結(jié)果后在現(xiàn)場(chǎng)可編程門陣列(FPGA)上實(shí)現(xiàn)了加速器,并針對(duì)50 K 圖像訓(xùn)練了所有測(cè)試用例模型。訓(xùn)練后,通過將MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集中的10K 測(cè)試圖像用于訓(xùn)練模型來計(jì)算推理準(zhǔn)確率。

表7給出了優(yōu)化算法找到的幾個(gè)突出的格式組合搜索結(jié)果。在格式組合中,混合卷積-24選為準(zhǔn)確率和功率方面最優(yōu)的格式組合。這種格式組合在卷積層(正向和反向傳播)中使用24bit格式,同時(shí)為池、FC1、FC2和Soft-Max層(正向和反向傳播)分配16bit格式。

表7 不同精度格式下優(yōu)化算法準(zhǔn)確率和動(dòng)態(tài)功率的比較

4.3 優(yōu)化架構(gòu)比較

為了驗(yàn)證本文提出的浮點(diǎn)運(yùn)算優(yōu)化架構(gòu)比現(xiàn)有FGPA加速器大幅減少硬件資源,利用MNIST 手寫數(shù)字?jǐn)?shù)據(jù)集,將本文的最優(yōu)架構(gòu)(混合卷積-24)與文獻(xiàn)[25]使用的傳統(tǒng)CNN、文獻(xiàn)[26]采用滑動(dòng)濾波器進(jìn)行CNN 和乘與積(MAC)的并行運(yùn)算、文獻(xiàn)[27]提出的基于Spike網(wǎng)絡(luò)加速器的CNN 等方法進(jìn)行比較,如表8所示。

表8 優(yōu)化架構(gòu)比較

由表8可見,在本文的最優(yōu)架構(gòu)(混合卷積-24)加速器中,每幅圖像的能耗僅為8.5μJ,每幅圖像的能耗分別比傳統(tǒng)CNN 方法、CNN+MAC 方法和Spike+CNN 方法低1 140、81和555倍。

5 結(jié)束語

本文評(píng)估了不同的浮點(diǎn)格式并優(yōu)化了CNN 訓(xùn)練中的浮點(diǎn)運(yùn)算符,在高達(dá)100 MHz的頻率下增加了吞吐量。使用MNIST手寫數(shù)字?jǐn)?shù)據(jù)集進(jìn)行評(píng)估,使用混合精度體系結(jié)構(gòu)實(shí)現(xiàn)了93%以上的準(zhǔn)確率,并且每幅圖像的能耗僅為8.5 μJ,比其他方法顯著地降低了能耗。由于加速器僅需55nm芯片即可實(shí)現(xiàn)低能耗和高精度,因此,本文設(shè)計(jì)的加速器適用于現(xiàn)實(shí)AI應(yīng)用。在未來的研究中,嘗試在CNN 加速器中添加8bit配置,使其更進(jìn)一步降低能耗。

猜你喜歡
浮點(diǎn)尾數(shù)加速器
輪滑加速器
化學(xué)工業(yè)的“加速器”
“改寫”與“省略”三不同
LEO星座增強(qiáng)GNSS PPP模糊度浮點(diǎn)解與固定解性能評(píng)估
全民小康路上的“加速器”
連續(xù)自然數(shù)及乘積的尾數(shù)和奇偶性的分析
基于浮點(diǎn)DSP的鐵路FSK信號(hào)檢測(cè)
2019年度下半年《啟迪與智慧》上下半月刊、《幽默與笑話》上下半月刊、《拳擊與格斗》上半月刊抽大獎(jiǎng)中獎(jiǎng)結(jié)果
等待“加速器”
基于FPGA的浮點(diǎn)FIR濾波器設(shè)計(jì)
枝江市| 云浮市| 凌云县| 松阳县| 疏附县| 南丹县| 广平县| 普陀区| 山东省| 隆安县| 修武县| 克东县| 晋州市| 嘉荫县| 拜泉县| 柳林县| 拜城县| 纳雍县| 广州市| 化德县| 大化| 枣阳市| 沙河市| 阳春市| 昔阳县| 阜城县| 江陵县| 尉犁县| 武义县| 红原县| 宽甸| 宁安市| 济南市| 柘城县| 宝丰县| 新蔡县| 普格县| 璧山县| 建德市| 石楼县| 子长县|