張 萌 張經(jīng)緯* 李國慶 吳瑞霞 曾曉洋
①(東南大學(xué)電子學(xué)院國家專用集成電路系統(tǒng)工程技術(shù)研究中心 南京 210096)
②(復(fù)旦大學(xué)專用集成電路與系統(tǒng)國家重點實驗室 上海 200433)
人工智能算法的理論研究相比于幾年前取得了突出的進(jìn)步。因此,一部分研究人員開始將精力投在把人工智能算法特別是深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNN)部署在各種硬件平臺上,包括中央處理器(Central Processing Unit, CPU)、圖形處理器(Graphics Processing Unit, GPU)、現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)、專用集成電路(Application Specific Integrated Circuit, ASIC)上[1,2]。這些基于硬件平臺而專門構(gòu)建出來的神經(jīng)網(wǎng)絡(luò)加速器被證明在應(yīng)用于圖像分類[3]、目標(biāo)檢測[4,5]和語音識別等方面有著很好的效果,而像無人機檢測、自動駕駛這類的強實時性的人工智能(Artificial Intelligence, AI)、物聯(lián)網(wǎng)應(yīng)用不僅對網(wǎng)絡(luò)識別精度有較高要求,而且對網(wǎng)絡(luò)推理速度以及硬件平臺功耗同樣是嚴(yán)峻的挑戰(zhàn)。相比較基于性能優(yōu)先的CPU/GPU這類通用處理器很難滿足功耗約束,F(xiàn)PGA和ASIC具有高能效、低功耗的特性成為當(dāng)前邊緣AI應(yīng)用方案的首選[6]。
但是想要基于低功耗硬件平臺,構(gòu)建出符合要求的DNN加速器是非常有挑戰(zhàn)性的[7,8]。要求開發(fā)人員不僅了解AI算法,更加需要包括:(1)專用于低功耗平臺的DNN體系結(jié)構(gòu);(2)高效的內(nèi)存管理方案;(3)并行可靠的工作流。整個任務(wù)嚴(yán)重依賴設(shè)計者跨越機器學(xué)習(xí)和集成電路設(shè)計的專業(yè)知識。設(shè)計過程中如果只實現(xiàn)AI算法卻不考慮硬件優(yōu)化策略,就很難滿足邊緣計算方案低功耗和高實時性的嚴(yán)格要求。因此硬件優(yōu)化策略具有較高的普適性和重要的研究價值。
為了解決以上諸多問題,本文提出用于DNN加速芯片設(shè)計的一系列高效率優(yōu)化策略,并在FPGA上驗證性能,包括可堆疊共享計算引擎(Process Engine, PE)、可調(diào)的循環(huán)次數(shù)、通道增強和預(yù)加載工作流優(yōu)化方法,利用有限的低功耗硬件資源獲得最好的性價比。本文所提硬件優(yōu)化策略:(1)基于SkyNet網(wǎng)絡(luò)模型應(yīng)用,設(shè)計出SEUer A型加速器,其精度和功耗都要優(yōu)于iSmart3-SkyNet(the 1st place in the DAC’2019-SDC)[9];(2)基于SkrSkr-SkyNet(the 2nd place in the DAC’2020-SDC)[10]應(yīng)用優(yōu)化出了SEUer B型加速器,最終分?jǐn)?shù)會超過UltraNet(the 1st place in the DAC’2020-SDC)。本文的主要貢獻(xiàn)如下:
(1)提出一種可堆疊共享PE用于組裝成并行度靈活的卷積計算模塊,可以獨立且高效率地完成逐點卷積(PointWise Convolution, PWC)計算和深度可分離卷積(DepthWise Convolution, DWC)計算,并且采用了行緩沖區(qū)結(jié)構(gòu)解決PWC單次讀取特征圖的限制。
(2)針對可堆疊共享PE提出了循環(huán)次數(shù)可調(diào),可根據(jù)網(wǎng)絡(luò)層數(shù)自動優(yōu)化計算模塊中循環(huán)次數(shù),提高計算的效率。
(3)通道增強的方法不僅可以大幅度增強圖片輸入層的并行度,還可以增加與外部存儲器的通信帶寬。
(4)預(yù)加載工作流可以更好地協(xié)同處理系統(tǒng)(Processing System, PS)與可編程邏輯(Programmable Logic, PL),從而加速整個系統(tǒng),降低系統(tǒng)的延遲和功耗。
本文其余安排如下:第2節(jié)介紹專用于低功耗平臺的SkyNet的網(wǎng)絡(luò)結(jié)構(gòu)以及存在的問題,然后使用Roofline模型[11]分析基于SkyNet網(wǎng)絡(luò)設(shè)計出的iSmart3-SkyNet加速器的性能瓶頸;第3節(jié)針對這些問題給出對應(yīng)的優(yōu)化策略;第4節(jié)將討論我們?yōu)榈凸钠脚_提出的優(yōu)化策略的實驗結(jié)果;第5節(jié)給出結(jié)論。
SkyNet是一個冠軍模型,它被設(shè)計出來專門用于嵌入式邊緣設(shè)備的目標(biāo)檢測和追蹤任務(wù)[9]。可以為低功耗嵌入式系統(tǒng)提供可靠的推理精度的同時滿足實時響應(yīng)這類的低延時要求。SkyNet采用自下而上的DNN設(shè)計方法[12],將3×3深度卷積層、1×1點卷積層、批量歸一化的組合層和ReLU6組合成捆綁包(bundle)。將捆綁包反復(fù)堆疊形成如表1所示的網(wǎng)絡(luò)結(jié)構(gòu)。表1所示的超參數(shù)(包括網(wǎng)絡(luò)通道數(shù)和池化層的位置)是通過使用實際硬件進(jìn)行神經(jīng)網(wǎng)絡(luò)搜索而獲得的最佳解決方案。從硬件執(zhí)行效率角度考慮,SkyNet網(wǎng)絡(luò)比自上而下設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)更有效[13]。
CNN網(wǎng)絡(luò)的圖像輸入通道一般為3個光學(xué)三原色(Red Green Blue, RGB)或4個三原色加不透明參數(shù)(Red Green Blue Alpha, RGBA),因此很難在固定計算通道的PE上提高淺層網(wǎng)絡(luò)的計算效率[14,15]。例如,表1最后兩列反映了iSmart3-SkyNet理論計算量占比跟實際硬件延時占比差異,在第1個捆綁包中,雖然SkyNet的輸入層是3,但在理論計算中第1層的PWC的輸入層卻是32,DWC的輸出層卻是64而不是48。因為加速器中計算模塊輸入輸出通道固定,iSmart-SkyNet的輸入并行度為16,輸出并行度為32。在計算第1層時,即便通道當(dāng)中存在無效數(shù)據(jù),它在輸入輸出通道維度依舊各自循環(huán)兩次,也因此在表格中第1個、第2個捆綁包的計算量之和為34.48%;而實際加上異構(gòu)計算平臺的計算耗時,僅僅第1個捆綁包的延時就占了整體時間的33.90%,實際延時相比較計算量,增加了69%。在這種情況下,第1個、第2個捆綁包的延時占到整個系統(tǒng)延時的1/2。因此考慮到帶寬限制等諸多現(xiàn)實因素,提高淺層網(wǎng)絡(luò)的計算效率,使得延時與計算量一致是非常困難的。
表1 SkyNet的體系結(jié)構(gòu)和每個捆綁包的推理速度表格
計算和通信是系統(tǒng)吞吐量優(yōu)化中的兩個主要限制。加州大學(xué)洛杉磯分校叢京生教授團(tuán)隊[11]的Roofline性能模型,反映了系統(tǒng)性能與片外內(nèi)存流量的關(guān)系,更重要的是,突出了硬件平臺的峰值性能與神經(jīng)網(wǎng)絡(luò)模型之間的相關(guān)性。式(1)描述了Roofline模型,PP是系統(tǒng)中所有可用計算資源提供的浮點吞吐量,也稱為計算屋頂。B是內(nèi)存帶寬(Memory Bandwidth, BW),而CC代表計算與通信之比(Computing To Communication, CTC)是每個片上存儲器流量的操作。加速器的實際計算性能不能超過計算屋頂和計算與通信比率×內(nèi)存帶寬的最小值。在第1種情況下,可達(dá)到的性能受到處理器可提供的最大計算資源限制;第2種情況則可達(dá)到的性能受到內(nèi)存帶寬的限制,并且無法充分利用計算資源
對于不同類型卷積以及不同循環(huán)展開的相同卷積,加速器計算通信比公式都是不一樣的。對于深度可分離卷積,計算通信比如式(2)所示
對于逐點卷積的計算通信比如式(4)和式(5)所示,其中出現(xiàn)的參數(shù)量的含義與式(2)和式(3)的一致
在iSmart3-SkyNet中,DWC和PWC分別由不同的計算引擎計算。DWC和PWC的Roofline模型的說明如圖1所示。對于DWC的Roofline模型的圖示如圖1(a)所示,第1層可獲得的性能非常低,這受到帶寬的限制。因此,捆綁包#1的等待時間百分比大于捆綁包#1的浮點操作次數(shù)(Floating Point of OPeration, FLOP)。此外,計算上限僅約為6.88 GFLOPS,這受計算資源的限制,因為PWC計算引擎占用了最多的計算資源。圖1(b)顯示了PWC層的Roofline模型,所有層的可達(dá)到的性能都達(dá)到了計算上限110 GFLOPS。但是,計算能力不高。此外,DWC和PWC由不同的計算引擎計算。換句話說,當(dāng)PWC引擎工作時,DWC引擎是自由的,反之亦然。計算資源的利用率不高。在第1層中,輸入通道為3,但是iSmart3-SkyNet計算32個通道。冗余計算會增加推理延遲。這些問題在其他用于輕量級目標(biāo)檢測網(wǎng)絡(luò)的加速器中也存在。為了解決這些問題,提出了幾種方法,這些方法在第3節(jié)介紹。
圖1 iSmart3-SkyNet加速器上的SkyNet Roofline模型分析
本節(jié)首先介紹高效優(yōu)化策略下的加速器總體架構(gòu),該架構(gòu)可專用于低功耗平臺。以專用于低功耗平臺的網(wǎng)絡(luò)SkyNet為例,經(jīng)問題分析,可堆疊共享PE、通道增強、循環(huán)次數(shù)可調(diào)、預(yù)加載工作流優(yōu)化方法依次被提出。這樣,基于低功耗平臺有限的硬件資源,可充分發(fā)揮并行計算優(yōu)勢,實現(xiàn)更加高效的邊緣計算。
系統(tǒng)的整體架構(gòu)如圖2所示,架構(gòu)基于異構(gòu)結(jié)構(gòu),包含了可編程邏輯(Progarmmable Logic,PL)和高性能處理系統(tǒng)(Processing System, PS)。PL由4個模塊組成:內(nèi)存判決模塊通過高性能總線接口(Advanced eXtensible Interface, AXI)直接訪問外部存儲器以及調(diào)度雙倍的數(shù)據(jù)緩沖區(qū)形成乒乓結(jié)構(gòu),最大化利用片上存儲器;多個可堆疊共享計算引擎(Process Engine, PE)堆疊成為計算模塊來處理PWC和DWC計算;池化激活模塊完成池化與激活計算;控制模塊被設(shè)計用來控制PL邏輯和時序,保證每個模塊在正確的時刻被正確地重用。PS采用了多進(jìn)程優(yōu)化,以提高圖像預(yù)處理和后處理的計算速度。
圖2 系統(tǒng)-計算模塊-線性緩沖區(qū)結(jié)構(gòu)示意圖
加速器開始工作時,圖像和權(quán)重被存儲在外部存儲器中。PS做圖像預(yù)處理的同時,向PL發(fā)出啟動信號。PL中的控制模塊接收啟動信號后,控制內(nèi)存判決模塊通過AXI4接口從外部存儲器中讀取權(quán)重和圖像并存儲到相應(yīng)的緩沖區(qū)中,接著控制模塊按照網(wǎng)絡(luò)模型順序依次重復(fù)調(diào)用計算模塊和池化激活模塊,最后內(nèi)存判決模塊將結(jié)果輸出給PS做后處理完成所有任務(wù)。
由于有限的硬件資源,并且PWC計算引擎占用了大多數(shù)計算資源[16],因此DWC計算引擎的峰值性能非常低。本文提出一種可堆疊的共享PE,以提高DWC計算引擎的峰值性能。幾個這樣的PE被組裝并堆疊到一個大型計算模塊中。PWC和DWC操作都共享此計算模塊。這意味著在整個任務(wù)中只有一個這樣的計算模塊就可以完成PWC和3×3 的DWC。
如圖2(b)所示,共享PE由9個DSP組成,因此可以在1個時鐘周期內(nèi)完成3×3 DWC計算。受雙端口塊隨機存取存儲器(dual-port Block Random Access Memory, BRAM)功能的限制,1個時鐘周期內(nèi)最多可以讀取兩個像素。為了解決這個問題,共享PE利用BRAM和DWC計算引擎之間的行緩沖區(qū)。如圖2(c)所示,紅色特征圖的像素被存儲在行緩沖區(qū)中,而滑動窗口的像素被用于當(dāng)前計算。在每個時鐘周期,窗口中的像素都會移動,新的像素會從行緩沖區(qū)中移入,而舊的像素會從窗口中彈出,以便可以展開內(nèi)核,并且可以映射特征圖的9個像素1個時鐘周期內(nèi)即可輕松獲得。
對于SkyNet,選擇32個共享PE堆疊到計算模塊中,并且在計算PWC時,將展開18個輸入通道和16個輸出通道。16/18輸入通道用于傳輸數(shù)據(jù),其他兩個通道的值為0。在計算DWC時,所有通道都用于傳輸數(shù)據(jù),并且計算速度將比訪問外部存儲器更快,并且會觸及加速器的存儲墻。
從表1可以看出,SkyNet的前兩層實際耗時比理論上花費更多的時間。淺網(wǎng)絡(luò)層的通道很少,圖像輸入通道通常只有3(RGB)或4(RGBA)。具有固定輸入和輸出通道尺寸的計算引擎將在處理淺層網(wǎng)絡(luò)時導(dǎo)致某些通道的計算資源空閑,并且其他循環(huán)將導(dǎo)致額外的系統(tǒng)延遲。具有不變循環(huán)計數(shù)的計算模塊不能完美地應(yīng)用于淺層網(wǎng)絡(luò)。因此,本文提出循環(huán)計數(shù)可調(diào)節(jié)的優(yōu)化方法。
可調(diào)節(jié)的循環(huán)計數(shù)方法建立在可堆疊共享PE基礎(chǔ)上。通過提供的參數(shù)變量[輸入通道并行度(Channel Input, CI)],可以自由地堆疊到計算模塊中,它根據(jù)不同的層自動調(diào)節(jié)循環(huán)計數(shù),以達(dá)到最小功耗和最低延遲。例如,iSmart3-SkyNet的輸入通道并行度為16。在計算PWC的第1層時,在輸入通道尺寸上循環(huán)了兩次,而第2個循環(huán)為無效計算。最終iSmart3-SkyNet第1層中超過90%的計算資源處于空閑狀態(tài),這也導(dǎo)致更長的延遲和更多的功耗。如果iSmart3-SkyNet使用可調(diào)節(jié)的循環(huán)計數(shù)優(yōu)化,則可以基于不同的層調(diào)節(jié)循環(huán)計數(shù)。在計算第1個PWC層時,輸入通道尺寸將僅循環(huán)1次,而不是原始的兩倍。即使圖像輸入通道尺寸僅循環(huán)1次,仍然有13/16 DSP處于空閑狀態(tài),第1個PWC層的這種無用計算可以通過3.4節(jié)描述的通道增強優(yōu)化來解決。
由表1分析,相比較于第2層網(wǎng)絡(luò),第1層網(wǎng)絡(luò)硬件延時遠(yuǎn)遠(yuǎn)大于計算量,占整個系統(tǒng)延時的1/3。這是因為在像SkyNet這樣的CNN中,第1層圖片的輸入通道只有3個(RGB)。即使使用了循環(huán)次數(shù)可調(diào)優(yōu)化,iSmart3-SkyNet的第1層PWC的通道利用率并不高,DSP的利用效率僅為3/16。為了解決這一問題,通道增強優(yōu)化被提出。方法如圖3所示,先將特征圖以像素單位裁剪,并以RGB的順序在通道維度上重新排列。從低位開始一直排列到高位。下一輪從上一輪結(jié)束的像素開始,重復(fù)以上操作直至最后一個像素點。如此使得處理后的特征圖的通道展寬,提高了第1層的計算并行性。
圖3 通道增強流程說明圖
本文提出的通道增強不同于傳統(tǒng)通道增強技術(shù)[17]。通道增強優(yōu)化不僅提高了圖片輸入層的計算并行性,還大大提高了與外部存儲器的傳輸帶寬。例如在iSmart3-SkyNet中,傳輸圖像的AXI4的數(shù)據(jù)位寬只有8位,在Skrskr-SkyNet中傳輸圖像的AXI4的數(shù)據(jù)位寬度為32位,但只有24位有效。而在使用了通道增強優(yōu)化的SkrSkr-SkyNet,用于傳輸圖像的AXI4總線數(shù)據(jù)寬度為128位并且沒有原先的無效數(shù)據(jù)。因此傳輸圖像的帶寬大大提升,訪問存儲器的次數(shù)減少,系統(tǒng)延時和功耗也隨之減少。
當(dāng)前可用于計算CNN的工作流程如下:獲取圖像(picture)、對該圖像進(jìn)行預(yù)處理、將處理后的圖像復(fù)制到DDR存儲器進(jìn)行存儲、在加速器上計算DNN模型以及后處理,如圖4(a)所示,盡管DNN是在PL上并行計算的,但其工作受到串行工作流程的限制,并且必須等待上一幅圖像的后處理完成,才能對DNN進(jìn)行預(yù)處理。將處理后的圖像復(fù)制到DDR內(nèi)存中,然后才能開始工作。此串行工作流程效率低下。一般的并行工作流程如圖4(b)所示。與串行工作流程相比,在并行工作流程中,PL正在執(zhí)行DNN計算,而PS也在預(yù)處理下一張圖片。但是,PL仍處于空閑狀態(tài)。因此,提出了預(yù)加載工作流程。如圖4(c)所示,在計算圖像的第1層之后,PS將預(yù)處理的下一個圖像復(fù)制到DDR以替換舊圖像。由于PL幾乎始終處于工作狀態(tài),因此預(yù)加載工作流程的效率高于圖4(b)。
圖4 3種工作流比較圖
值得一提的是,其中PS上的預(yù)處理速度一般都要快于PL上DNN的計算速度。而要想做到這一點,需要對PS做多進(jìn)程優(yōu)化。以多個進(jìn)程對攝像頭采集的照片同時預(yù)處理,然后將圖像放入隊列并等待存入DDR中。PL在計算完DNN之后會將結(jié)果存入另一個隊列,PS也會以多進(jìn)程優(yōu)化確保后處理時間快于DNN第1層的計算時間。如此一來,系統(tǒng)的關(guān)鍵路徑在PL處,且PL的效率接近100%。
根據(jù)第3節(jié)提出的優(yōu)化方法優(yōu)化iSmart3-SkyNet加速器后,優(yōu)化后的DWC層的Roofline模型如圖5(a)所示??梢钥闯觯c原始Roofline模型相比,第1層DWC的性能不再比其他DWC層的性能更弱,因為通道增強優(yōu)化增加了帶寬。由于共享計算資源,DWC的計算能力從原來的6.88 GFLOPS增加到172.8 GFLOPS。它使所有DWC層從計算限制變?yōu)閮?nèi)存限制,使得可達(dá)到的性能得到了顯著提高。PWC的Roofline模型如圖5(b)所示。優(yōu)化的PWC計算屋頂從原來的110 GFLOPS增加到307.2 GFLOPS。計算屋頂?shù)脑黾訉?dǎo)致該層的一部分從計算限制更改為內(nèi)存限制,使得每層可獲得的性能都比iSmart3-SkyNet高。
圖5 優(yōu)化后加速器上的SkyNet Roofline模型分析
圖6 iSmart3和Skrskr加速優(yōu)化前后性能對比
為了更好地說明本文優(yōu)化方法在低功耗目標(biāo)檢測方面的性能改進(jìn),分別選擇了iSmart3-SkyNet和SkrSkr-SkyNet作為基準(zhǔn)模型。本文iSmart3-SkyNet和Skrskr-SkyNet中提出的方法的有效性如圖6所示,其中它們的性能(包括延遲和能量)被標(biāo)準(zhǔn)化為1。與iSmart3-SkyNet和SkrSkr-SkyNet相比,使用預(yù)加載的工作流方法處理1000幅圖像,分別可以將運行時間減少約4.44%和1.11%,并將能耗分別減少13.27%和3.45%。當(dāng)處理的圖像數(shù)量增加時,預(yù)加載工作流程可以減少更多的運行時間和能耗。對于iSmart3和Skrskr,可調(diào)節(jié)循環(huán)次數(shù)方法的運行時間分別減少了1.78%和3.10%,能耗分別減少了12.92%和11.29%??紤]到可調(diào)節(jié)循環(huán)計數(shù)僅應(yīng)用于前兩個PWC層,因此更改為合適的網(wǎng)絡(luò)模型將獲得更顯著的效果。對于iSmart3,可堆疊共享PE減少了10.87%的運行時間和16.07%的能耗。對于Skrskr,可堆疊共享PE減少了5.49%的運行時間和13.55%的能量。由于內(nèi)存的限制,運行時間的減少并不重要。但是,由于減少了計算資源的消耗,因此能源的節(jié)省非常重要。通道增強方法具有最大的改進(jìn),可以減少Skrskr和iSmart3的運行時間10.85%和17.98%。它們的功耗降低了約1/4。通道增強不僅可以提高硬件資源的利用率,而且可以大大提高加載圖像的帶寬。將所有優(yōu)化方法應(yīng)用于SkrSkr,運行時間縮短了30.29%,能耗降低了35.49%。iSmart3的改進(jìn)更加明顯,運行時間縮短了35.98%,能耗降低了52.06%。
與之前的DAC-SDC目標(biāo)檢測加速器相比,結(jié)果如表2所示。與iSmart3- SkyNet相比,Skrskr-SkyNet使用了更有效的量化,這也使得Skrskr的GOPS/W值為iSmart3的2.24倍,準(zhǔn)確率也因為DWC使用了線性緩沖區(qū)從0.716增加到0.731。根據(jù)第3節(jié)所述的優(yōu)化策略,可以在不改變量化方法的情況下對每個加速器進(jìn)行進(jìn)一步優(yōu)化?;趇Smart3改進(jìn)的SEUer A型不僅由于行緩沖區(qū)使精度提升到0.724,GOPS/W和Energy/Picture還分別優(yōu)化了1.85倍和2.14倍?;赟krskr改進(jìn)的SEUer B型幀率從52.429提高到78.576,功耗降低了近1/2。此外,SEUer B型的GOPS/W和Energy/Picture分別比Skrskr增加了1.5倍和1.9倍。
表2 優(yōu)化策略效果對比
本文利用Roofline模型對深度可分離卷積進(jìn)行分析,然后面向低功耗目標(biāo)檢測提出了DNN加速芯片的優(yōu)化策略,包括可堆疊共享PE、可調(diào)節(jié)循環(huán)次數(shù)、通道增強和預(yù)加載工作流等優(yōu)化措施,通過選擇iSmart3-SkyNet和Skrskr-SkyNet作為基礎(chǔ)網(wǎng)絡(luò),F(xiàn)PGA驗證效果顯著。對于iSmart3-SkyNet,本文提出的方法可以增加精度并提高能效;對于Skrskr-SkyNet,本文基于提出的優(yōu)化策略所設(shè)計的加速器以78.576 fps的速度和0.068 J/圖像的速度進(jìn)行計算,性能超過2020年DAC低功耗目標(biāo)檢測國際頂尖競賽第1名UltraNet,目前在此類目標(biāo)檢測加速器設(shè)計領(lǐng)域處于較為領(lǐng)先地位。