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

面向移動終端的殘差網絡加速器設計

2020-09-03 08:38:32林秀男
小型微型計算機系統 2020年8期

林秀男,錢 慧

(福州大學 物理與信息工程學院,福州 350100)E-mail:qianhui@fzu.edu.cn

1 引 言

殘差網絡(Residual Network,ResNet)[1]是近年來廣受關注的一種卷積神經網絡(Convolution Neural Network,CNN).ResNet通過殘差函數有效地解決了CNN隨著網絡層次加深而出現的梯度消失和網絡退化問題.目前為止,最深的殘差網絡層次已達到1000多層,在圖像分類、對象檢測和語義分割等領域中都表現出了良好的性能.隨著深度神經網絡理論逐漸成熟,面向資源有限的移動終端平臺上的硬件加速設計成為重要的研究領域和商業應用的熱點.

相對于樸素貝葉斯、K最近鄰和支持向量機等已廣泛商用的機器學習算法來說,所有CNN模型部署都面臨著存儲和計算資源需求過大的問題.目前,研究學者主要通過數據量化和稀疏化來壓縮網絡模型.文獻[2]實現了8-bits的參數量化,在精度損失約為1%的情況下,模型壓縮了約15~20倍.文獻[3,4]使用K-means標量量化方法量化參數值,實現了16~24倍的網絡壓縮,而且僅損失1%的精度.在網絡稀疏化方面,文獻[5,6]分別提出通過剪枝、量化和霍夫曼編碼的方式,動態網絡手術的剪枝策略分別對模型壓縮了35~49倍和17~108倍.雖然經過壓縮后的模型對存儲需求有所降低,但仍有GB級別的計算量.面對如此大量的計算,尤其是在低功耗平臺上,部署CNN進行實時推理工作是一個挑戰.目前,主要是廣泛運用并行計算來解決這個問題,但并行度越高,對計算資源的需求量越大.這就導致計算資源和并行度之間的折衷關系.所以,目前CNN在移動終端上的部署依然是一個極具挑戰的課題.

2 相關工作

FPGA因具有功耗低、結構靈活等優點成為目前部署CNN的主流平臺.早期基于FPGA的深度神經網絡加速器主要是利用FPGA中豐富的邏輯資源,通過并行計算來提高速度.Sankarada[7]根據CNN中不同卷積層的特點設計了一個大規模并行CNN協處理器.Chakradha等人[8]提出CNN在計算過程中體現了三種并行性:卷積計算的并行性,多個輸入數據被組合成為單個輸出數據的內部輸出并行性,以及多個獨立的輸出數據之間同時計算的輸出間并行性,并基于此設計了CNN并行計算加速器.Cadamb等人[9]將CNN的計算過程表示為包含大量數據的矩陣和向量操作,通過數組排序、查找最小值和聚類等二次操作來減少原始卷積計算的計算量.然而隨著網絡規模的不斷增大,外部內存帶寬成為限制加速器計算能力的主要瓶頸.加速器的研究重點轉向解決外部內存帶寬問題.通過優化存儲器的讀寫策略來有效地提高系統的運行效率,進而解決神經網絡加速器中計算模塊的吞吐量與FPGA平臺外部內存帶寬的匹配問題.文獻[10-13]中提出通過設計靈活的存儲層次結構來減少內存瓶頸的影響,從而支持CNN復雜的數據訪問模式.Zhang等人[14]針對內存優化提出基于roofline模型的解析設計方案,通過循環平鋪和轉換的方式對數據讀寫進行優化.而文獻[15,16]利用流水線實現了從輸入到輸出的不間斷的并行數據流,提高了加速器的吞吐率.

