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

面向低精度神經網絡的數據流體系結構優化

2023-01-30 10:23:38范志華吳欣欣李文明曹華偉安學軍葉笑春范東睿
計算機研究與發展 2023年1期

范志華 吳欣欣 李文明 曹華偉 安學軍 葉笑春 范東睿

1 (處理器芯片全國重點實驗室(中國科學院計算技術研究所) 北京 100190)

2 (中國科學院大學計算機科學與技術學院 北京 100049) (fanzhihua@ict.ac.cn)

深度神經網絡(deep neural network,DNN)模型規模變得越來越大,例如AlexNet[1]和VGG16[2]網絡中分別包含6 000萬和1.38億個參數,大規模的數據以及復雜的計算過程對硬件計算、存儲資源的需求也隨之加大,神經網絡壓縮技術能有效緩解對計算和存儲的壓力.量化是一種廣泛使用的壓縮技術,利用神經網絡中數據的冗余性,將高精度浮點數據映射到使用更少位的低精度整型數據(INT8,INT4或者更低),以此降低神經網絡推理的硬件開銷.

為充分體現低精度神經網絡的性能和能效優勢,許多面向低精度神經網絡的加速器被提出.DRQ架構[3]提出了一種基于區域的動態量化方法,該方法可以根據激活值中的敏感區域動態改變DNN模型的精度,并針對所提出的敏感區域算法設計了一種混合精度卷積陣列加速器.AQSS[4]基于隨機計算方法實現了固定精度的7 b加速器結構,該加速器通過移位器代替乘加器,提高了加速器的性能.算法與硬件架構的配合使得此類加速器在模型準確率與性能等方面可以取得良好表現,但是此類架構與軟件方法之間緊耦合且僅支持單一精度,使得很難適用于其他的量化算法和神經網絡模型.

由于量化算法和神經網絡模型的不同,一些架構通過支持多種精度運算來增加靈活性.OLAccel[5]基于4 b的乘加單元對權重和激活值進行低精度計算,同時考慮了少量高精度的離群值的存在,增加了一個額外的高精度乘加單元,用于離群值的計算.BitFusion[6]設計了精度可變的乘加單元,能夠支持精度為2的任意指數的乘加運算.由于可以支持多精度數據的運算,相比于前一類加速器,此類加速器能支持更多的量化方法和低精度網絡.但是,此類加速器采用細粒度的配置方式,給編譯造成比較大的困難,并且對于計算部件的重構會帶來額外的開銷.另外,此類架構的時鐘頻率都受限于計算部件的設計.

數據流架構的執行方式與神經網絡算法具有高度匹配性,并且在靈活性、性能之間具有良好權衡.Eyeriss[7]是一款典型的數據流神經網絡加速器,通過減少數據移動、實現本地數據復用等方式最小化模型中數據移動距離,從而降低神經網絡加速器的能耗.DPU[8]面向神經網絡的稀疏性對數據流架構進行了優化,通過去掉與0相關的無效操作提升了數據流芯片的性能與能效.然而,現有數據流加速器沒有面向低精度神經網絡展開研究,而且都關注計算部件的設計,忽略了數據在片上存儲和片外存儲之間的傳輸問題.此外,傳統數據流架構通過雙緩沖機制掩蓋數據傳輸的延遲,但是當部署低精度(INT8,INT4)神經網絡時,傳輸帶寬的利用率顯著降低.這導致計算執行時間無法掩蓋數據傳輸延遲,使得計算陣列完成此次計算之后不能馬上開始下一次計算,需要等待數據傳輸完成,從而降低了數據流架構的性能和能效.

基于以上問題,本文面向低精度神經網絡,對數據流架構進行了優化,設計了軟硬件協同的低精度神經網絡加速器DPU_Q.本文的貢獻有4個方面:

1)為充分挖掘低精度卷積計算過程中的數據并行性,本文設計了靈活可重構的計算單元,根據指令的精度標志位動態重構數據通路,能高效靈活得支持多種低精度數據運算,并實現計算部件的高利用率和高峰值性能;

2)為支持低精度神經網絡中復雜的訪存模式,本文設計了Scatter引擎,能對低精度數據進行拼接、預處理,以滿足高層次/片上存儲對數據排列的格式要求,能有效應對復雜的訪存模式并解決低精度數據傳輸帶寬利用率低的問題;

3)為充分發揮數據流架構的性能優勢,本文提出了一種數據流圖映射算法,兼顧負載均衡的同時減少了訪存和數據流圖節點之間的數據傳輸帶來的開銷;

4)通過實驗評估,相比于同精度的 Titan Xp GPU,DPU_Q可以獲得最高3.18倍的性能提升和4.49倍的能效提升.相比于同精度的Eyeriss加速器,DPU_Q可以最大獲得6.05倍性能提升和1.6倍能效提升,相比于BitFusion加速器,可以最大獲得1.52倍性能提升和1.13倍能效提升.

1 相關研究

