程利甫,徐煒莉,趙啟義,段欣欣,蔣仁興
(1.清華大學(xué) 集成電路學(xué)院,北京 100047;2.上海航天電子技術(shù)研究所,上海 201109;3.上海市宇航學(xué)會(huì),上海 200235)
以卷積神經(jīng)網(wǎng)絡(luò)為代表的深度學(xué)習(xí)方法,已經(jīng)在很多圖像處理領(lǐng)域取得了超越人類的性能而獲得廣泛的應(yīng)用,并隨著航空航天領(lǐng)域圖像傳感技術(shù)的演進(jìn)逐步滲透到該領(lǐng)域內(nèi),如在軌圖像處理[1-3]、遙感目標(biāo)識(shí)別[4-7]等。沙漏網(wǎng)絡(luò)(Hourglass Network,HN)作為一種經(jīng)典的網(wǎng)絡(luò)架構(gòu)被廣泛應(yīng)用于特征點(diǎn)檢測(cè)等領(lǐng)域,但較高的計(jì)算復(fù)雜度和存儲(chǔ)需求限制了其在設(shè)備端的應(yīng)用。作為有效降低計(jì)算復(fù)雜度的一種方法,二值權(quán)重處理通過(guò)將權(quán)重值轉(zhuǎn)換為+1 或-1,使得原來(lái)的乘法操作變?yōu)榧臃ú僮鳌?/p>
本文對(duì)沙漏網(wǎng)絡(luò)的權(quán)重進(jìn)行二值化處理得到二值權(quán)重沙漏網(wǎng)絡(luò)(Binary-weight Hourglass Network,B-HN)。雖然可以將沙漏網(wǎng)絡(luò)的權(quán)重存儲(chǔ)需求降低到1/32,并且將計(jì)算量降低了近1/2,但是,推理過(guò)程中的算術(shù)操作數(shù)量仍然很高,需要對(duì)B-HN 算法進(jìn)行進(jìn)一步優(yōu)化。因此,本文的主要設(shè)計(jì)目標(biāo)是在不影響識(shí)別精度的前提下,通過(guò)算法-硬件協(xié)同設(shè)計(jì)實(shí)現(xiàn)高能效的高速圖像處理。為了避免造成比較大的精度損失,B-HN 網(wǎng)絡(luò)中第一層以及最后一層權(quán)重需要保持為多比特位寬(硬件實(shí)現(xiàn)時(shí)量化為8 bit)。
針對(duì)在計(jì)算和存儲(chǔ)兩方面潛在的瓶頸問(wèn)題,采用多級(jí)預(yù)測(cè)校準(zhǔn)機(jī)制及查找表(Look-Up Table,LUT)方法設(shè)計(jì)實(shí)現(xiàn)B-HN 加速器來(lái)滿足高效實(shí)時(shí)處理需求。
首先,采用LUT 的查表方式來(lái)代替大量重復(fù)的加法操作。在UNPU[8]中,LUT 被設(shè)置為兩種模式:?jiǎn)伪忍啬J胶投啾忍啬J絹?lái)實(shí)現(xiàn)不同的計(jì)算效率。為了進(jìn)一步提升硬件效率,本文將多比特權(quán)重進(jìn)行離線編碼,轉(zhuǎn)換成可復(fù)用單比特權(quán)重的形式,從而用一種統(tǒng)一模式實(shí)現(xiàn)對(duì)不同位寬權(quán)重計(jì)算的支持,可以進(jìn)一步降低硬件實(shí)現(xiàn)開(kāi)銷并且獲得更高的能量效率。其次,作為B-HN 中廣泛采用的基本結(jié)構(gòu)——“卷積-歸一化-ReLU”,在經(jīng)過(guò)激活后的激活值稀疏度會(huì)達(dá)到30%~90%。
卷積后為負(fù)值的結(jié)果在經(jīng)過(guò)激活后會(huì)被直接置零。因此,針對(duì)這些結(jié)果為負(fù)值的卷積,如果能夠提前判斷其為負(fù)的話,則沒(méi)必要執(zhí)行全部完整精確的計(jì)算過(guò)程。同樣,對(duì)于最大值池化而言,只需要在熱點(diǎn)圖中定位可能為最大值的點(diǎn)的位置即可。卷積過(guò)程中的部分計(jì)算結(jié)果就可以用來(lái)提前中止最終為負(fù)值的計(jì)算或提前濾掉非極大值的點(diǎn)。
基于這些發(fā)現(xiàn),提出了多級(jí)預(yù)測(cè)校準(zhǔn)機(jī)制來(lái)實(shí)現(xiàn)對(duì)計(jì)算精度的自動(dòng)調(diào)整。與基于內(nèi)核方法[9-10]相比,該方法在AlexNet 和VGG-16 網(wǎng)絡(luò)上可以降低77.4%~82.8%的計(jì)算量,并分別取得2.3~3.4 倍推理速度提升。
由于殘差網(wǎng)絡(luò)模塊中存在大量的模塊內(nèi)及模塊間的跳轉(zhuǎn)連接,如果采用傳統(tǒng)的逐層計(jì)算模式會(huì)造成大量的存儲(chǔ)訪問(wèn)操作。而頻繁的片外數(shù)據(jù)訪問(wèn)會(huì)造成巨大的功耗開(kāi)銷。為了解決這一問(wèn)題,提出了基于模塊計(jì)算的流水架構(gòu)(Block Computing Based Pipeline,BCP)來(lái)提高片上數(shù)據(jù)重用。與傳統(tǒng)的逐層計(jì)算模式[11]相比可以降低66.2%的片外數(shù)據(jù)訪問(wèn)。與相似的合并層方法[12]相比,分別降低了60%的片上存儲(chǔ)需求和31%的數(shù)據(jù)訪問(wèn)。
在以上優(yōu)化方法的基礎(chǔ)上,在TSMC 28 nm CMOS 工藝下對(duì)B-HN 加速器實(shí)現(xiàn)了后端設(shè)計(jì)和性能分析。該加速器在500 MHz 工作頻率下的功耗為117 mW,功耗效率達(dá)到10.15 TOPS/W。
基于沙漏模型的算法在特征點(diǎn)檢測(cè)的靈活性及精度方面具有明顯的優(yōu)勢(shì)。如圖1 所示,沙漏網(wǎng)絡(luò)在自底向上以及自上向下處理過(guò)程中呈現(xiàn)對(duì)稱分布的特點(diǎn),因此,可以獲取圖像在各個(gè)尺度的關(guān)鍵信息。
圖1 通用的沙漏網(wǎng)絡(luò)模型架構(gòu)及殘差模塊Fig.1 Common hourglass network model and residual block
除此之外,還可以通過(guò)不斷重復(fù)疊加沙漏模塊來(lái)提高精度。本文針對(duì)沙漏網(wǎng)絡(luò)進(jìn)行二值權(quán)重優(yōu)化,在通過(guò)B-HN 的歸一化圖像處理后會(huì)產(chǎn)生一組熱點(diǎn)圖。每個(gè)熱點(diǎn)反映了該像素作為特征點(diǎn)的概率大小。殘差模塊作為沙漏網(wǎng)絡(luò)中的基礎(chǔ)模塊是本文的主要優(yōu)化對(duì)象,其中,C 代表連接,“+”代表逐個(gè)元素的求和。本文提出的層次化并行模塊(P-Residual Block,PRB)增加了跳轉(zhuǎn)連接,提高了網(wǎng)絡(luò)中的梯度流。同時(shí)該模塊中并不存在1×1 卷積,因?yàn)樵诙稻W(wǎng)絡(luò)中這種卷積核會(huì)造成比較嚴(yán)重的性能下降。
在PRB 模塊中,存在很多模塊間與模塊內(nèi)的跳轉(zhuǎn)連接。由于模塊中每一層的激活值不能全部存在片上,從而造成大量的片外存儲(chǔ)訪問(wèn)操作,并進(jìn)一步限制網(wǎng)絡(luò)推理速度并造成比較高的能耗開(kāi)銷。因此,PRB 模塊是限制整個(gè)B-HN 網(wǎng)絡(luò)性能的一個(gè)主要瓶頸。
此外,批量歸一化_線性修正單元(Batch Normalization Rectified Linear Unit,BN_ReLU)被重新調(diào)整到卷積層之后,跳轉(zhuǎn)連接之前來(lái)進(jìn)行存儲(chǔ)訪問(wèn)。為了進(jìn)一步利用ReLU 函數(shù)之后造成的稀疏性,采用多級(jí)預(yù)測(cè)校準(zhǔn)(Multi-level Prediction-Correction,MPC)模型來(lái)降低大量零值激活值與非最大值之間的冗余操作。
B-HN 的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是對(duì)稱的,任務(wù)精度與速度可以通過(guò)調(diào)整堆疊的沙漏模塊數(shù)量來(lái)實(shí)現(xiàn)靈活調(diào)整。同時(shí),通過(guò)調(diào)整B-HN 的權(quán)重和最后一層的輸出通道數(shù)來(lái)實(shí)現(xiàn)不同的檢測(cè)功能。因此,本文提出的方案可以根據(jù)不同的任務(wù)需求(處理速度、功耗、識(shí)別精度等)對(duì)網(wǎng)絡(luò)架構(gòu)和參數(shù)進(jìn)行靈活配置。
考慮有限的二值權(quán)重可能會(huì)造成的大量重復(fù)的加法操作,本文提出了基于輸入特征圖重用的LUT 方法來(lái)替換這些重復(fù)的操作。在B-HN 網(wǎng)絡(luò)中,需要強(qiáng)調(diào)的是第一層和最后一層的權(quán)重是多比特位寬。在B-HN 網(wǎng)絡(luò)的所有計(jì)算當(dāng)中,多比特位寬權(quán)重卷積操作大概占比達(dá)到43%。因此,針對(duì)多比特位寬權(quán)重卷積操作進(jìn)行優(yōu)化將同樣重要。
在文獻(xiàn)[13]中,LUT 可以被配置成2 種模式:二值權(quán)重模式和多比特權(quán)重模式。一個(gè)深度為4 的LUT 可以執(zhí)行針對(duì)多比特權(quán)重卷積的兩路位串行加法操作和二值權(quán)重卷積的三路位串行加法操作。為了同時(shí)支持這2 種模式,本文提出了一種統(tǒng)一模式的LUT 方法。
1.2.1 二值權(quán)重卷積優(yōu)化
對(duì)于二值權(quán)重,每個(gè)權(quán)重參數(shù)的值或者為-1或者為+1。如果將幾個(gè)二值權(quán)重劃分為一組,則這些權(quán)重的組合也是有限的。如圖2 所示,以M個(gè)輸入特征圖、N個(gè)輸出特征圖,以及濾波器尺寸為3×3 為例,則一共需要N×M個(gè)3×3 的濾波器核。如果每3 個(gè)權(quán)重劃分為一組,對(duì)于相應(yīng)的3 個(gè)輸入激活值a、b、c而言,一共有8 種輸出組合。在通常情況下,卷積神經(jīng)網(wǎng)絡(luò)中輸出通道的數(shù)量要比這些組合的數(shù)量大很多,可以通過(guò)LUT 的方法來(lái)避免重復(fù)操作。同時(shí)可以發(fā)現(xiàn),LUT 中出現(xiàn)的8 種組合的值是對(duì)稱的,即前4 種組合可以通過(guò)相應(yīng)的后4 位組合直接取反得到。因此,只需要對(duì)4 種組合進(jìn)行編碼即可以覆蓋所有可能出現(xiàn)的組合,最后2 bit 用來(lái)對(duì)相應(yīng)的LUT 值進(jìn)行選擇,第一比特則用來(lái)決定符號(hào)。
圖2 基于LUT 的二值權(quán)重卷積計(jì)算優(yōu)化Fig.2 LUT-based binary weight convolution optimization
1.2.2 多比特卷積轉(zhuǎn)換方法
考慮到二值權(quán)重計(jì)算的高效性,多比特權(quán)重也被轉(zhuǎn)換成二值權(quán)重的形式,從而使得其乘法卷積轉(zhuǎn)換成二值權(quán)重的計(jì)算方式。首先,B-HN 中第一層和最后一層的權(quán)重首先被量化到8 bit。8 bit 權(quán)重值又被進(jìn)一步拆分成8 bit 的基值和8 bit 的校準(zhǔn)值。所有卷積核中基值的每個(gè)bit 都是-1,而校準(zhǔn)值的每一位則可能是+1,也可能是-1。在對(duì)應(yīng)同樣輸出位置的不同通道間計(jì)算時(shí),基于基值的卷積計(jì)算結(jié)果都是一樣的,因此,僅需要計(jì)算一次。然后通過(guò)校準(zhǔn)值的計(jì)算來(lái)復(fù)用二值計(jì)算模式得到最終的計(jì)算結(jié)果。
同樣以M個(gè)輸入特征圖、N個(gè)輸出特征圖、卷積核尺寸k×k的Ibit 權(quán)重為例,為了計(jì)算同一位置所有輸出通道的值,需要考慮3 個(gè)方面的開(kāi)銷:所有權(quán)重基礎(chǔ)組合的卷積計(jì)算、部分和的加法以及LUT值的選擇。假設(shè)每s個(gè)權(quán)重為一組,并通過(guò)P1、P2和P3來(lái)表示上述3 方面的功耗開(kāi)銷。我們的目標(biāo)是使得總的功耗開(kāi)銷最小化。需要強(qiáng)調(diào)的是,s是正整數(shù)。通過(guò)解這個(gè)優(yōu)化問(wèn)題,可以得到最小開(kāi)銷下的s值。s主要與輸出通道數(shù)有關(guān),基于s的加法操作降低比例見(jiàn)表1,降低比率隨著輸出通道數(shù)的增加而快速增加。
表1 不同輸出通道數(shù)量下的計(jì)算優(yōu)化對(duì)比Tab.1 Computation optimization for different numbers of output channels
另一個(gè)需要解決的問(wèn)題是如何對(duì)權(quán)重進(jìn)行分組。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),經(jīng)過(guò)ReLU 函數(shù)處理后,統(tǒng)一通道的輸出特征圖中存在著大量連續(xù)分布的零值。這就意味著可以通過(guò)時(shí)鐘門控來(lái)實(shí)現(xiàn)大量零值計(jì)算的跳轉(zhuǎn),因此相同通道內(nèi)的權(quán)重被選擇作為一組。與相關(guān)CNN 加速器的LUT 方法對(duì)比,本文提出的LUT 計(jì)算方法可以實(shí)現(xiàn)對(duì)多種位寬權(quán)重的卷積實(shí)現(xiàn)統(tǒng)一支持,同時(shí)降低硬件的實(shí)現(xiàn)開(kāi)銷,針對(duì)多比特權(quán)重卷積實(shí)現(xiàn)1.33~1.50 倍的卷積速度提升。
在主流CNN 模型中,通用的基礎(chǔ)網(wǎng)絡(luò)架構(gòu)為“卷積-歸一化-ReLU 激活-池化”等。其中,作為應(yīng)用最廣泛的激活函數(shù),ReLU 會(huì)造成很高的激活值稀疏度。同時(shí)經(jīng)過(guò)最大值池化層后,僅需要決定池化結(jié)果的相對(duì)尺寸,這也就意味著最終結(jié)果為負(fù)值或非最大值的全精度卷積計(jì)算是完全沒(méi)有必要的。與當(dāng)前提出的基于零值的操作消除方法[13-14]相比,本文提出了一種更加高效的多級(jí)預(yù)測(cè)較準(zhǔn)方法。
為了便于硬件實(shí)現(xiàn),計(jì)算過(guò)程中的所有權(quán)重及中間結(jié)果均需要進(jìn)行定點(diǎn)化。本文提出的多級(jí)預(yù)測(cè)校準(zhǔn)主要針對(duì)兩種計(jì)算模式:1)激活層。預(yù)測(cè)階段主要對(duì)最終激活值的符號(hào)進(jìn)行判斷,后面對(duì)結(jié)果進(jìn)行校準(zhǔn)。2)最大值池化層。前面的計(jì)算判定激活值的相對(duì)尺寸,后面的計(jì)算完成更大值的更新。而在本文的B-HN 網(wǎng)絡(luò)中主要包括二值權(quán)重和多位寬權(quán)重兩種網(wǎng)絡(luò)類型。
在二值權(quán)重網(wǎng)絡(luò)層,由于權(quán)重是1 bit 數(shù)據(jù),卷積操作被轉(zhuǎn)換為加法操作。針對(duì)輸入的8 bit 數(shù)據(jù),將其劃分為高4 bit 和低4 bit 兩個(gè)部分。對(duì)于激活層而言,在預(yù)測(cè)階段,將高4 bit 參與到計(jì)算過(guò)程并判斷ReLU 最終結(jié)果的符號(hào),如果可以判定結(jié)果為負(fù)值,則將輸出結(jié)果直接設(shè)置為0,后續(xù)結(jié)果無(wú)需繼續(xù)執(zhí)行;否則,需要執(zhí)行低4 bit 計(jì)算來(lái)對(duì)輸出結(jié)果進(jìn)行校準(zhǔn)。在B-HN 網(wǎng)絡(luò)中,經(jīng)過(guò)ReLU 處理后的稀疏度在30%到90%之間,因此,采用本方法大概可以節(jié)省15%~45%的操作。對(duì)于最大值池化層,在預(yù)測(cè)階段,首先計(jì)算高4 bit 的結(jié)果來(lái)判斷最大池化輸出的相對(duì)尺寸。需要采用一個(gè)閾值Tm來(lái)對(duì)相對(duì)尺寸進(jìn)行評(píng)估。如果最大值與其他非極大值的距離大于閾值,則后續(xù)非計(jì)算值的計(jì)算不需要繼續(xù)執(zhí)行。否則,需要執(zhí)行后續(xù)計(jì)算過(guò)程。在校準(zhǔn)階段,低4 bit 的計(jì)算結(jié)果將用來(lái)繼續(xù)執(zhí)行比較,本方法可以降低大約37.5%的計(jì)算處理。
在多比特權(quán)重網(wǎng)絡(luò)中,輸入特征值和權(quán)重均被量化為8 bit。對(duì)于輸入而言,同樣被分為高4 bit 和低4 bit 兩部分,而權(quán)重則按每2 bit 分組,從高位到低位劃分為4 部分。在此劃分模式下,每次輸入與權(quán)重的乘法操作轉(zhuǎn)換為8 級(jí)從高位到低位的計(jì)算過(guò)程,具體的計(jì)算及校準(zhǔn)過(guò)程與二值權(quán)重計(jì)算過(guò)程相同。
如圖3 所示,B-HN 加速器的硬件架構(gòu)中主要包括3 個(gè)模塊:1)預(yù)處理模塊;2)多級(jí)計(jì)算控制模塊;3)存儲(chǔ)系統(tǒng)。
圖3 B-HN 加速器的系統(tǒng)架構(gòu)Fig.3 System architecture of B-HN accelerator
在B-HN 加速器的處理過(guò)程中,輸入的激活值及首末層權(quán)重的位寬均為8 bit,其他層的權(quán)重為1 bit。處理單元(Processing Element,PE)主要由查找表和加法器樹組成。每個(gè)PE 包括9 個(gè)查找表和1 個(gè)由9 個(gè)加法器組成的加法器樹,其中,每個(gè)LUT中包括4 個(gè)7 bit 的實(shí)體。在該架構(gòu)中,總共包括176 個(gè)PE。
加法器在配置下首先被配置來(lái)計(jì)算LUT 中的4 個(gè)基礎(chǔ)值,編碼后權(quán)重用來(lái)決定Psum 的值。每組權(quán)重包括3 bit,由后2 個(gè)bit 來(lái)選擇LUT 中的值,第一個(gè)bit 來(lái)確定符號(hào)。隨后Psum 值在加法器樹中進(jìn)行累加。最終,通過(guò)權(quán)重轉(zhuǎn)換得到的校準(zhǔn)值與Psum相加得到最后的結(jié)果。在整個(gè)處理過(guò)程中,二值權(quán)重卷積操作可以在一個(gè)周期內(nèi)完成,而多比特權(quán)重操作則需要多個(gè)周期穿行計(jì)算完成。
為了優(yōu)化片上數(shù)據(jù)存儲(chǔ)及訪問(wèn),采用了同時(shí)復(fù)用輸入和權(quán)重的計(jì)算模式。對(duì)于多比特位寬層,輸入尺寸為256×256×3(位寬為8 bit),在重用輸入與權(quán)重的基礎(chǔ)上利用所有的PE 來(lái)并行計(jì)算3×256×3 大小的模塊,可以在每8 個(gè)周期內(nèi)完成64 個(gè)點(diǎn)的計(jì)算。
而對(duì)于其他層而言,PE 用來(lái)并行的執(zhí)行2×16×144 大小的模塊,每16 個(gè)周期產(chǎn)生32 個(gè)點(diǎn)。對(duì)于殘差模塊,分別采用128、32 和16 個(gè)PE 來(lái)完成殘差模塊中3 層的計(jì)算,每6 個(gè)時(shí)鐘周期產(chǎn)生4 個(gè)點(diǎn)。在整個(gè)計(jì)算過(guò)程中,所有的輸入會(huì)一致被重用直到相對(duì)應(yīng)通道的計(jì)算全部完成。
該模塊的主要功能是完成所有的參數(shù)配置和模塊工作調(diào)度,包括閾值設(shè)定、多級(jí)計(jì)算預(yù)測(cè)、Psum累加、多比特權(quán)重卷積的分解與組合。該模塊主要包括4 個(gè)部分:歸一化模塊、ReLU 模塊、最大池化模塊和確認(rèn)模塊。歸一化模塊包括一個(gè)乘法器和加法器。
ReLU 模塊則采用符號(hào)位來(lái)作為選擇信號(hào)來(lái)判定選擇原輸出值或者是0。ReLU 之后結(jié)果的符號(hào)位則寫進(jìn)標(biāo)志位表來(lái)標(biāo)識(shí)是否需要執(zhí)行下一級(jí)計(jì)算以及控制PE 陣列的數(shù)據(jù)更新,最大池化模塊則由一個(gè)閾值比較邏輯和選擇最大值的多選器組成。
采用獨(dú)立的輸入緩存和權(quán)重緩存來(lái)為PE 陣列提供數(shù)據(jù)。由于有限的數(shù)據(jù)帶寬及計(jì)算資源,無(wú)法將卷積操作完全并行展開(kāi)執(zhí)行。因此,多級(jí)計(jì)算需要串行執(zhí)行并且在片上實(shí)現(xiàn)每級(jí)計(jì)算的中間結(jié)果存儲(chǔ),采用Psum 緩存來(lái)存儲(chǔ)這些數(shù)據(jù)。對(duì)于殘差模塊中的跳轉(zhuǎn)連接而言,部分?jǐn)?shù)據(jù)需要存在很長(zhǎng)時(shí)間才會(huì)被用于計(jì)算,因此,需要一個(gè)臨時(shí)數(shù)據(jù)緩存來(lái)存儲(chǔ)這些數(shù)據(jù)。由于本文提出的BCP方法,使得這些數(shù)據(jù)不需要存到片外,而僅需要存3 行特征圖數(shù)據(jù)。因此對(duì)于片外存儲(chǔ)的帶寬和訪問(wèn)極大降低。
作為B-HG 網(wǎng)絡(luò)中的瓶頸模塊,PRB 模塊主要由內(nèi)部及外部跳轉(zhuǎn)連接的3 層卷積層組成。考慮到每個(gè)中間層的輸出結(jié)果均非常多,如果采用傳統(tǒng)逐層處理方式的話,會(huì)造成與片外存儲(chǔ)之間的大量數(shù)據(jù)交互。因此,提出面向PRB 模塊的三級(jí)流水計(jì)算架構(gòu)。在這種架構(gòu)下,僅僅需要在片上存儲(chǔ)3.5 行特征圖數(shù)據(jù),而且中間結(jié)果不需要寫回到片外存儲(chǔ),同時(shí)跳轉(zhuǎn)連接也不需要從片外存儲(chǔ)多次讀取數(shù)據(jù)。PRB 模塊中3 層網(wǎng)絡(luò)的計(jì)算時(shí)間比為8∶2∶1,根據(jù)這個(gè)比例來(lái)對(duì)每一層分配相應(yīng)的計(jì)算資源,來(lái)保證流水處理的負(fù)載均衡性。
假設(shè)M個(gè)W×H大小的輸入特征圖,N個(gè)輸出特征圖,卷積核尺寸為k×k,將計(jì)算模塊的尺寸設(shè)置為w×h,輸入、權(quán)重及中間結(jié)果的位寬分別為Ba、Bw和Bp。每次數(shù)據(jù)讀取和寫入的功耗分別為Pr和Pw,則由輸入、位寬及中間結(jié)果數(shù)據(jù)訪問(wèn)造成的開(kāi)銷C1、C2和C3分別為
本文的設(shè)計(jì)目標(biāo)則是實(shí)現(xiàn)三者之和的最小化,在給定的硬件資源約束下對(duì)這一優(yōu)化問(wèn)題進(jìn)行求解,得到對(duì)于PRB 模塊每一層最優(yōu)的計(jì)算模塊尺寸為6×4×48、4×4×24 和4×4×12。
對(duì)于非PRB 的網(wǎng)絡(luò)層而言,采用逐層處理的方式。為了保證最小的存儲(chǔ)開(kāi)銷,對(duì)于每一層選取最優(yōu)的模塊尺寸。對(duì)于B-HN 網(wǎng)絡(luò)的第一層,其卷積核尺寸為3×3,步長(zhǎng)為2,輸出通道數(shù)為144,每次讀取5 行圖像數(shù)據(jù),計(jì)算模塊被配置成3×128×3。對(duì)于B-HN 網(wǎng)絡(luò)中的其他網(wǎng)絡(luò)層,卷積核尺寸為1×1,步長(zhǎng)為1,計(jì)算模塊尺寸則被配置成2×16×144。
為了進(jìn)一步衡量本文提出方法的通用性,以AlexNet[15]作為測(cè)試基準(zhǔn)來(lái)對(duì)本文提出的方法效果進(jìn)行測(cè)試,網(wǎng)絡(luò)的權(quán)重根據(jù)本文方法確定為每4 bit為一組。二值權(quán)重AlexNet 網(wǎng)絡(luò)中5 層卷積層的性能統(tǒng)計(jì)數(shù)據(jù)見(jiàn)表2。表中可見(jiàn),二值權(quán)重AlexNet 的計(jì)算量可以降低82.75%。
表2 AlexNet 網(wǎng)絡(luò)的性能優(yōu)化分析Tab.2 Performance optimization analysis for AlexNet
在TSMC 28 nm 的CMOS 工藝下對(duì)提出的BHN 加速器進(jìn)行了后端實(shí)現(xiàn)和性能仿真,具體的芯片版圖及性能指標(biāo)如圖4 和表3 所示。
圖4 B-HN 加速器后端版圖Fig.4 Post-layout of the B-HN accelerator
表3 B-HN 加速器后端仿真性能數(shù)據(jù)Tab.3 Performance data of simulation for the B-HN accelerator post-layout
B-HN 加速器與相關(guān)二值權(quán)重硬件加速器的性能對(duì)比情況見(jiàn)表4。表中可見(jiàn),B-HN 加速器在計(jì)算延遲及功耗效率方面較相關(guān)工作取得了比較明顯的提升。
表4 與相關(guān)工作性能對(duì)比Tab.4 Performance comparison with related works
本文首先采用二值化權(quán)重方法對(duì)當(dāng)前通用的沙漏卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行處理,并在進(jìn)一步分析其計(jì)算、存儲(chǔ)瓶頸的基礎(chǔ)上提出了基于多級(jí)預(yù)測(cè)校準(zhǔn)模型及LUT 方法的高效卷積計(jì)算、針對(duì)殘差模塊的基于模塊計(jì)算的流水架構(gòu),最終在28 nm 工藝條件下對(duì)提出的B-HN 模型高效硬件設(shè)計(jì)及性能評(píng)估。后續(xù)工作將重點(diǎn)基于航天應(yīng)用中的專用數(shù)據(jù)集本文架構(gòu)進(jìn)行進(jìn)一步優(yōu)化。