目前在移動終端進行部署的網絡模型主要是針對經典的CNN,在ResNet模型部署方面僅有少量的研究工作.Ma等人[17]采用最大化資源利用率和最小化數據移動的思想,并使用可擴展和復用的計算原語來優化硬件約束下的物理設計,設計出一種端對端的深度ResNet加速器.Li等人[18]在FPGA上通過OpenCL來加速ResNet.通過構造一個輔助的深度學習加速器來實現ResNet中的殘差函數,并通過數據并行和流水線,使濾波器參數與圖像數據同步進行處理.相對經典的CNN來說,ResNet的硬件實現更具挑戰性.因為ResNet具有許多不同類型的層,這些層的尺寸和核的大小都會有所差異,另外ResNet還結合了兩個非相鄰層之間的跳轉連接用來計算殘差.這些特點都使ResNet的結構高度不規則和更復雜,增加了其在移動終端的部署難度.

本文通過綜合運用流水線、并行和復用的策略實現了在有限資源移動終端上的RestNet部署.其硬件實現主要包括卷積計算單元、殘差計算單元和全連接層計算單元.本文的主要工作如下:首先,采用K-means聚類算法對模型中的32位浮點參數進行定點量化,降低模型部署過程中的參數存儲要求以及計算復雜度.其次,各計算單元都基于并行計算和流水線實現.另外本文還利用分層存儲結構和乒乓片內緩存實現對殘差計算單元的復用,以減少片外存儲器的帶寬限制和計算資源需求.

3 殘差網絡模型

對于經典的CNN,在不斷增加神經網絡的深度時,模型的精度會先上升達到飽和,此時再繼續增加深度則會導致精度下降[1].針對這個問題,殘差網絡引入殘差結構,即殘差塊.殘差塊所起到的效果就是在網絡模型精度已達到飽和之后,再增加的層只是起到層與層之間的恒等映射作用,這樣就不會因誤差增加而導致精度下降.殘差塊的結構如圖1所示,殘差網絡與經典CNN網絡之間的區別在于殘差塊中引入了跳轉連接,使得先前殘差塊的信息無障礙地流入下一個殘差塊,以此來改善信息的流通,避免梯度消失和網絡退化問題.如圖1所示為常用的殘差塊,包括標準殘差塊和瓶頸塊[1].

圖1 殘差塊結構圖

定義殘差塊的形式是y=F(x,W)+x,x,y分別是殘差塊的輸入向量和輸出向量.F(x,W)是需要學習的殘差映射.殘差函數F的形式是靈活的,如對于圖1中的標準殘差塊,其殘差映射為F=W2σ(W1x),其中W1,W2分別為殘差塊中第1層和第2層的權重參數,σ為線性整流函數(Rectified Linear Unit, ReLU).而瓶頸塊中的1×1的卷積操作具有降維的作用,同時能夠引入更多的非線性變換,增加殘差塊的深度,進而提高殘差網絡的表示能力.圖2所示的是使用標準殘差塊構造的具有6個殘差塊的ResNet,即為本文部署在移動終端上的ResNet模型結構.

圖2 具有6個殘差塊的殘差網絡

4 殘差網絡的硬件實現

ResNet的硬件實現如圖3所示,包括以下模塊:輸入數據緩沖器、權重緩沖器、卷積計算單元、殘差計算單元、全連接層計算單元、控制器和輸出數據緩沖器組成.

圖3 ResNet硬件實現的整體架構

4.1 參數量化

在硬件平臺進行浮點計算是很難實現的.因此首先需要對模型參數進行定點量化.本文針對神經網絡浮點參數利用權重共享的方法進行矢量壓縮和量化[19],將k-means聚類算法應用在其中.假設權重矩陣W∈Rn×m,收集矩陣中所有權重的標量值w∈R1×mn.設定簇的數量為k,cj表示第j個簇的中心值.則有聚類公式為:

天然氣在分布式能源成本中占比超70%,在天然氣價格高,同時直供氣得不到燃氣公司支持的情況下,企業成本居高不下。天然氣價格高,天然氣是清潔能源,相同熱值的管道天然氣終端價格是煤炭價格的2倍。雖然川發改價格〔2015〕463號文中明確規定:“新建天然氣分布式能源發電企業應與中石油西南油氣田分公司(或中石化西南油氣分公司)簽訂直供合同,降低燃氣成本。”然而在實際項目推進過程中,天然氣分布式能源投資企業在取得天然氣直供許可上存在著較大困難:一方面,各終端天然氣公司有“供區”;另一方面,城市規劃也難以支持所有的天然氣分布式能源都能建設直供天然管道。