量化是一種神經網絡壓縮技術,通過將神經網絡模型中的數據映射到使用更少位的數據域,減小神經網絡存儲規模、簡化計算過程從而加快神經網絡訓練和推理的速度.量化的對象常為神經網絡中的權值[9]、激活值[10]和反向傳播中的梯度[11].常見的低精度有 16 b,8 b,4 b.這些低精度神經網絡經過量化、重訓練過程之后,能夠保證模型準確率損失在可接受的范圍內,因此,面向低精度神經網絡的量化算法和體系結構研究成為計算機領域的研究熱點.表1展示了具有代表性的低精度神經網絡加速器.

為充分體現低精度神網絡的性能和能效優勢,許多面向低精度神經網絡的加速器被提出[3-7].DRQ[3]架構根據激活值矩陣中敏感區域的特征,動態改變神經網絡網絡的精度,并且從硬件架構層面動態適配模型精度,設計了支持多種混合精度的卷積計算陣列.AQSS[7]架構則是基于隨機計算的計算模式,設計了7 b精度的加速器微架構,并且使用移位器實現乘加計算,顯著提升了計算性能和效率.然而,基于隨機計算的架構需要額外的資源開銷,例如隨機數據生成、預處理等.以上述DRQ和AQSS為代表的、與軟件算法緊耦合的架構的缺點是靈活性較差,很難適用于其他的量化算法、不同的神經網絡模型以及模型精度.

由于量化算法和神經網絡模型的不同,單一精度使加速器的靈活性受限,因此,一些架構通過支持多種精度運算來增加靈活性.OLAccel[5]基于4 b的乘加單元對權重和激活值進行低精度計算,同時考慮了少量高精度的離群值的情況.增加了一個高精度乘加單元,用于計算離群值,避免高精度與低精度計算單元的更新帶來的一致性問題.BitFusion[6]引入了動態比特級融合/分解思想,是一種可變精度的比特級加速器,它由一組可組合的比特級乘加單元組成,動態融合以匹配單個DNN層的精度.該加速器的缺點在于細粒度的可重構運算部件使編程和算法移植變得困難,而且此類架構的時鐘頻率都受限于計算部件的設計.通過此類加速器的設計思想我們得到啟發,低精度神經網絡加速器的設計是需要同時支持低精度運算與部分高精度運算,一方面能在性能與模型準確率的權衡中獲得最大收益,另一方面還可以支持更多的量化方法和網絡模型,增加架構的靈活性.

數據流架構的執行方式與神經網絡算法具有高度匹配性,并且在靈活性、粗粒度可重構性、性能之間具有良好權衡.Eyeriss[7]在整個模型中使用16 b的量化數據進行推理,并且通過減少某些數據移動、實現本地數據復用等方式最小化神經網絡模型中數據移動距離,從而降低神經網絡加速器的能耗,但Eyeriss由于精度較大,使其加速效果并不顯著.DPU[8]面向稀疏神經網絡對數據流處理器進行了優化.然而,現有數據流加速器沒有面向低精度神經網絡展開研究,更重要的,現有數據流架構側重關注數據流計算單元和數據流圖映射方面的研究,并未關注數據在片上存儲和片外存儲之間的傳輸.

2 背 景

2.1 深度神經網絡

DNN主要由多個卷積層組成,它們占據整個網絡處理約85%的計算時間[12],這些卷積層執行高維的卷積計算.卷積層在輸入特征圖 (input feature map,Ifmap)上應用卷積核(kernel)以生成輸出特征圖(output feature map,Ofmap).卷積層的輸入數據由 1 組2維輸入特征圖組成,每個特征圖稱為1個通道,多個通道的輸入組成1個輸入圖像,每個通道的特征值都與1個不同的2維濾波器(filter)進行卷積運算,通道上的每個點的卷積結果相加得到1個通道的輸出特征圖.卷積層的計算為

2.2 低精度神經網絡

低精度神經網絡是經過量化操作之后得到的神經網絡模型,量化能夠減少神經網絡模型中數據的精度,縮小神經網絡的規模,簡化計算來加速神經網絡的訓練或推理過程.

量化的過程可以描述為將網絡中的參數分成不同的簇,同一簇中的參數共享相同的量化值,量化之后對參數進行編碼,將量化后的參數轉換為二進制編碼來存儲.常見的量化算法有線性映射、k-means聚類;常見的編碼方式有固定長度的二進制編碼和變長的霍夫曼編碼.

表2展示了具有代表性的低精度神經網絡及其數據精度.Q_CNN[13]是將卷積神經網絡中的權值量化,對于圖像識別應用能顯著提升神經網絡的性能并減少存儲開銷.EIA[14]將權值和激活值都量化成8 b定點數據,DFP[15]和LSQ[16]將網絡中的權重和激活值等數據量化成多個不同的數據精度,而QIL[17]將權值和激活值量化成4 b數據.

Table 2 Representative Low-Precision Neural Networks表2 代表性低精度神經網絡

參考文獻[18]中的方法,分別對AlexNet和 VGG16網絡進行量化、微調,不同數據位寬與網絡模型精度損失的關系如圖1所示.對于VGG16網絡,數據位寬少于8 b時,模型的準確率就會出現明顯下降.而對于AlexNet網絡,數據位寬至少為4 b時,可以保證模型的準確率.

