摘 要:針對RRAM單元制造工藝不完善造成神經(jīng)網(wǎng)絡(luò)矩陣向量乘法計算錯誤問題,根據(jù)RRAM陣列多缺陷特性進(jìn)行建模,提出了多缺陷容忍算法。首先根據(jù)RRAM陣列常見的轉(zhuǎn)變?nèi)毕莺驼尺B缺陷對神經(jīng)網(wǎng)絡(luò)計算準(zhǔn)確度的影響,對兩種缺陷統(tǒng)一建模;然后對神經(jīng)網(wǎng)絡(luò)進(jìn)行劃分,基于改進(jìn)的知識蒸餾方式進(jìn)行分區(qū)訓(xùn)練;最后選擇適配的損失函數(shù)加入歸一化層,進(jìn)一步優(yōu)化算法。在MNIST和Cifar-10數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),結(jié)果表明該方法在多個神經(jīng)網(wǎng)絡(luò)上能夠得到98%以上的恢復(fù)率,說明該方法可有效降低RRAM陣列多缺陷對神經(jīng)網(wǎng)絡(luò)計算準(zhǔn)確度的影響。
關(guān)鍵詞:RRAM陣列; 缺陷容忍; 神經(jīng)網(wǎng)絡(luò); 知識蒸餾
中圖分類號:TP391.7 文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2024)10-026-3068-05
doi:10.19734/j.issn.1001-3695.2024.01.0046
Partition retraining based multi-fault tolerance algorithm for RRAM crossbar
Wang Mengke, Yang Zhaohui, Zha Xiaojing, Xia Yinshui
(Faculty of Electrical Engineering & Computer Science, Ningbo University, Ningbo Zhejiang 315211, China)
Abstract:To address the issue of calculation errors in neural network matrix-vector multiplication caused by manufacturing processes of RRAM cells, this paper modeled the characteristics of multiple faults in RRAM crossbar arrays and proposed a multi-fault tolerant algorithm. Firstly, it modeled the impacts of common transition fault and stuck at fault in RRAM crossbar arrays on the accuracy of neural network computations. Secondly, it partitioned the neural network and conducted partitioned training based on an improved knowledge distillation method. Lastly, it further optimized the algorithm by selecting an appropriate loss function and incorporating normalization layers. Experimental results on the MNIST and Cifar-10 datasets demonstrate that the proposed method can achieve a recovery rate of over 98% across multiple neural networks, indicating its effectiveness in mitigating the impact of multiple faults in RRAM crossbar arrays on the accuracy of neural network computations.
Key words:RRAM crossbar; fault tolerance; neural network; knowledge distillation
0 引言
深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)在解決復(fù)雜的機(jī)器學(xué)習(xí)問題方面具有良好的性能,目前已經(jīng)研究了許多DNN加速器架構(gòu)[1,2]。阻變式存儲器(resistive random access memory,RRAM)憑借擦寫速度快、耐久性強(qiáng)和非易失性[3]等優(yōu)勢,通過結(jié)合納米交叉陣列結(jié)構(gòu)可以快速進(jìn)行列電流求和,從而并行實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)矩陣向量乘法(matrix vector multiplication,MVM)計算,因而在DNN加速器設(shè)計方面具有重要地位。
在加速器設(shè)計中,神經(jīng)網(wǎng)絡(luò)的權(quán)值對應(yīng)為RRAM的電導(dǎo)值,通過網(wǎng)絡(luò)權(quán)重與RRAM陣列的一對一映射,實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的硬件部署。然而,由于不成熟的納米級制造技術(shù)和RRAM固有非線性特性,RRAM陣列通常會遭受嚴(yán)重的粘連缺陷(stuck at fault,SAF)和轉(zhuǎn)變?nèi)毕荩╰ransition fault,TF),這將永久或暫時改變RRAM內(nèi)存儲的權(quán)值狀態(tài),從而導(dǎo)致錯誤的硬件計算結(jié)果[4]。RRAM中SAF和TF的出現(xiàn)會降低神經(jīng)網(wǎng)絡(luò)硬件部署的可靠性,成為神經(jīng)網(wǎng)絡(luò)加速設(shè)計中的重要瓶頸問題[5]。所以,如何解決此問題已經(jīng)成為基于RRAM的DNN加速器設(shè)計的主要關(guān)注點(diǎn)之一。
現(xiàn)有研究主要從三個方面針對SAF的容忍進(jìn)行設(shè)計:再訓(xùn)練[6~9]、修正[10,11]、重映射[11,12]。再訓(xùn)練是指基于SAF缺陷分布圖使用梯度下降算法再次訓(xùn)練DNN,使得再訓(xùn)練后的DNN部分權(quán)值固定為常數(shù),以滿足硬件缺陷特性。再訓(xùn)練方法需要兩個基礎(chǔ)數(shù)據(jù):缺陷分布圖[13,14]和訓(xùn)練數(shù)據(jù)集,分為在線訓(xùn)練和離線訓(xùn)練兩種形式[15~17]。其中在線訓(xùn)練是指在設(shè)備上進(jìn)行實(shí)時訓(xùn)練,根據(jù)缺陷變化可靈活進(jìn)行訓(xùn)練,但訓(xùn)練過程需要頻繁進(jìn)行讀寫操作,對設(shè)備損耗很大;離線訓(xùn)練根據(jù)缺陷分布圖在計算機(jī)上進(jìn)行再訓(xùn)練之后映射到設(shè)備上使用,訓(xùn)練時不消耗硬件資源,靈活可控,易于操作,但訓(xùn)練結(jié)果不能根據(jù)阻值變化實(shí)時改變,泛化性較低。Charan等人[6]提出了基于知識蒸餾(knowledge distillation,KD)的再訓(xùn)練算法。該方法采用在線訓(xùn)練形式,使用師生模型,通過學(xué)生模型向教師模型逐次逼近實(shí)現(xiàn)性能恢復(fù)。但只針對輸出結(jié)果進(jìn)行再訓(xùn)練,對缺陷容忍不能達(dá)到很好的效果。Li等人[9]提出一種對抗性實(shí)例缺陷檢測方法,在KD的基礎(chǔ)上在線訓(xùn)練進(jìn)行缺陷容忍,但是適用的電路規(guī)模較小。
修正是一類通過增加冗余硬件資源來恢復(fù)計算準(zhǔn)確度的方法。He等人[10]提出了一種增加冗余列來替換出現(xiàn)SAF缺陷較多的列來進(jìn)行修正的方法,可以得到較好的精度恢復(fù),但是此類方法只針對SAF缺陷進(jìn)行容忍,而且冗余列的MVM操作提高了計算成本,增加的數(shù)字硬件模塊導(dǎo)致了額外的硬件開銷[5,11]。
重映射方法主要通過對DNN權(quán)值矩陣進(jìn)行行列置換再重新映射于RRAM陣列中,從而避免把對計算準(zhǔn)確度影響較大的權(quán)值映射于缺陷RRAM上,以此來降低缺陷對計算準(zhǔn)確度的影響。矩陣置換[11]是使用重塑矩陣來降低缺陷對計算準(zhǔn)確度影響的方法,使缺陷位置的值盡可能與缺陷值相匹配。此類方法需要不斷檢測缺陷RRAM的阻值與權(quán)值是否匹配,隨著網(wǎng)絡(luò)規(guī)模的增加,為了尋找最合適的匹配方式,需要消耗大量時間,嚴(yán)重影響計算效率。
綜上所述,雖然已經(jīng)有許多針對不同缺陷的容忍方法,但這些方法要么只針對SAF缺陷,要么求解規(guī)模有限,缺乏同時針對多種缺陷、綜合考量資源消耗和恢復(fù)效果的容忍方法。其中,再訓(xùn)練算法憑借硬件友好特性和離線高效訓(xùn)練能力,成為容忍缺陷的有效途徑。RRAM陣列的多缺陷容忍問題,核心在于縮小神經(jīng)網(wǎng)絡(luò)理想權(quán)值與RRAM陣列實(shí)際阻值的差異,該思想與知識蒸餾的“參考教師模型訓(xùn)練學(xué)生模型”模式本質(zhì)相同,因此本文結(jié)合知識蒸餾方法,提出基于再訓(xùn)練的多缺陷統(tǒng)一容錯方法。通過對SAF和TF缺陷統(tǒng)一建模,擴(kuò)展再訓(xùn)練算法的適用范圍;結(jié)合知識蒸餾方法,提出神經(jīng)網(wǎng)絡(luò)模型分塊訓(xùn)練思想,通過模型中間特征的有效提取,提升網(wǎng)絡(luò)模型對硬件陣列缺陷特性的泛化容忍能力;最后通過加速再訓(xùn)練反向傳播過程,提升網(wǎng)絡(luò)模型收斂速度。本文的主要貢獻(xiàn)為:
a)通過一一對應(yīng)的映射關(guān)系,將RRAM陣列的缺陷信息反映為待映射網(wǎng)絡(luò)模型特征,基于再訓(xùn)練架構(gòu)用學(xué)生模型擬合教師模型來進(jìn)行多缺陷容錯;
b)通過修改網(wǎng)絡(luò)結(jié)構(gòu)和分區(qū)訓(xùn)練加快網(wǎng)絡(luò)收斂速度,獲得更好的容錯效果。
1 研究背景
1.1 RRAM單元基礎(chǔ)
RRAM是一種新興的非易失性存儲器,又稱為憶阻器[3,18]。如圖1(a)所示,RRAM單元為無源雙極性器件,通常采用金屬-絕緣體-金屬結(jié)構(gòu)。從圖1(b)可以看出,RRAM的阻值在一定電壓范圍內(nèi)不會改變,此特性可使其用于模擬近似計算[19,20]。RRAM的另一個特性是,即使在移除電源后也能夠保持其電阻狀態(tài)。利用RRAM的電阻開關(guān)特性,研究人員探索了其在存內(nèi)計算方面的潛力。利用歐姆定律和基爾霍夫電流定律,基于RRAM的交叉陣列可有效執(zhí)行復(fù)雜的MVM計算,從而消除傳統(tǒng)計算架構(gòu)中需要多次訪問計算和存儲元件所帶來的能耗瓶頸問題。圖1(c)表示在神經(jīng)網(wǎng)絡(luò)計算過程中權(quán)重矩陣與RRAM單元的一一對應(yīng)關(guān)系。交叉陣列的輸入是字線電壓,卷積層和全連接層乘法運(yùn)算的輸出結(jié)果是位線讀取的總電流[6],可表示為
I(j)=∑N-1i=1G(j,k)·V(j)(1)
其中:V∈(j=1,…,N-1)是輸入到字線的電壓矢量;G表示RRAM參數(shù)的電導(dǎo)矩陣;I為每列的總電流,對應(yīng)神經(jīng)元的輸出結(jié)果。
1.2 知識蒸餾算法
深度神經(jīng)網(wǎng)絡(luò)模型計算復(fù)雜性高、存儲需求大,部署在資源有限的設(shè)備上是一個挑戰(zhàn)。作為模型壓縮和加速的代表類型,知識蒸餾是一種基于“教師-學(xué)生模式”的網(wǎng)絡(luò)模型再訓(xùn)練方法,主要思想是在高計算復(fù)雜度的教師模型指導(dǎo)下用結(jié)構(gòu)較簡單的學(xué)生模型主動擬合,即以有限的計算準(zhǔn)確度為代價完成大型神經(jīng)網(wǎng)絡(luò)模型向小型網(wǎng)絡(luò)模型的壓縮和加速,從而改善硬件部署難度問題[21,22]。知識蒸餾的關(guān)鍵在于“知識”的設(shè)計、提取和遷移方式的選擇[23]。原始知識蒸餾中信息的傳遞只依賴于模型的輸出,當(dāng)模型結(jié)構(gòu)變深,需要傳遞教師模型中更多的“知識”。而中間特征是在網(wǎng)絡(luò)中間層輸出的特征圖中表達(dá)的信息,可彌補(bǔ)輸出層知識信息單一的不足。
基于中間特征的知識蒸餾以最小化蒸餾損失為目標(biāo)來訓(xùn)練學(xué)生模型。蒸餾損失函數(shù)用數(shù)學(xué)公式表示為
LKD=‖ft(x;Wt)-fs(x;Ws)‖F(xiàn)(2)
其中:ft和fs分別為教師和學(xué)生模型;x是中間層輸入的特征;Wt和Ws為教師和學(xué)生模型的中間層參數(shù),即權(quán)重信息;F為范數(shù)值,表示損失函數(shù)的具體實(shí)現(xiàn)形式。
1.3 RRAM交叉陣列的非理想效果
電路缺陷是發(fā)生在器件的制造或操作過程中,引發(fā)實(shí)際硬件產(chǎn)生與預(yù)期理想性能不符的異?,F(xiàn)象[14]。根據(jù)交叉陣列中缺陷的性質(zhì),對可能發(fā)生的最常見缺陷類型進(jìn)行分類,總結(jié)如下[24]:
a)粘連缺陷(SAF):由可變的氧化層厚度產(chǎn)生,憶阻器的阻值固定且不能改變[24]。SAF有SAL(stuck at low)和SAH(stuck at high)兩種情況,表示阻值呈低阻態(tài)或高阻態(tài)。
b)轉(zhuǎn)變?nèi)毕荩═F):由不規(guī)則的摻雜變化和器件內(nèi)部結(jié)構(gòu)間磨損引起,可能會阻止憶阻器變化到理想狀態(tài)[24]。TF有慢寫缺陷(slow write fault)和快寫缺陷(fast write fault)有兩種情況,表示阻值低于或高于理想阻值。
c)地址解碼器缺陷(address decoder fault,ADF):由開放缺陷引起,導(dǎo)致交叉陣列的行/列合并在一起,訪問到不需要的單元[24]。
實(shí)驗(yàn)結(jié)果表明[14,24],基于憶阻器的RRAM陣列有約30%的缺陷,其中TF約為14%,SAF約10%,ADF約3%,其他缺陷約3%。由此可見,RRAM陣列中TF和SAF是影響計算的兩類主要缺陷,其中兩類缺陷對矩陣向量乘法計算的影響如圖2所示。理想情況下,輸入為1時,矩陣的輸出結(jié)果分別為1.7和1.9。映射到RRAM陣列上,紅色位置表示缺陷SAF為1時阻值由0.5固定為1;藍(lán)色位置表示缺陷SAF為0時阻值由0.6固定為0;黃色位置表示發(fā)生TF時阻值由0.8波動到0.9,矩陣的輸出結(jié)果變?yōu)?.3和1.3(參見電子版)。由此可見,在進(jìn)行矩陣向量乘法計算時,SAF和TF缺陷會使計算結(jié)果產(chǎn)生較大偏差。
2 基于分區(qū)再訓(xùn)練的缺陷容忍
由于RRAM單元本身的制造缺陷,RRAM交叉陣列在進(jìn)行神經(jīng)網(wǎng)絡(luò)的矩陣向量乘法計算時,會產(chǎn)生計算錯誤導(dǎo)致神經(jīng)網(wǎng)絡(luò)的計算準(zhǔn)確度嚴(yán)重受損。為此,將缺陷映射在RRAM陣列對應(yīng)位置上,通過離線再訓(xùn)練的方式增加RRAM的容錯能力,從而提高神經(jīng)網(wǎng)絡(luò)的計算準(zhǔn)確度。
2.1 缺陷數(shù)字化建模
綜合考慮兩種缺陷對RRAM陣列計算的影響,在缺陷已知的情況下對兩種缺陷進(jìn)行建模。分析SAF和TF在RRAM陣列計算時的表現(xiàn),兩種缺陷對RRAM陣列阻值的影響本質(zhì)上是一致的,即在計算時,實(shí)際權(quán)值會固定在某一數(shù)值上。因此,只要確定了數(shù)值轉(zhuǎn)變的規(guī)則,就能實(shí)現(xiàn)統(tǒng)一建模,也能實(shí)現(xiàn)物理特性在網(wǎng)絡(luò)模型上的反應(yīng)?;诖?,為方便表述,對RRAM單元的阻值歸一化,然后針對TF和SAF的缺陷特性進(jìn)行建模。其中TF缺陷表示為在理想權(quán)值的基礎(chǔ)上增添一個隨機(jī)噪聲進(jìn)行模擬,噪聲服從對數(shù)正態(tài)分布,eθ表示發(fā)生缺陷RRAM單元的阻值波動范圍,其中N(0,σ2)表示θ服從均值為0,方差為σ2的正態(tài)分布,σ一般為0.1~0.5[25]。發(fā)生SAF缺陷的RRAM單元處于開路或者短路狀態(tài),其阻值固定在0/1上。基于上述分析,可建立如下公式表示缺陷環(huán)境下阻值與理想環(huán)境下阻值間的關(guān)系:
Ractual=Rideal F=0
Rideal×eθ,θ~N(0,σ2)F=11F=20F=3(3)
其中:Ractual表示RRAM陣列的實(shí)際阻值;Rideal表示理想阻值;F用于判斷缺陷類型,當(dāng)F=0時,表示RRAM器件處于無缺陷狀態(tài);當(dāng)F=1時,表示RRAM器件存在TF缺陷;當(dāng)F=2時,表示RRAM器件存在SAF為1的缺陷;當(dāng)F=3時,表示RRAM器件存在SAF為0缺陷。本文通過對缺陷特性的統(tǒng)一建模,以便后期進(jìn)行多缺陷的統(tǒng)一容錯設(shè)計。
2.2 算法框架
鑒于傳統(tǒng)的知識蒸餾訓(xùn)練方法,只能根據(jù)最后的輸出結(jié)果進(jìn)行反向傳播,隨著網(wǎng)絡(luò)結(jié)構(gòu)變得更加復(fù)雜,中間特征的缺失使得訓(xùn)練模型無法獲得良好的擬合效果,實(shí)現(xiàn)缺陷容忍在網(wǎng)絡(luò)模型上的有效反應(yīng)。因此,本文在傳統(tǒng)知識蒸餾方法的基礎(chǔ)上,主張利用中間特征信息實(shí)現(xiàn)再訓(xùn)練過程。根據(jù)結(jié)構(gòu)對模型進(jìn)行劃分,逐層提取理想模型的中間特征信息,從而提高缺陷模型的容錯能力。本文算法的總框架如圖3所示,其中紅色框和藍(lán)色框表示教師模型和學(xué)生模型分區(qū)后的區(qū)塊;紅色層和藍(lán)色層表示教師模型和學(xué)生模型中的卷積層,黃色層表示進(jìn)行歸一化處理的批歸一化(batch normalization,BN)層(參見電子版);Li表示第i區(qū)塊教師模型與學(xué)生模型損失函數(shù)。再訓(xùn)練算法以改進(jìn)的知識蒸餾為基礎(chǔ),建立無缺陷教師模型和有缺陷學(xué)生模型。首先將模型按照網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行劃分,便于提取模型的中間特征;然后在塊間以掩碼方式進(jìn)行反向傳播訓(xùn)練,區(qū)塊間的訓(xùn)練使用Huber損失函數(shù)作為蒸餾損失,可以在缺陷率較大的情況下保證模型收斂;最后通過訓(xùn)練得到可以容忍多種缺陷的模型。與傳統(tǒng)以大模型訓(xùn)練小模型的基于中間特征的知識蒸餾不同,本文學(xué)生模型的結(jié)構(gòu)與教師模型相同。
再訓(xùn)練的目標(biāo)是最小化教師模型與學(xué)生模型對應(yīng)區(qū)塊的輸出差異,其目標(biāo)函數(shù)可以表示為
minWsΔ(Bs,Bt)(4)
其中:Bs和Bt分別表示學(xué)生模型和教師模型對應(yīng)區(qū)塊的輸出層參數(shù);Ws表示學(xué)生模型的權(quán)重。
2.2.1 網(wǎng)絡(luò)劃分
隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)結(jié)構(gòu)越來越復(fù)雜,需要訓(xùn)練的數(shù)據(jù)也成倍增加。傳統(tǒng)的再訓(xùn)練算法是在提取硬件缺陷圖的前提下進(jìn)行整個網(wǎng)絡(luò)的前向傳播,訓(xùn)練過程中網(wǎng)絡(luò)數(shù)據(jù)在缺陷的影響下發(fā)生偏差,偏差量逐級累積,從而造成損失函數(shù)不穩(wěn)定,惡化反向傳播的數(shù)據(jù)更新能力,影響再訓(xùn)練效果。從提高損失函數(shù)穩(wěn)定性的角度,需要將數(shù)據(jù)偏差控制在一定范圍內(nèi)。為此,本文基于“分治”思想,將神經(jīng)網(wǎng)絡(luò)根據(jù)其網(wǎng)絡(luò)結(jié)構(gòu)特性進(jìn)行劃分,在保證獲取中間特征的前提下,通過局部訓(xùn)練的方式來控制網(wǎng)絡(luò)在硬件缺陷作用下的累積數(shù)據(jù)偏差量。部分網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,表中[3×3,64]表示當(dāng)前層級使用[3×3]的卷積核,輸出通道數(shù)為64。鑒于神經(jīng)網(wǎng)絡(luò)的通道數(shù)會影響網(wǎng)絡(luò)復(fù)雜度和數(shù)據(jù)量[26],其中,通道數(shù)相同的層級捕獲特征的能力近似,因此本文主張將通道數(shù)相同的層級劃分為同一個區(qū)塊。根據(jù)上述分析,可按照式(5)明確當(dāng)前卷積層所屬的區(qū)塊編號:
k=logC/f2(5)
其中:k表示當(dāng)前卷積層所屬的區(qū)塊編號;C表示當(dāng)前輸出通道數(shù);f表示第一層的輸出通道數(shù),全連接層與最后一塊合并進(jìn)行計算。以ResNet18為例,第一層的輸出通道數(shù)為64,在Conv4層級中輸出通道數(shù)為256,根據(jù)式(5)的計算,此層級的4個卷積層都屬于第2個區(qū)塊。
2.2.2 掩碼訓(xùn)練
本文中采用離線方式進(jìn)行學(xué)生模型訓(xùn)練,DNN本身具有自我恢復(fù)能力,可以從損壞的權(quán)重中重新訓(xùn)練,應(yīng)用反向傳播算法,可以通過迭代訓(xùn)練自適應(yīng)缺陷[27]。權(quán)值的更新過程用←表示:
Wi←Wi-η L Wi(6)
其中:L為損失函數(shù);η為學(xué)習(xí)率;Wi為神經(jīng)網(wǎng)絡(luò)的權(quán)值。為了減少SAF和TF缺陷造成的性能下降,在模型訓(xùn)練階段對缺陷位置的值進(jìn)行屏蔽,具體來說,權(quán)值更新過程可以描述為
Wi←Mask(Wi-η E Wi)(7)
根據(jù)缺陷分布,Mask函數(shù)用于在訓(xùn)練階段將有SAF缺陷的RRAM固定,將有TF缺陷的RRAM根據(jù)噪聲波動改變到其對應(yīng)值。假設(shè)RRAM上包含SAF和TF缺陷,為保證再訓(xùn)練階段能夠容忍權(quán)重變化,對有缺陷的RRAM單元進(jìn)行掩碼,權(quán)值更新情況如圖4所示,根據(jù)缺陷分布獲得缺陷類型及位置,將缺陷位置的權(quán)重值固定后,更新無缺陷位置的權(quán)重值來容忍缺陷。
2.3 算法優(yōu)化
為了進(jìn)一步優(yōu)化離線再訓(xùn)練的恢復(fù)精度,對神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行調(diào)整,在卷積層后加入歸一化層,并采取Huber損失函數(shù)作為再訓(xùn)練的蒸餾損失。
2.3.1 歸一化層
批歸一化應(yīng)用于每個卷積層之后,將每層的輸出x進(jìn)行如式(8)的變換處理。由文獻(xiàn)[28]可知,BN層可以減少內(nèi)部變量的移位問題,并被廣泛應(yīng)用于提高訓(xùn)練性能。由式(8)可以看出,BN層有5個參數(shù),其中ε參數(shù)僅在訓(xùn)練期間更新。(μ,σ)是前向傳播階段更新的每批輸入統(tǒng)計數(shù)據(jù),(β,γ)是在反向傳播階段通過梯度下降更新。為了進(jìn)行推斷,通常用常數(shù)值替換μ、σ。本文將BN層設(shè)置為服從均值μ為0,方差σ為1的標(biāo)準(zhǔn)正態(tài)分布,將卷積層的輸出進(jìn)行歸一化處理,可使梯度變大,避免梯度消失問題。
y=γ(x-μσ2+ε)+β(8)
2.3.2 損失函數(shù)
機(jī)器學(xué)習(xí)中的所有算法都需要最大化或最小化目標(biāo)函數(shù)。一般把最小化的一類函數(shù)稱為損失函數(shù)。損失函數(shù)大致可以分為兩類:分類問題的損失函數(shù)和回歸問題的損失函數(shù)。本文中最小化教師模型與學(xué)生模型的塊間輸出,本質(zhì)上是回歸問題,常用的損失函數(shù)有平均絕對值誤差(MAE)、均方誤差(MSE)和Huber損失函數(shù)。三種損失函數(shù)的表達(dá)式如下:
MAE=∑ni=1|yi-f(x)|,
MSE=∑ni=1(yi-f(x))2(9)
Huber = 12(yi-f(x))2 yi-f(x)≤δ
δyi-f(x)-12δ2otherwise(10)
其中:yi表示真實(shí)值; f(x)是目標(biāo)值;超參數(shù)δ表示臨界選擇條件。比較三種損失函數(shù)的表達(dá)式可以看出:MAE是真實(shí)值與目標(biāo)值之差的絕對值之和,在處理異常數(shù)據(jù)時有更好的魯棒性,但它的梯度為定值,容易錯過最優(yōu)解,求解效率低;MSE對誤差取了平方,放大了誤差,與MAE相比,MSE對異常值更敏感,得到的模型會更加精確,但魯棒性不夠好;Huber結(jié)合了MAE與MSE的優(yōu)點(diǎn),使模型對異常數(shù)據(jù)敏感的同時也能夠具有較好的魯棒性,MSE與MAE的臨界值由δ控制。考慮到所處理對象缺陷比率較大,本文采用Huber函數(shù)作為塊間損失函數(shù),δ取值為1。損失函數(shù)表示為
L=1c·w·hHuber(11)
為了讓每一塊的權(quán)重更新都能根據(jù)對應(yīng)區(qū)塊的通道數(shù)和通道大小獲得一個合適的損失函數(shù),這里對區(qū)塊的損失函數(shù)進(jìn)行了數(shù)據(jù)處理,c、w、h分別表示通道數(shù)、區(qū)塊輸出寬和高。為了保證每個區(qū)塊學(xué)生模型的穩(wěn)定性,區(qū)塊的訓(xùn)練是獨(dú)立的,前一個區(qū)塊的輸出作為下一個區(qū)塊的輸入,區(qū)塊內(nèi)部使用反向傳播進(jìn)行訓(xùn)練。
2.4 算法實(shí)現(xiàn)
所提出的分區(qū)再訓(xùn)練算法的偽代碼如算法1所示,輸入為數(shù)據(jù)集和缺陷信息,輸出為訓(xùn)練好的學(xué)生模型。首先根據(jù)式(5)的劃分方法對模型進(jìn)行劃分,逐層確定卷積層所屬區(qū)塊,對應(yīng)步驟a);然后進(jìn)行前向傳播訓(xùn)練并根據(jù)式(8)對卷積層進(jìn)行歸一化處理,獲得理想情況下的無缺陷模型即教師模型,并獲得教師模型各區(qū)塊的輸出,對應(yīng)步驟b);根據(jù)式(3)的建模方法對教師模型添加缺陷信息獲得學(xué)生模型,對應(yīng)步驟c);根據(jù)式(12)進(jìn)行反向傳播訓(xùn)練并更新權(quán)重,對應(yīng)步驟d);重復(fù)執(zhí)行Z次步驟d),最后獲得訓(xùn)練好的學(xué)生模型即容錯模型,對應(yīng)步驟e)。
算法1 基于分區(qū)的多缺陷容忍算法
輸入:數(shù)據(jù)集,缺陷信息。
輸出:訓(xùn)練好的學(xué)生模型。
a)根據(jù)式(5)逐層確定卷積層所屬區(qū)塊。
b)進(jìn)行前向傳播訓(xùn)練并根據(jù)式(8)進(jìn)行歸一化處理,獲得教師模型。
c)根據(jù)式(3)對教師模型添加缺陷信息獲得學(xué)生模型。
d)根據(jù)式(12)計算區(qū)塊損失進(jìn)行反向傳播訓(xùn)練并更新權(quán)重。
e)重復(fù)執(zhí)行Z次步驟d)獲得訓(xùn)練好的學(xué)生模型。
3 實(shí)驗(yàn)結(jié)果
3.1 數(shù)據(jù)集和實(shí)驗(yàn)設(shè)置
本文方法在Linux系統(tǒng),配置為GeForce RTX 3090 GPU的VMware環(huán)境下,用PyTorch機(jī)器學(xué)習(xí)框架實(shí)現(xiàn)DNN模型,使用MNIST和Cifar-10數(shù)據(jù)集來驗(yàn)證有效性。借鑒文獻(xiàn)[24]的數(shù)據(jù),在SAF和TF同時存在的情況下,缺陷率設(shè)置為25.03%,其中TF為14.24%,SA1為9.04%,SA0為1.75%。TF的波動值σ設(shè)置為0.2。在僅有SAF的情況下,缺陷率設(shè)置與對比文獻(xiàn)[6,9]一致。使用Adam優(yōu)化器,訓(xùn)練輪次Z為20,學(xué)習(xí)率為0.001。在相同的缺陷環(huán)境下,將本文方法與同樣采用知識蒸餾框架的文獻(xiàn)[6,9]進(jìn)行比較,通過比較不同算法下神經(jīng)網(wǎng)絡(luò)的恢復(fù)效果,證明本文的網(wǎng)絡(luò)劃分和算法優(yōu)化的有效性。
3.2 結(jié)果分析
為了更好地對比不同方法的恢復(fù)效果,本文采用恢復(fù)百分比來比較各種方法的有效性,如式(13)所示,其中Rrecover表示訓(xùn)練后的測試準(zhǔn)確率,Rideal表示理想情況下的測試準(zhǔn)確率。由于訓(xùn)練是一個不斷迭代的過程,其計算結(jié)果具有隨機(jī)性,所以采用算法恢復(fù)率P來表示不同訓(xùn)練方法的有效性。
P=RrecoverRideal(12)
本文方法與基于傳統(tǒng)知識蒸餾的KD[6]和面向小電路的IKTR[9]進(jìn)行比較,在只有SAF環(huán)境下進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示,采用算法恢復(fù)率的平均結(jié)果表示算法的恢復(fù)程度,在表2中用“平均恢復(fù)率”表示。MLP、LeNet和ConvNet的網(wǎng)絡(luò)規(guī)模較小,其中MLP僅有三層全連接層,LeNet有兩層卷積兩層全連接層,ConvNet也只有三層卷積兩層全連接層。LeNet5、VGG16和ResNet18的結(jié)構(gòu)與文獻(xiàn)[6]相同。SAF的缺陷率如表2所示。KD方法在小規(guī)模網(wǎng)絡(luò)上的恢復(fù)效果較好,隨著網(wǎng)絡(luò)規(guī)模的增大和缺陷率的增加,其算法恢復(fù)率明顯降低,6個網(wǎng)絡(luò)的平均恢復(fù)率為96.43%。這是因?yàn)?,KD方法采用傳統(tǒng)的知識蒸餾,訓(xùn)練過程中學(xué)生模型僅學(xué)習(xí)到教師模型的最后輸出結(jié)果,不能擬合教師模型的中間特征,缺陷的增加導(dǎo)致網(wǎng)絡(luò)訓(xùn)練過程中數(shù)據(jù)產(chǎn)生的偏差過大,惡化了反向傳播的數(shù)據(jù)更新,進(jìn)一步造成算法恢復(fù)率的降低。IKTR方法僅針對3個小規(guī)模網(wǎng)絡(luò)進(jìn)行基于中間特征的知識蒸餾訓(xùn)練,其中SAF的缺陷率也較低,最大僅有3%,IKTR算法平均恢復(fù)率為99.54%。本文方法在6個小規(guī)模網(wǎng)絡(luò)上的算法恢復(fù)率達(dá)到99.86%以上,這是因?yàn)楸疚膮^(qū)塊劃分較為合理,在缺陷率增加的情況下,神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中區(qū)塊劃分可以在保證中間特征的穩(wěn)定提取下,限定了缺陷對數(shù)據(jù)偏差的影響,防止逐層累積影響到后面層級的訓(xùn)練,從而實(shí)現(xiàn)損失函數(shù)的穩(wěn)定;卷積層的歸一化操作保證反向傳播中梯度大小適當(dāng),防止出現(xiàn)梯度消失問題影響數(shù)據(jù)更新。
為了進(jìn)一步驗(yàn)證本文方法在多缺陷模型上的有效性,本文綜合考慮SAF和TF兩種缺陷,在缺陷率為25.03%的情況下進(jìn)行實(shí)驗(yàn),結(jié)果如表3所示。本文方法在多缺陷且缺陷率高達(dá)25.03%的情況下,6個網(wǎng)絡(luò)的平均恢復(fù)率仍能達(dá)到99%以上。這是因?yàn)楸疚姆椒ㄔ谟?xùn)練時通過區(qū)塊劃分有效限制缺陷對數(shù)據(jù)的累積影響,學(xué)生模型通過區(qū)塊輸出擬合教師模型的中間特征,歸一化處理增加反向傳播的梯度來加快網(wǎng)絡(luò)收斂速度,損失函數(shù)使模型在對異常數(shù)據(jù)敏感的同時具有較好的魯棒性,從而在缺陷率較大的情況下得到較好的恢復(fù)效果。
4 結(jié)束語
不同于傳統(tǒng)方法只針對RRAM陣列的SAF缺陷進(jìn)行容忍,本文針對RRAM單元的多缺陷進(jìn)行容忍。為此,本文對TF和SAF缺陷進(jìn)行統(tǒng)一建模,在傳統(tǒng)知識蒸餾的基礎(chǔ)上,采用分區(qū)知識蒸餾的方法進(jìn)行掩碼再訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,本文方法在算法級將網(wǎng)絡(luò)的測試準(zhǔn)確率恢復(fù)到98%以上,證明了本文方法的有效性。但是,本文方法僅在仿真階段對神經(jīng)網(wǎng)絡(luò)的計算進(jìn)行容錯,沒有在實(shí)際RRAM單元中進(jìn)行進(jìn)一步的精度恢復(fù),因此將在后期對硬件系統(tǒng)進(jìn)行進(jìn)一步設(shè)計。
參考文獻(xiàn):
[1]Chi Ping, Li Shuangchen, Xu Cong, et al. Prime: a novel processing-in-memory architecture for neural network computation in ReRAM-based main memory[J]. ACM SIGARCH Computer Architecture News, 2016, 44(3): 27-39.
[2]Shafiee A, Nag A, Muralimanohar N, et al. ISAAC: a convolutional neural network accelerator with in-situ analog arithmetic in crossbars[J]. ACM SIGARCH Computer Architecture News, 2016,44(3): 14-26.
[3]Wong H, Lee H, Yu Shimeng, et al. Metal-oxide RRAM[J]. Proceedings of the IEEE, 2012, 100(6): 1951-1970.
[4]Tosson A, Yu Shimeng, Anis M, et al. Analysis of RRAM reliability soft-errors on the performance of RRAM-based neuromorphic systems[C]//Proc of the 16th IEEE Computer Society Annual Symposium on VLSI. Piscataway, NJ: IEEE Press, 2017: 62-67.
[5]Long Yun, She Xueyuan, Mukhopadhyay S. Design of reliable DNN accelerator with un-reliable ReRAM[C]//Proc of the 23rd Design, Automation & Test in Europe Conference & Exhibition. Piscataway, NJ: IEEE Press, 2019: 1769-1774.
[6]Charan G, Mohanty A, Du Xiaocong, et al. Accurate inference with inaccurate RRAM devices: a joint algorithm-design solution[J]. IEEE Journal on Exploratory Solid-State Computational Devices and Circuits, 2020, 6(1): 27-35.
[7]Chen Lerong, Li Jiawen, Chen Yiran, et al. Accelerator-friendly neural-network training: learning variations and defects in RRAM crossbar[C]//Proc of the 21st Design, Automation & Test in Europe Conference & Exhibition. Piscataway, NJ: IEEE Press, 2017: 19-24.
[8]Liu Chen, Hu Miao, Strachan J, et al. Rescuing memristor-based neuromorphic design with high defects[C]//Proc of the 54th ACM/EDAC/IEEE Design Automation Conference. Piscataway, NJ: IEEE Press, 2017: 1-6.
[9]Li Wen, Wang Ying, Liu Cheng, et al. On-line fault protection for ReRAM-based neural networks[J]. IEEE Trans on Computers, 2023, 2(72) : 423-437.
[10]He Zhezhi, Lin Jie, Ewetz R, et al. Noise injection adaption: end-to-end ReRAM crossbar non-ideal effect adaption for neural network mapping[C]//Proc of the 56th Annual Design Automation Confe-rence. New York: ACM Press, 2019: 1-6.
[11]Zhang Fan, Hu Miao. Defects mitigation in resistive crossbars for analog vector matrix multiplication[C]//Proc of the 25th Asia and South Pacific Design Automation Conference. Piscataway, NJ: IEEE Press, 2020: 187-192.
[12]Zhang Baogang, Uysal N, Fan Deliang, et al. Handling stuck-at-faults in memristor crossbar arrays using matrix transformations[C]//Proc of the 24th Asia and South Pacific Design Automation Confe-rence. New York: ACM Press, 2019: 438-443.
[13]Liu Mengyun, Xia Lixue, Wang Yu, et al. Fault tolerance in neuromorphic computing systems[C]//Proc of the 24th Asia and South Pacific Design Automation Conference. New York: ACM Press, 2019: 216-223.
[14]Chen C, Shih H, Wu Chengwen, et al. RRAM defect modeling and failure analysis based on march test and a novel squeeze-search scheme[J]. IEEE Trans on Computers, 2014, 64(1): 180-190.
[15]Kivinen J, Smola A, Williamson R. Online learning with kernels[J]. IEEE Trans on Signal Processing, 2004, 52(8): 2165-2176.
[16]Qiu Junfei, Wu Qihui, Ding Guoru, et al. A survey of machine learning for big data processing[J]. EURASIP Journal on Advances in Signal Processing, 2016, 2016: 1-16.
[17]Hoi S, Sahoo D, Lu Jing, et al. Online learning: a comprehensive survey[J]. Neurocomputing, 2021, 459: 249-289.
[18]Zhao Weisheng, Moreau M, Deng E, et al. Synchronous non-volatile logic gate design based on resistive switching memories[J]. IEEE Trans on Circuits and Systems I: Regular Papers, 2013, 61(2): 443-454.
[19]Park S, Noh J, Choo M, et al. Nanoscale RRAM-based synaptic electronics: toward a neuromorphic computing device[J]. Nanotechnology, 2013, 24(38): 384009.
[20]Li Boxun, Gu Peng, Shan Yi, et al. RRAM-based analog approximate computing[J]. IEEE Trans on Computer-Aided Design of Integrated Circuits and Systems, 2015, 34(12): 1905-1917.
[21]Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[EB/OL].(2015-03-09). https://arxiv.org/abs/1503.02531.
[22]Gou Jianping, Yu Baosheng, Maybank S, et al. Knowledge distillation: a survey[J]. International Journal of Computer Vision, 2021, 129: 1789-1819.
[23]邵仁榮, 劉宇昂, 張偉, 等. 深度學(xué)習(xí)中知識蒸餾研究綜述[J]. 計算機(jī)學(xué)報, 2022, 45(8): 1638-1673. (Shao Renrong, Liu Yu’ang, Zhang Wei, et al. A review of research on knowledge distillation in deep learning[J]. Chinese Journal of Computers, 2022, 45(8): 1638-1673.)
[24]Yadav D, Thangkhiew P, Datta K, et al. FAMCroNA: fault analysis in memristive crossbars for neuromorphic applications[J]. Journal of Electronic Testing, 2022, 38(2): 145-163.
[25]Krishnan G, Yang Li, Sun Jingbo, et al. Exploring model stability of deep neural networks for reliable RRAM-based in-memory acceleration[J]. IEEE Trans on Computers, 2022, 71(11): 2740-2752.
[26]Howard A, Zhu Menglong, Chen Bo, et al. MobileNets: efficient convolutional neural networks for mobile vision applications[EB/OL]. (2017-04-17). https://arxiv. org/abs/1704. 04861.
[27]Torres-Huitzil C, Girau B. Fault and error tolerance in neural networks: a review[J]. IEEE Access, 2017, 5: 17322-17341.
[28]Ioffe S, Szegedy C. Batch normalization: accelerating deep network training by reducing internal covariate shift[C]//Proc of the 32nd International Conference on Machine Learning. Cambridge, MA: MIT Press, 2015: 448-456.