(1)

建立一個字典存放每個簇的中心值并賦予一個索引.在完成聚類過程之后,神經網絡的各個權重就可以通過查表的方式,并用簇的索引值來表示:

(2)

其中z表示字典中對應簇的索引.對于參數標量量化的方式,通過索引值和字典就可以確定權重參數.

在標量量化的基礎上,本文繼續考慮結構化矢量量化參數的壓縮方法[20].矢量量化參數的基本思想是將向量空間劃分成為多個不相交的子空間,并在每個子空間中分別進行量化操作.對于全連接層而言,采用矢量量化的方法比現有矩陣因式分解的方法更有優勢.假設給定權重矩陣W∈Rn×m,按列方向將權重矩陣劃分多個子矩陣:

W=[W1,W2,…,Ws]

(3)

其中Wi∈Rn×(m/s)表示權重矩陣m列被分成了s份.然后對每一個子矩陣執行k-means聚類運算:

(4)

(5)

與標量量化方法相比,矢量量化方式需要存儲每個權重子向量的索引值和字典.

4.2 卷積計算單元

卷積層的計算過程是通過卷積核遍歷二維離散信號,將輸入特征圖的數值與卷積核對應位置的數值相乘并累加,得到輸出結果.圖4為卷積核為3×3的卷積計算單元的結構.卷積計算單元主要由數據緩沖器、權重緩沖器、乘法器組、加法樹、激活函數模塊和池化模塊組成.在每次卷積時,首先將特征圖數據加載到數據緩沖器中,權重數據通過索引值從字典中提取出來加載到權重緩沖器中.然后將輸入數據緩沖區中的數據通過移位寄存器逐行進入乘法器組中進行乘法運算,再經加法樹進行累加求和得到一次的卷積結果.激活函數模塊和池化模塊都是可選模塊.各模塊詳細說明如下.

圖4 卷積計算模塊結構圖

激活函數模塊:卷積計算的結果需經激活函數ReLU進行計算.根據ReLU特性,當輸入數據大于或等于0時,該值保持不變.當輸入數據小于0時,輸入數據設置為零.因此,只需進行輸入數據的符號位的判斷即可.當符號位為0時,輸入值保持不變.當符號位為1時,它輸出0.

池化模塊:本文進行的是最大池化操作.其中,數據的存儲和讀取與卷積計算中的輸入數據緩沖器是相同.不同之處在于卷積操作是由乘法器組和加法樹完成,而池化的操作過程由比較器組完成.

在卷積計算中存在卷積核是單輸入通道的情況.由于不同卷積核之間的計算相互獨立,因此可以在同一個時刻,對輸入數據的同一個區域進行多個卷積核的并行卷積計算,從而實現輸入數據的復用.卷假設NUM是卷積核的數目,NUM′表示同一時刻并行計算的卷積核數目,通過每次并行計算NUM′個卷積核,只需要進行NUM/NUM′次就可以完成卷積計算,在很大程度上加速卷積計算的完成.

在卷積計算過程還存在卷積核是多輸入通道的情況.當對特征圖進行多通道卷積時,卷積核的每個通道都要分別與特征圖的對應通道進行卷積.最后將各個通道相應位置上的結果進行累加計算,得到一個輸出通道的結果.假設卷積核和特征圖的通道數都為C,被劃分為N組,每組有C′個通道.多通道卷積模塊累加計算如圖5所示.首先選擇第1組C′個卷積核通道,與特征圖對應的C′個通道進行卷積運算,然后將C′個通道的卷積結果累加作為第1組的結果,輸出到輸出緩沖區1中.接著切換到第2組數據的計算,并將計算結果輸出到輸出緩沖區2中,之后以此類推計算出N組的結果.最后將N個輸出緩沖區對應位置數據通過加法樹相加,得到這個輸出通道的最終卷積結果.