Fig.1 Relationship between the accuracy loss of the neural network model and the quantization of bit-width圖1 神經網絡模型準確率損失與數據位寬的關系

2.3 數據流架構

DPU[8]是一款典型的粗粒度數據流架構,采用數據流程序執行模型.計算機程序通過數據流圖表示,數據流圖由節點和連接節點的有向邊構成.節點表示計算過程,節點之間的有向邊表示數據依賴關系.計算節點是一個指令集合,各節點之間的調度與執行采用非搶占機制.借助于這種特殊的計算方式,DPU在功能靈活性方面與控制流驅動處理器相似,在能效上接近專用處理器芯片.

圖2展示了DPU的整體架構,該架構由2維PE(process element)陣 列 、 微 控 制 器 和 DMA(direct memory access)組成.DPU作為協處理器,通過接口與主機端進行交互.由于DMA傳輸不占用計算資源且控制簡單,所以,DPU使用DMA作為片上與片外存儲之間數據傳輸的部件.

Fig.2 Overall architecture of DPU圖2 DPU 架構

PE陣列由多個同構PE、片上網絡和片上存儲SPM(scratchpad memory)組成.片上存儲 SPM 負責存儲指令和數據,并由2塊相同大小的SPM塊組成,目的是通過雙緩沖機制掩蓋數據傳輸的延遲.片上網絡將PE陣列組織為2維mesh拓撲結構,并負責在PE之間傳輸配置信息和數據.

在每個PE內部,由路由、控制單元、寄存器堆、流水線執行單元組成.為充分利用數據并行性,流水線執行單元使用單指令多數據(single instruction multiple data,SIMD)技術,進入流水線執行單元的矢量寄存器中都包含多個數據.為了提高PE計算部件的利用率,DPU采用解耦合的流水線設計,將訪存、計算部件解耦合,訪存部件采用傳統5級流水,計算部件采用4級流水,減少了訪存階段.

微控制器負責控制PE陣列的執行,還負責與主機端進行通信.主機端向微控制器發送啟動信號以及數據流圖映射等配置信息,微控制器啟動并配置DMA,DMA將片外存儲中的數據加載至PE陣列的SPM中.微控制器配置并啟動PE陣列,每個PE獲得映射的數據流節點,根據節點中的指令,從SPM中加載數據,進入流水線單元執行.當PE陣列執行結束后,微控制器向主機端發送結束信息.DMA負責片上SPM中的結果傳回片外存儲.在此過程中,片上網絡負責PE之間傳遞配置信息與數據.

3 研究動機

3.1 計算單元精度不匹配

在傳統數據流架構中,計算單元的數據通路寬度為32 b,與低精度神經網絡中的數據寬度不匹配,不能充分利用低精度數據的性能、能耗優勢.圖3展示了數據流架構DPU中卷積運算的數據通路,數據通路中的數據位寬、計算部件、單個寄存器規模都是32 b,當計算低精度數據時,比如 8 b數據,雖然能夠完成計算,但在數據通路中傳輸、計算的數據的高24位全為0,造成計算資源的浪費.

3.2 訪存模式復雜

SIMD是一種利用數據并行性提升性能的技術.SIMD指令中的操作數都是一個向量,指令可以對向量中的每個操作數執行相同的操作和控制.SIMD的維度以8為例,即每條計算和訪存指令同時對8個數據進行計算和讀取/寫回,每條Load指令就可以將8個分量從片上存儲SPM加載到PE中的矢量寄存器中.在神經網絡推理過程中,8個SIMD可以并行計算不同圖像或者不同通道中相同位置的數據,但是這些數據需要在SPM中順序排列.然而,在片外存儲中,圖像數據按照圖像順序依次排列存儲在每張圖像內部,不同通道的數據依次排列存儲.所以在SPM中順序排列的SIMD數據在片外存儲中是地址離散、分散排列的,并非按照其在SPM中的順序排列.面對片外存儲中非連續數據的訪問,DPU對DMA進行了優化,不同通道之間或者不同圖像之間(SIMD之間的數據偏移)的地址偏移可以通過輸入圖像規模得到,所以根據訪存首地址以及該偏移值,即可得到8個SIMD數據在片外存儲的地址,DMA并行需要從片外存儲中讀取8個數據并依次寫回SPM即可.

Fig.3 The data path of convolution圖3 卷積運算的數據通路

在低精度神經網絡推理過程中,存儲的訪問模式變得更加復雜.圖4以8 b精度為例,展示了數據在片上和片外存儲中的排列格式.為了充分利用存儲資源和數據并行性,SPM中每個存儲單元存儲同一圖像中4個不同通道相同位置的數據,每個SIMD分量對4個通道數據進行卷積計算,而SIMD維度可以并行處理8個圖像的數據,這樣能充分挖掘數據的并行性,從而提升芯片的性能.但是,在每個圖像中,相同位置不同通道的數據在片外存儲中也并非連續存儲,意味著在SPM中每個地址的32 b數據在片外存儲中是分散排列的,因此,不同通道和不同圖像之間數據在片外存儲的偏移計算變得復雜.同時,使用優化后的DMA進行數據傳輸,每次只能并行讀取8個SIMD的數據,即8個圖像中單個通道的數據,所以對于8 b精度,DMA需要啟動4次,才能完成1次計算所需的4個通道數據的傳輸.

Fig.4 Memory access patterns in low precision data圖4 低精度數據的存儲訪問模式

3.3 傳輸帶寬利用率降低

在數據流架構DPU中,DMA負責片上SPM與片外存儲之間的數據搬運.與傳統數據流架構一致,DPU的片上存儲采用雙緩沖機制,目的是用計算時間掩蓋DMA的配置和數據傳輸時間.圖5(a)展示了AlexNet網絡5個卷積層進行1次DMA傳輸與1次計算的時間對比,對于32 b高精度數據,每一次啟動DPU的執行時間遠大于傳輸時間,傳輸時間完全可以通過雙緩沖機制掩蓋.然而,在數據流架構部署低精度神經網絡時,基于3.2節的分析,需要多次啟動DMA傳輸,導致數據傳輸時間變長,計算時間無法掩蓋傳輸延遲,使得雙緩沖機制失效.圖5展示了AlexNet網絡進行INT4和INT8的傳輸時間和執行時間.當精度為INT8時,conv3到conv5的數據傳輸時間超過了該層的執行時間,傳輸的平均帶寬利用率僅為20.05%;當精度為INT4時,AlexNet每一層都無法通過雙緩沖機制掩蓋傳輸延遲,傳輸帶寬的利用進一步降低.如圖5(b)所示的是雙緩存機制失效,可以看出,當第i?1層卷積運算結束后,第i層卷積的數據還未完成從片外存儲到片上SPM的傳輸,導致第i層的計算無法在上一層結束之后立馬開始,PE陣列需要長時間處于等待數據傳輸狀態,雙緩沖機制因此失去效果,使得計算單元的利用率下降,這會降低芯片的性能.

Fig.5 Calculation and transmission overhead of different precisions in AlexNet圖5 AlexNet網絡不同精度的計算和傳輸開銷

4 DPU_Q架構

基于對低精度神經網絡和數據流架構的分析,本文設計了面向低精度神經網絡的數據流架構DPU_Q,總體架構如圖6所示.DPU_Q核心部件包含微控制器、Scatter引擎、雙緩沖SPM、PE計算陣列和片外存儲.Scatter引擎負責片上SPM和片外存儲之間的低精度數據訪問和傳輸;PE陣列負責計算,其具有靈活可重構的低精度卷積計算部件RPU(reconfigurableprocess unit);雙緩沖 SPM既負責數據存儲,又掩蓋數據傳輸的延遲;微控制器負責控制各部分的功能.

Fig.6 The overall architecture of DPU_Q圖6 DPU_Q總體架構

與眾多神經網絡硬件加速器一樣,DPU_Q是由PE 陣列組成的空間架構(spatial architecture).PE 之間通過片上網絡進行互聯,每個PE內包含本地存儲和共享的片上存儲,PE其內包含簡單的計算單元.由于神經網絡中的計算是相對簡單且規則的操作,如張量的乘加運算,所以可以利用PE陣列的結構計算得到有效的處理.利用PE的本地和片上共享存儲可以實現數據的時間復用,并且數據流程序執行模型提高了程序指令級并行性的同時,數據流圖節點之間的數據傳輸實現數據的空間復用,從而減少存儲訪問.

DPU_Q架構的設計特點主要體現在3個方面:

1)在計算部件設計方面.以提升吞吐量和性能為目標,設計了靈活可重構的計算單元RPU,根據指令的精度標志位動態重構數據通路,能高效靈活地支持多種低精度數據運算,并且RPU內MAC簇可以進行通道維度并行,結合SIMD維度進行圖像(batch)維度并行,以此充分挖掘低精度神經網絡中的數據并行性.

2)在訪存部件設計方面.以提升低精度數據傳輸帶寬利用率為目標,設計了Scatter引擎,通過在數據傳輸過程中對數據進行重組、預處理,解決低精度數據訪存模式復雜的問題.

3)在調度方面.以提高計算部件的利用率為目標,設計了兼顧負載均衡和數據重用的dR(data reuse)數據流圖映射算法.

4.1 低精度卷積計算單元

圖7展示了DPU_Q中低精度卷積計算單元的數據通路,該數據通路能夠根據指令中的精度標志位動態選擇可重構計算單元中的計算部件.該數據通路由4個流水線階段組成.

第 1 階段為取指(instruction fetch,IF).此階段根據指令寄存器(program counter,PC)的值,從指令存儲中獲得指令.

第 2 階段為譯碼(instruction decode,ID).指令譯碼器對指令進行譯碼,將指令碼(opcode)、源/目的寄存器地址、精度標識位(precision flag)和加法樹使能信號(adder tree enable)等信息分別發送到相應的狀態寄存器和寄存器文件中.

第 3階段為指令執行(execution, EX).RPU 根據精度標識位動態選擇執行部件(MAC簇).然后,根據ID階段解析的源寄存器地址獲取源操作數,進行計算.加法樹從流水線寄存器(EX stage)中獲取使能信號,根據精度標識位將RPU計算的結果進行求和.另外,該階段還包含了可選的量化部件,目的是為上層軟件算法提供支持.