圖5 多通道卷積模塊累加計算示意圖

4.3 殘差計算單元

標準殘差塊如圖1所示,由兩個卷積層和一個向量加法組成.因此殘差計算單元可以使用卷積計算單元的結構進行計算.殘差計算模塊由兩個輸入緩沖器、一個卷積計算模塊、兩個輸出緩沖器和一個控制器模塊組成.兩個輸入和輸出緩沖器可以形成乒乓結構,通過圖3中的控制器實現不同殘差塊的數據輸入,實現對殘差計算單元的復用.

4.4 全連接層計算單元

定義輸入全連接層的特征圖為M×M,首先需要展開成1×M2的向量,假定全連接層的權重參數是一個n×M2的權重矩陣W,進行一次全連接層計算后輸出向量維度為n×1.輸入特征圖為x,則全連接層的輸出z為:

zT=W*xT

(6)

用g表示全連接層的激活函數ReLU,則經激活函數后的輸出y為:

yT=g(zT)=g(W*xT)

(7)

針對神經網絡的全連接層存在參數量大,且相互之間沒有依賴關系的特點,本文采用分組計算的思想.將權重矩陣拆分成為固定大小的子矩陣,各個子矩陣可以并行計算.假設將n×M2的權重矩陣W按列劃分為K組,則子矩陣的數量為C=?M2/K」,并編號為Wij,其中i∈(1,…,K)表示權重矩陣按列被劃分成K組,j∈(1,…,n)表示該子矩陣為權重矩陣的第j行,即第j個輸出節點.同樣的也將M2×1的輸入特征圖劃分為K組,標記為Xi,其中i∈(1,…,K).在進行拆分之后,全連接層的第j個輸出節點的結果是由K組的計算結果累加得到的.其計算公式如下:

(8)

對于本文圖2中的網絡模型,其第一層全連接層輸入層權重大小為200×3136.將權重矩陣按列劃分為64組,其中每組包含200×49個權重.與權重的劃分方式相同,將1×3136的輸入值也分成64組,每組49個輸入值.權重數據首先通過索引值在權值共享字典中查找出對應權重,然后將權重數據與特征圖數據分別存放在權重數據緩沖區和數據緩沖區中,每組對應位置的數據通過49個乘法器并行計算.權重數據和特征圖數據都是8-bits.完成乘法計算之后,需通過加法樹對49個相乘結果進行累加.在完成64組的計算后,通過加法樹對64組結果進行累加得到全連接層的輸出.每組計算過程如圖6所示.

圖6 全連接層計算模塊結構圖

5 實驗結果

5.1 模型參數壓縮

本文采用的ResNet網絡結構為圖2所示,在MNIST手寫數字數據集上進行分類任務訓練.對于訓練完成的網絡模型參數,使用k-means量化參數.將參數分為256個簇,權重矩陣的索引值為8-bit,簇中心的值為16-bit.之后使用1000張測試圖像進行實驗,結果表明該量化策略只帶來了約1%的精度損失.網絡參數量化的結果如表1所示.

表1 參數量化結果

由表1可知,整個網絡的參數壓縮了將近3.7倍.卷積層的參數采用的是標量量化的方式,壓縮了近4倍的參數量,全連接層采用矢量量化的方式,按列方向將權重矩陣劃分為64組,然后對每個組都使用k-means進行量化,壓縮了3.53倍的參數量.

5.2 硬件部署平臺和資源使用情況