第 4 階段為寫回(write back, WB).在該階段,計算結果被寫回目的寄存器或者數據存儲中.

在DPU_Q的實現中,精度標志位設計為2 b寬度,用于表示 INT4,INT8,INT16,INT32 這 4 種精度.對應地,RPU中包含了8個INT4的MAC簇、4個INT8的MAC簇、2個INT16的MAC簇以及1個INT32的MAC.RPU根據精度標志位選取MAC簇,并建立MAC簇與寄存器堆、加法樹之間的線路鏈接.RPU和寄存器堆、加法樹之間的線路連接寬度都為32 b,在RPU內部,不同精度的MAC簇的計算總的數據寬度也為32 b,目的是可以充分利用部件之間線路鏈接和寄存器文件.另一方面,結合卷積的算法特點,同一MAC簇的MAC可以并行計算同一圖像不同通道的數據,充分利用低精度神經網絡通道間的并行性.在DPU_Q中,向量SIMD不同維度用于不同圖像之間的并行,單個SIMD內對相同圖像的不同通道數據進行并行,以此進一步提高計算并行性和吞吐量.

Fig.7 The data path of low-precision convolution in DPU_Q圖7 DPU_Q中低精度卷積的數據通路

4.2 Scatter引擎

Scatter引擎主要包括調度單元、Aggregator和Translator這3部分,如圖8所示.調度單元由地址計算單元和控制模塊組成.調度單元一方面負責計算多個圖像和通道數據在片外存儲中的地址;另一方面負責控制Aggregator和Translator的執行.Aggregator完成低精度數據的拼接,由多個插槽和用于同步的計數器組成.Translator負責SIMD數據格式轉換,由8個SIMD數據隊列、分發單元和同步單元組成.

調度單元根據圖像特征(map_feature)、訪存地址(mem_addr)和精度(precision)可以得到參與計算的每張圖像和每個通道的首地址.圖像特征是個3元組(x_slice,y_slice,z_slice),分別表示圖像的寬、高和通道規模.根據圖像特征三元組和精度可得到每個圖像在片外存儲中的偏移,根據x_slice、y_slice和精度便可得到圖像內每個通道的偏移,地址計算單元根據上述輸入信息得到訪存地址表,表中記錄需要訪問的片外存儲地址.控制模塊根據精度信息,首先生成Aggregator和Translator的控制信息.如果精度為32 b數據,Aggregator處于閑置狀態,數據不會通過Aggregator,直接從片外存儲進入Translator.如果是低精度數據,控制模塊負責提供Aggregator同步所需的s_counter信號.最后,控制模塊負責給Translator提供寫地址信息spm_addr.

Aggregator負責同一張圖像不同通道低精度數據的拼接,由多個插槽和同步計數器組成.Scatter引擎根據調度單元生成的訪存地址表讀取數據,每張圖像中相同點不同通道的數據依次寫進對應插槽中.每次在插槽中寫入1個數據,對應的同步計數器值減1,插槽是一個32 b的存儲單元,插槽的同步計數器歸零意味著插槽中已經完成多個低精度通道數據的拼接,然后,Aggregator將該32 b數據單元傳輸至Translator.其中,同步計數器的初始值由調度單元生成s_counter信號提供.

Fig.8 The structure of the Scatter engine圖8 Scatter引擎結構圖

Translator負責SIMD數據格式轉換,由分發器、SIMD數據隊列和同步單元組成.分發單元接受來自Aggregator或者片外存儲的數據,將不同圖像的數據送入不同的SIMD數據隊列中,SIMD數據隊列由先入先出(first in first out,FIFO)隊列組成,同步單元使用bitmap進行同步操作,bitmap中紀錄每個數據隊列中隊首數據是否就緒,一旦8個數據隊列的隊首數據就緒,則根據調度單元提供的spm_addr地址,將8個數據寫入SPM對應地址中.

4.3 調 度

在數據流架構中,程序使用數據流圖表示,數據流圖(dataflow graph,DFG)記為GDFG,由一組節點(vertices)和連接節點的有向邊(edge)組成,GDFG=(V,E).在粗粒度數據流架構中,數據流圖每個節點由一段代碼組成,代碼段作為基本的調度和執行單元.

負載均衡有利于提升數據流架構的部件利用率從而保證數據流架構性能的發揮,而數據流圖節點間的數據共享及復用能減少存儲訪問帶來的開銷,所以本文提出了兼顧負載均衡和數據復用的dR數據流圖映射算法.具體的算法如算法1所示.

算法1.dR數據流圖映射算法.

輸入:特征矩陣規模IFmap、權值矩陣規模kernel、數據精度precision、計算陣列拓撲PEA、計算陣列規模PEvol、片上存儲容量volume;

輸出:數據流圖GDFG=(V,E)、數據流圖節點V與計算陣列拓撲PEA的映射關系map(V,PEA).

①d_volume←calculate(IFmap,kernel,precision);/*計算每層參與運算的數據量*/

②instance←calculate(d_volume,volume); /*由 于某些神經網絡每層數據規模較大,需要多次計算*/

③vertices_work←calculate(d_volume,instance,PEvol);/*保證每個PE的負載均衡*/

④generate(vertices_work,V); /*根據每個節點的工作負載,編譯生成數據流圖節點集合V*/

⑤reduce_MA(V,GDFG);/*遍歷節點集合V,消除相同地址的訪問指令,將具有相同訪存指令的節點定義為節點之間的數據流動關系,實現數據復用*/

⑥SD←BreadthFirstSort(GDFG);

⑦ for each nodeninSDdo

⑧ for each PEpinPEAdo

⑨curruentcost←Cost(n,p);/*代價函數 */

⑩ ifcurruentcost

?bestcost←curruentcost;

?map(n,p);

? endif

? endfor

?SD←SD?{n};

?PEA←PEA?{p};

? endfor

算法1首先根據特征矩陣、權值矩陣規模和精度計算神經網絡每層參與運算的數據規模;然后根據片上存儲的容量計算迭代次數,受限于片上存儲容量,某些神經網絡層需要多次迭代才能完成計算.由于每次迭代計算的數據規??梢蕴崆坝嬎愕玫?,所以可以根據數據規模以及PE陣列的計算規模,為每個計算單元分配均衡數據量,達到負載均衡的目的.

根據每個PE的工作負載,編譯器生成每個數據流圖節點的指令,包括取數指令、計算指令等,生成了數據流圖的節點集合V.在reduce_MA操作中,遍歷節點集合V,如果節點之間包含了對相同地址的取數指令,意味著這些訪存指令是冗余的,只保留一個節點內的訪存指令,該節點作為訪存節點,去除其他節點的該條訪存指令.訪存節點作為上游節點,其他節點作為該訪存節點的下游節點,通過節點之間的數據流動代替冗余的訪存操作,實現數據的復用.

算法的下一步是程序的數據流圖GDFG到計算陣列PEA的映射.首先對數據流圖進行寬度優先遍歷,然后根據代價函數Cost評估每個數據流圖節點與不同PE映射方法的代價,選取最小代價的方案進行映射.由于數據流圖節點之間的依賴關系表示數據的流動,所以上下游節點應該盡可能映射到相鄰的PE,這樣一方面可以減少下游節點的等待時間,另一方面還可以減少對片上網絡的壓力.所以在算法1中將每個數據流圖節點映射到與其所有上游節點歐氏距離之和最小的PE上.其中,代價函數如式(2)所示,式(2)計算待映射數據流圖節點為n且映射到序號為p的PE時,節點n與其所有上游節點(已映射)的歐氏距離之和.

5 實驗設置

5.1 實驗平臺

為驗證第4節中所提方法的有效性以及評估DPU_Q處理低精度神經網絡的能力,本文使用中科院計算所研發的大規模并行模擬框架SimICT[19]實現了時鐘精確的模擬器,模擬器配置信息如表3所示.同時,實驗中使用Verilog語言實現了對DPU_Q的RTL 級仿真,并且利用 Synopsys Design Compiler工具進行綜合,使用Synopsys ICC編譯器進行布局布線,使用Synopsys VCS進行驗證設計.

Table 3 Configuration Information of DPU_Q表3 DPU_Q的配置信息

在本實驗中,微控制器用于執行控制程序,采用ARM架構處理器.DPU_Q由8×8的PE陣列組成, PE中配置了8 KB的指令緩存和32 KB的數據緩存.PE中數據通路的關鍵路徑為DECODE_REG→MUX→MAC_REG,時延為 0.8 ns,最高頻率可以達到 1.25 GHz.實驗中PE時鐘頻率設置為1 GHz.PE之間通過2維的mesh網絡連接,完成數據、控制信息在PE陣列的傳輸.SPM的大小配置為6 MB,用于保存數據和指令.

在啟動階段,主機端將DPU_Q所需要的指令和數據通過Scatter引擎從內存拷貝到SPM中,然后配置處理器陣列控制部件來啟動加速器的執行.計算任務完成之后,結果數據通過Scatter從加速器的SPM中拷回片外存儲當中.

5.2 測試程序

DPU_Q主要對低精度卷積運算進行優化加速,為評估性能,實驗選取AlexNet,VGG16網絡模型中的卷積層作為實驗的測試程序,各層規模如表4所示.實驗中使用文獻[18]提出的方法對AlexNet,VGG16卷積層的激活值和參數進行量化,計算過程中保留全精度的部分和.使用基于LLVM平臺設計的編譯器,編譯器將每個卷積層編譯為數據流圖并映射到PE陣列.

5.3 對比平臺

為評估DPU_Q性能,實驗中選擇GPU(NVIDIA Titan Xp)、低精度神經網絡加速器Eyeriss和BitFusion作為對比平臺.需要說明的是,由于cuDNN暫無法支持INT4,所以GPU平臺僅使用cuDNN實現INT8神經網絡;參考文獻[4]中的方法,實現了INT8的Eyeriss加速器.實驗中使用部件利用率評估映射算法的有效性,部件利用率計算為

Table 4 Benchmark Information表4 測試程序信息

6 結果分析

6.1 Scatter引擎收益