搭建ResNet的硬件平臺選用的是Xilinx FPGA Zynq系列ZCU102開發套件,該平臺擁有強大的高速信號處理能力,同時具有超大容量的存儲器以及諸多的邏輯資源.其時鐘頻率為300MHz,中央處理器有基于ARM v8架構的四核64位Cortex-A53應用處理單元以及基于ARM v7架構的雙核32位Cortex-R5實時處理單元.處理系統具有4GB存儲空間的DDR4,可編程邏輯部分具有512MB存儲空間的DDR4.系統邏輯單元600K、DSP Slice為2520、最大I/O引腳數328.表2 為部署ResNet的總體資源使用情況.

表2 總體資源使用情況

文獻[17]是將ResNet-50部署在Altera Arria-10 GX 1150的平臺上,該平臺有427.2K的自適應邏輯模塊,1518個DSP為,2713個RAM塊.表3為本文所設計的加速器、與文獻[17]中的加速器的比較情況.

表3 ResNet的部署結果對比

6 總 結

本文提出了一種應用在移動終端可擴展的ResNet加速器設計.該加速器是針對具有瓶頸塊或標準殘差塊的ResNet的優化實現.通過綜合利用流水線、并行和復用的策略,降低模型部署所需的存儲需求、計算資源.該加速器能夠有效地在Zynq-ZCU102上實現ResNet,其系統時鐘可達到300MHz,延時為26.47ms,DSP占用率為60.4%,LUTRAM占用率為4%.并且通過卷積層中選擇不同的并行計算數,全連接層中選擇不同的子矩陣大小,該加速器可適用于具有不同資源的移動終端.

主站蜘蛛池模板: www精品久久| 国产精品嫩草影院视频| 欧美a√在线| 无码福利日韩神码福利片| 欧美激情视频二区三区| 精品视频免费在线| 亚洲精品手机在线| 福利国产在线| 亚洲日韩欧美在线观看| 成人小视频在线观看免费| 欧美成人A视频| 97久久免费视频| 在线看国产精品| 欧美精品二区| 国产高清又黄又嫩的免费视频网站| 精品亚洲欧美中文字幕在线看 | 亚洲视频一区| 国产成人综合日韩精品无码首页| 成人一级黄色毛片| 在线观看无码a∨| 91精品国产丝袜| 另类欧美日韩| 国产区在线观看视频| 一级成人欧美一区在线观看| 日日碰狠狠添天天爽| 青青热久麻豆精品视频在线观看| 国产91丝袜在线播放动漫| 国产亚洲精品97AA片在线播放| 亚洲不卡网| 日韩毛片基地| 欧美日韩国产一级| 国产三级毛片| 内射人妻无码色AV天堂| 亚洲视频一区| 精品福利国产| 国产亚洲欧美在线专区| 在线毛片免费| 国产精品视频免费网站| 秋霞午夜国产精品成人片| 午夜免费视频网站| 久久免费精品琪琪| 免费毛片网站在线观看| 欧美精品H在线播放| 精品视频一区在线观看| 国产草草影院18成年视频| 亚洲国产成人综合精品2020 | 为你提供最新久久精品久久综合| 国产精品自在拍首页视频8 | 国产精品无码在线看| 一级片免费网站| 国产在线精彩视频论坛| 91日本在线观看亚洲精品| 成人福利在线看| 亚洲欧美不卡中文字幕| 极品尤物av美乳在线观看| 国产网友愉拍精品| 亚洲高清中文字幕| 她的性爱视频| 综合色天天| 小说区 亚洲 自拍 另类| 日韩精品久久无码中文字幕色欲| 在线观看国产黄色| 国产91丝袜在线观看| 国产成人高清亚洲一区久久| 波多野结衣一区二区三区四区| 国语少妇高潮| 亚洲欧美另类色图| 啊嗯不日本网站| 久久77777| 精品成人免费自拍视频| 美臀人妻中出中文字幕在线| 国产无码高清视频不卡| 呦系列视频一区二区三区| 国产人成午夜免费看| 国内精品一区二区在线观看| 日本福利视频网站| 欧美日韩成人| 国产精品人莉莉成在线播放| 亚洲精品第1页| 国产丝袜第一页| 国产激情无码一区二区三区免费| 国产二级毛片|