圖9展示了DPU_Q在執行不同精度的AlexNet和VGG16網絡時數據傳輸和執行的時間對比,其中傳輸時間指Scatter引擎進行數據傳輸的時間,執行時間指PE陣列計算時間.圖9(a)中AlexNet和VGG16網絡沒有經過量化,對于每一層計算執行時間都超過該層數據在片上SPM和片外存儲之間的傳輸延遲,DPU_Q可以通過雙緩沖機制掩蓋數據的傳輸延遲,對性能不會造成影響.

圖9(b)(c)分別為 INT8 和 INT4精度下,DPU_Q部署AlexNet和VGG16網絡時計算執行時間和傳輸時間的對比.得益于Scatter引擎,低精度數據的數據傳輸延遲不會超過計算部件的執行時間,雙緩沖機制完全可以發揮作用.AlexNet和VGG16網絡在不同精度下的傳輸帶寬平均利用率為80.01%.

Fig.9 Data transmission and execution time proportion of each layer of AlexNet and VGG16圖9 AlexNet和VGG16各層的數據傳輸和執行時間占比

因此,實驗證明了Scatter引擎可以有效解決低精度神經網絡復雜的訪存模式和帶寬利用率降低的問題,解決了低精度神經網絡執行過程中雙緩沖機制面臨失效的問題.

6.2 性能對比

圖10展示了不同精度下DPU_Q相對于DPU的性能提升.對于AlexNet和VGG16網絡,INT4精度下,DPU_Q的性能達到了最佳,分別是DPU的7.9倍和7.7倍.當精度為INT8和INT16時,DPU_Q相對于DPU性能分別平均提升了3.80倍和1.89倍.DPU_Q的性能提升得益于RPU的設計,RPU可以根據精度動態重構數據通路,RPU內的MAC簇可以并行計算多個通道,這使得DPU_Q具有高吞吐量并以此獲得性能的提升.當然,當精度縮小為1/n之后,性能并未達到理想的n倍加速,例如精度為8 b時的性能未到達32 b精度時的4倍,而是3.8倍.這是因為數據流架構的執行時間包括了配置初始化時間和計算時間,配置初始化的時間并未縮短.

Fig.10 Speedup promotion of DPU_Q over DPU圖10 DPU_Q相對于DPU的加速比提升

圖11展示了以Eyeriss為基準,DPU_Q執行AlexNet和VGG16網絡各層的加速比.DPU_Q執行各層的性能都優于Eyeriss.這是由于Eyeriss在進行神經網絡部署時,僅考慮減少數據在片上的移動距離,減少數據搬運帶來的功耗,并未挖掘神經網絡計算中的并行性.對于AlexNet,加速比最高的是conv1,其加速比是2.85,這是因為第1層的權重矩陣規模較大、通道數較少,RPU中利用通道并行性以及SIMD間利用通道并行性的優勢能顯著減少數據的平均執行時間.另外得益于本文提出的映射算法能對數據進行充分復用,使得計算部件利用率提高,加速效果更明顯.conv4和conv5的加速比較低,原因在于這2層的權重矩陣的規模很小,意味著可復用的數據占比減少,PE陣列的部件利用率下降,導致加速效果不明顯.當執行VGG16時,conv2_1和conv2_2層的加速比較大,分別是8.155和8.157,這2層的通道數較少,DPU_Q加速效果明顯的原因與第1層相似.執行AlexNet和VGG16網絡時,DPU_Q計算平均部件利用率為76.02%.

Fig.11 Speedup of DPU_Q over Eyeriss圖11 DPU_Q相對于Eyeriss的加速比

圖12展示了 DPU_Q,Eyeriss,BitFusion相對于GPU的性能對比,其中圖12(a)是INT8精度的性能對比,圖12(b)是INT4精度的性能對比.對于INT8精度,當部署AlexNet和VGG16網絡時,DPU_Q相比于GPU可取得3.18和1.16的加速比,DPU_Q的性能是Eyeriss的1.52倍和6.05倍.當網絡結構較為簡單時,Eyeriss通過最小化數據傳輸距離作為優化目標以及細粒度的數據流執行方式能夠取得較好的性能表現,但是當網絡結構復雜時,較差的數據復用以及低并行性使得性能下降較為明顯.

對于INT4精度,當部署AlexNet和VGG16時,DPU_Q相對于加速器BitFusion可以取得1.52和1.17倍的性能提升.與BitFusion相比,DPU_Q能取得較好的性能表現,主要原因是由于BitFusion比特級的計算部件重構會導致計算的數據通路較長,計算周期增加.另外,得益于DPU_Q同時利用不同圖像和不同通道維度的數據并行,實現了高吞吐量和性能的提升.

Fig.12 Performance comparison of DPU_Q,BitFusion,Eyeriss over GPU圖12 DPU_Q,BitFusion,Eyeriss相對于GPU的性能對比

6.3 能效對比

圖13展示了4種方案的能效對比,DPU_Q的能效都優于其他3種不同的平臺.當部署AlexNet和VGG16網絡時,DPU_Q的能效是GPU的4.49倍和3.34倍,造成GPU能效較低的主要原因是GPU的能耗非常高(計算資源平均部件利用率為41.35%).DPU_Q的能效是 Eyeriss的1.6倍和1.38倍.雖然Eyeriss的性能表現不佳,但是由于其具有毫瓦級的功率,使得其在能效方面具有良好表現.DPU_Q的能效是BitFusion的1.13和1.05倍,DPU_Q在性能方面的提升得益于挖掘了多種并行性和映射算法,但是在計算單元以及傳輸Scatter引擎等特殊部件的設計也帶來了額外能耗的開銷.

Fig.13 Energy efficiency comparison圖13 能效對比

6.4 硬件開銷

實驗中使用Verilog語言實現了對DPU_Q的RTL 級仿真,并且利用 Synopsys Design Compiler工具以 TSMC 12 nm 工藝進行綜合,使用 Synopsys ICC 編譯器進行布局布線.DPU_Q的面積和功耗分布如圖14所示,Scatter引擎所占面積比例為0.61%,功耗占比僅為0.80%.另外,DPU_Q的面積相對于DPU增加了17.6%,額定功耗增加33.59%,硬件增加的開銷主要來源是PE內RPU多種不同精度的計算部件.

Fig.14 Distribution of area and power consumption of DPU_Q圖14 DPU_Q的面積和功耗分布

7 總 結

本文結合低精度神經網絡的計算需求,設計了靈活可重構的計算單元和Scatter引擎,并提出了負載均衡和數據復用的數據流圖映射算法,設計了數據流加速器 DPU_Q.相比于同精度的 Titan Xp GPU,DPU_Q可以獲得最高3.18倍的性能提升和4.49倍的能效提升.相比于同精度的Eyeriss加速器,DPU_Q可以最大獲得6.05倍性能提升和1.6倍能效提升,相比于BitFusion加速器,可以最大獲得1.52倍性能提升和1.13倍能效提升,表現出良好的性能和能效優勢.本文僅針對卷積層進行了優化設計,由于神經網絡中還包括其他類型的計算,未來會面向神經網絡中其他類型的計算,進一步優化數據流架構.

作者貢獻聲明:范志華負責論文思路的提出、架構設計、實驗和論文的撰寫;吳欣欣負責論文思路討論和架構設計討論;李文明負責論文架構討論和整體質量把控;曹華偉負責論文修改及實驗指導;安學軍負責論文整體思路的指導;葉笑春負責論文整體架構設計及修改;范東睿負責論文整體架構設計.

主站蜘蛛池模板: 美女国内精品自产拍在线播放 | 免费a级毛片视频| 国产91熟女高潮一区二区| 国产成人免费高清AⅤ| 国产成人av一区二区三区| 91精品福利自产拍在线观看| 高清精品美女在线播放| 玖玖精品视频在线观看| 国产成人一区二区| 露脸真实国语乱在线观看| 免费国产不卡午夜福在线观看| 秋霞午夜国产精品成人片| 91亚洲国产视频| 精品91在线| 日韩不卡高清视频| 欧美精品1区2区| 91小视频在线观看免费版高清| 亚洲精品桃花岛av在线| 高h视频在线| 国产精品jizz在线观看软件| 91精品国产自产91精品资源| 亚洲精品国产乱码不卡| 99精品视频在线观看免费播放| 亚洲一区二区三区在线视频| 国产噜噜噜| 亚洲一区二区三区麻豆| 亚洲美女一级毛片| 国产精品女同一区三区五区| 妇女自拍偷自拍亚洲精品| 亚洲国语自产一区第二页| 亚洲人成网站在线播放2019| 中文字幕第4页| 国产香蕉国产精品偷在线观看| 成人午夜免费观看| 成人在线天堂| 2018日日摸夜夜添狠狠躁| 亚洲欧洲AV一区二区三区| 国产97公开成人免费视频| 日韩免费成人| 欧美日韩北条麻妃一区二区| 在线综合亚洲欧美网站| 无码粉嫩虎白一线天在线观看| 久久中文字幕不卡一二区| 爆乳熟妇一区二区三区| 亚洲无码高清免费视频亚洲| 99精品国产自在现线观看| 中文字幕永久视频| 国产综合另类小说色区色噜噜| 农村乱人伦一区二区| 国产靠逼视频| 久久天天躁夜夜躁狠狠| av性天堂网| 成人蜜桃网| 精品国产成人a在线观看| 四虎精品国产AV二区| 黄色网页在线观看| 91久久偷偷做嫩草影院精品| 在线人成精品免费视频| 亚洲码一区二区三区| 呦系列视频一区二区三区| 国产高清在线精品一区二区三区| 2021国产乱人伦在线播放| 国产精选小视频在线观看| 日韩免费成人| 色婷婷视频在线| 亚洲无码视频图片| 青青草原国产一区二区| A级毛片高清免费视频就| 欧美成人午夜视频免看| 日韩欧美综合在线制服| 色九九视频| 好吊妞欧美视频免费| 99久久精品视香蕉蕉| 亚洲精品大秀视频| 少妇人妻无码首页| 国产精品林美惠子在线播放| 国产精品福利导航| 在线观看国产黄色| 亚洲天堂日韩av电影| 伊人久久精品无码麻豆精品| 久久国产精品影院| 中国美女**毛片录像在线|