国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于近端策略優(yōu)化的阻變存儲(chǔ)硬件加速器自動(dòng)量化

2022-03-09 05:41張興軍卓志敏紀(jì)澤宇李泳昊
關(guān)鍵詞:權(quán)值加速器卷積

魏 正 張興軍 卓志敏 紀(jì)澤宇 李泳昊

1(西安交通大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 西安 710049)

2(北京電子工程總體研究所 北京 100854)

Fig. 1 Top-1 accuracy results of various CNNs on ImageNet圖1 CNN模型在ImageNet上的Top-1準(zhǔn)確率

卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)在圖像分類、語音識(shí)別和自然語言處理等領(lǐng)域取得廣泛應(yīng)用[1-3].但是,如圖1所示,模型準(zhǔn)確度的提升是以設(shè)計(jì)更深、更復(fù)雜的模型為代價(jià),這導(dǎo)致了更大的模型文件和更高的計(jì)算復(fù)雜度[4].在使用基于馮·諾依曼架構(gòu)的通用處理器進(jìn)行訓(xùn)練和推理時(shí),“內(nèi)存墻”問題(memory wall)限制了CPU和片外存儲(chǔ)之間的數(shù)據(jù)傳輸,成為性能瓶頸.此外,文獻(xiàn)[5]的研究表明CPU和片外存儲(chǔ)進(jìn)行一次數(shù)據(jù)傳輸?shù)哪芎谋冗M(jìn)行一次32 b浮點(diǎn)數(shù)加法運(yùn)算高約2個(gè)數(shù)量級(jí),大量的數(shù)據(jù)傳輸將產(chǎn)生巨大的能耗,這在邊緣計(jì)算和物聯(lián)網(wǎng)等資源受限的應(yīng)用場(chǎng)景下是不可行的,因此,需要新的體系結(jié)構(gòu)來緩解“內(nèi)存墻”問題.

內(nèi)存計(jì)算(processing in memory, PIM)通過將計(jì)算單元和存儲(chǔ)單元緊密結(jié)合,從而緩解了“內(nèi)存墻”的問題[6].基于憶阻器的交叉陣列(memristor-based crossbar),由于具有高密度、低功耗等優(yōu)勢(shì),被廣泛應(yīng)用于加速矩陣-向量乘運(yùn)算(matrix-vector multiplication, MVM).近期,專注于硬件設(shè)計(jì)的工程師提出了許多基于非易失性阻變存儲(chǔ)(resistive RAM, ReRAM)的硬件加速器設(shè)計(jì)[7-9].但是,由于數(shù)模(digital-to-analog converter, DAC)和模數(shù)(analog-to-digital converter, ADC)轉(zhuǎn)換器件的分辨率(resolution)、ReRAM cell的精度和ReRAM交叉陣列的尺寸有限,基于ReRAM的加速器無法直接高效地進(jìn)行32 b浮點(diǎn)數(shù)運(yùn)算[10].因此,需要使用低精度數(shù)值(low-precision data).

模型量化通過降低數(shù)據(jù)位寬,從而減少計(jì)算存儲(chǔ)開銷,這對(duì)基于ReRAM的硬件加速器非常友好[10].ISAAC[7]和PipeLayer[9]都使用16 b的權(quán)值和激勵(lì),Prime[8]使用8 b權(quán)值和6 b激勵(lì).但是,這些專注于硬件設(shè)計(jì)的工作都為權(quán)值和激勵(lì)分配統(tǒng)一的量化位寬,這種粗粒度的模型級(jí)量化忽略了神經(jīng)網(wǎng)絡(luò)不同層的結(jié)構(gòu)和冗余,無法有效達(dá)到模型精度和硬件開銷的最佳性能折中.因此,需要更細(xì)粒度的量化策略,例如逐層量化(layer-wise quanti-zation).逐層量化的問題使其量化策略空間巨大.假設(shè)一個(gè)模型有L層(L指卷積層和全連接層的總和),每層的權(quán)值和激勵(lì)可采用M種量化位寬的選擇,那么其量化策略的搜索空間為O(M2L).當(dāng)M和L很大時(shí),在如此大的量化策略空間上手工為每層搜索量化位寬非常耗時(shí).近期研究提出使用自動(dòng)機(jī)器學(xué)習(xí)(automated machine learning, AutoML)來自動(dòng)選擇量化位寬.文獻(xiàn)[11-13]使用基于深度確定性策略梯度(deep deterministic policy gradient, DDPG)[14]的強(qiáng)化學(xué)習(xí)算法來進(jìn)行自動(dòng)量化.但是這些研究存在3個(gè)問題:

1) 量化動(dòng)作本質(zhì)上是離散數(shù)值,而DDPG算法適用于連續(xù)動(dòng)作,因此基于DDPG的方法[11-13]需要?jiǎng)幼骺臻g轉(zhuǎn)換步驟;

2) 在文獻(xiàn)[11]中,通過手工遞減位寬來滿足資源約束條件,而不是通過學(xué)習(xí)獲得,并且其搜索時(shí)間漫長;

3) 大部分基于強(qiáng)化學(xué)習(xí)的自動(dòng)量化是基于FPGA[11-12]和傳統(tǒng)馮·諾依曼架構(gòu)的通用處理器的[15],缺少結(jié)合自動(dòng)量化算法的ReRAM加速器軟硬件設(shè)計(jì)說明.

此外,由于沒有成熟的ReRAM加速器芯片,目前主要基于模擬器來評(píng)估ReRAM加速器的性能.文獻(xiàn)[16-17]提供詳細(xì)的電路級(jí)(circuit-level)仿真,可用于仿真ReRAM加速器的面積、時(shí)延和功耗.文獻(xiàn)[18]提出一個(gè)快速評(píng)估ReRAM硬件性能的行為級(jí)(behavior-level)模擬器,支持混合精度計(jì)算,但不支持自動(dòng)選擇量化位寬.

基于上述分析,本文工作的主要貢獻(xiàn)有4個(gè)方面:

1) 提出基于近端策略優(yōu)化(proximal policy optimization, PPO)[19]的自動(dòng)量化算法,使用離散動(dòng)作空間,避免動(dòng)作空間轉(zhuǎn)換步驟;

2) 設(shè)計(jì)新的包含ReRAM加速器硬件開銷和模型精度的獎(jiǎng)勵(lì)函數(shù),使PPO Agent通過學(xué)習(xí)來自動(dòng)搜索同時(shí)滿足資源約束和精度需求的量化策略,不需要手工遞減量化位寬步驟;

3) 在遵循ReRAM加速器設(shè)計(jì)原則的前提下,結(jié)合自動(dòng)量化算法,分析支持混合精度計(jì)算的ReRAM加速器的軟硬件設(shè)計(jì)改動(dòng);

4) 實(shí)驗(yàn)表明:與粗粒度的量化方法相比,提出的方法可以減少20%~30%的硬件開銷,而不引起模型準(zhǔn)確度的過多損失.與其他自動(dòng)量化相比,提出的方法自動(dòng)搜索滿足資源約束條件的量化策略,避免手工遞減步驟,搜索時(shí)間快,并且在相同的資源約束條件下可以進(jìn)一步減少約4.2%的硬件開銷.

1 背景與相關(guān)工作

1.1 CNN推理階段workload分析

為了不產(chǎn)生歧義,首先統(tǒng)一CNN和神經(jīng)網(wǎng)絡(luò)(neural network, NN)的術(shù)語:

1) CNN卷積核(filter or kernel)的權(quán)值(weight)對(duì)應(yīng)于NN中的突觸(synapse);

2) CNN中輸入/輸出特征圖(ifmap/ofmap)的激勵(lì)(activation)對(duì)應(yīng)于NN中的輸入/輸出神經(jīng)元(input/output neuron).

CNN推理階段涉及卷積、池化、非線性激活(sigmoid or ReLU)和歸一化等運(yùn)算.推理階段的計(jì)算負(fù)載(workload)主要集中在卷積層和全連接層.式(1)給出了卷積的計(jì)算公式,表1列出了相應(yīng)的參數(shù)說明:

Table 1 Parameters of A CONV/FC Layer表1 CONV/FC層參數(shù)說明

值得注意的是:

(1)

全連接層可以看成是當(dāng)式(1)中參數(shù)Hin=Kheight,Win=Kwidth,U=1時(shí)的卷積層.因此,下面主要分析卷積計(jì)算的特點(diǎn).結(jié)合圖2繪制的卷積運(yùn)算的示意圖和式(1)分析可得,卷積層計(jì)算表現(xiàn)出2個(gè)特征:

1) 不連續(xù)的內(nèi)存訪問.這是由于卷積核在輸入特征圖上滑動(dòng)時(shí),滑窗(sliding window)內(nèi)的數(shù)據(jù)是輸入特征圖的多行數(shù)據(jù).因此,不論數(shù)據(jù)是按行存儲(chǔ)還是按列存儲(chǔ),在不進(jìn)行數(shù)據(jù)布局優(yōu)化的條件下,滑窗內(nèi)的數(shù)據(jù)內(nèi)存訪問都是不連續(xù)的.

2) 數(shù)據(jù)復(fù)用性.卷積運(yùn)算中的數(shù)據(jù)復(fù)用主要分為權(quán)值復(fù)用(weight reuse)和輸入復(fù)用(input reuse).權(quán)值復(fù)用表現(xiàn)為同一個(gè)卷積核的權(quán)重被多次用于輸入特征圖的不同區(qū)域.輸入復(fù)用表現(xiàn)為輸入特征圖的同一個(gè)區(qū)域的激勵(lì)被多次用于不同的卷積核.

Fig. 2 Convolutions in CNNs圖2 CNN中的卷積運(yùn)算

直接使用for循環(huán)實(shí)現(xiàn)的卷積計(jì)算會(huì)引起非常高的緩存缺失,從而導(dǎo)致運(yùn)算速度非常慢.因此,通常將卷積計(jì)算轉(zhuǎn)化為矩陣-矩陣乘(matrix-matrix multiplication)或矩陣-向量乘(matrix-vector mul-tiplication, MVM).現(xiàn)有的深度學(xué)習(xí)框架(如Tensor-flow和Pytorch)底層都是通過調(diào)用通用矩陣乘庫(general matrix multiply, GEMM)來實(shí)現(xiàn)高效卷積計(jì)算.此外,為減少不連續(xù)的內(nèi)存訪問并提高數(shù)據(jù)復(fù)用,在調(diào)用之前GEMM前,需要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換和重排,最常見的轉(zhuǎn)換方法是如圖3所示的im2col,這是一種用空間換時(shí)間的優(yōu)化策略.

除了在算法層面上優(yōu)化卷積運(yùn)算,實(shí)現(xiàn)高效矩陣-向量乘也成為硬件加速器設(shè)計(jì)的關(guān)鍵.TPU[20]作為工業(yè)界最成功的專用硬件加速器,采用65 536個(gè)8 b乘法器和加法器,組成脈動(dòng)陣列(systolic array)架構(gòu)的矩陣乘法單元,每秒峰值速度為92TFLOPS.TPU在進(jìn)行計(jì)算時(shí),首先將權(quán)值參數(shù)從內(nèi)存加載到乘法器和加法器陣列中.然后,從內(nèi)存加載輸入數(shù)據(jù),每次執(zhí)行乘加運(yùn)算時(shí),都會(huì)將結(jié)果傳遞給后面的乘法器,同時(shí)進(jìn)行求和.與傳統(tǒng)的基于CMOS實(shí)現(xiàn)的加速器相比[21-23],基于ReRAM的硬件加速器的本質(zhì)是在模擬域?qū)崿F(xiàn)矩陣-向量乘運(yùn)算,因此具有速度快、功耗低等優(yōu)勢(shì).下面介紹基于ReRAM的硬件加速器的基本原理.

Fig. 3 The data rearrange of im2col圖3 im2col的數(shù)據(jù)重排原理圖

1.2 基于ReRAM的硬件加速器設(shè)計(jì)

基于ReRAM的硬件加速器通常采用分層結(jié)構(gòu)(hierarchical architecture)[7-9].如圖4所示,加速器由多個(gè)Tile和I/O組成,I/O用于從片外存儲(chǔ)加載數(shù)據(jù),并通過基于片上通信網(wǎng)絡(luò)(network on chip, NoC)進(jìn)行Tile間的數(shù)據(jù)交換.數(shù)據(jù)的編排和通信由控制器(controller)負(fù)責(zé).Tile由緩沖(buffer)、移位-加法器(shift & adder)、用于計(jì)算非線性操作的特殊功能單元(special function unit, SFU)和多個(gè)PE(processing engine)組成.PE由輸入/輸出寄存器、移位-加法器、模數(shù)轉(zhuǎn)換器(ADC)和多個(gè)ReRAM交叉陣列(ReRAM crossbar array, XB)組成.在推理階段,輸入數(shù)據(jù)通過DAC轉(zhuǎn)換為模擬域的電壓信號(hào),便可通過基爾霍夫定律(Kirchoff’s law),在一個(gè)讀操作的延遲內(nèi)完成一次矩陣-向量乘法計(jì)算,之后通過ADC將模擬電流信號(hào)轉(zhuǎn)為數(shù)字信號(hào).和推理相比,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練涉及誤差和梯度的計(jì)算與更新,需要設(shè)計(jì)額外的外部電路和ReRAM交叉陣列,這使得ReRAM硬件加速器的電路級(jí)設(shè)計(jì)更加復(fù)雜.此外,訓(xùn)練階段頻繁地更新操作造成大量的寫操作,這給ReRAM的寫耐久性帶來巨大挑戰(zhàn)[24-26].目前,大部分研究使用基于ReRAM的加速器來加速神經(jīng)網(wǎng)絡(luò)的推理.ISAAC[7]結(jié)合新的數(shù)據(jù)編碼,提出了支持原位乘加操作的基礎(chǔ)單元(in-situ multiply accumulate, IMA),并使用基于ReRAM的塊內(nèi)流水線(intra-tile pipeline)設(shè)計(jì)加速推理.Prime[8]分別設(shè)計(jì)用于計(jì)算(FF subarray)、存儲(chǔ)(mem subarray)和緩存(buffer subarray)的3個(gè)陣列,避免使用eDRAM緩存和輸入輸出寄存器.和Prime、ISAAC不同,PipeLayer[9]通過合理的數(shù)據(jù)復(fù)用、層內(nèi)并行(intra-layer parallelism)和層間流水線(inter-layer pipeline)來提高吞吐量.但是,這些硬件設(shè)計(jì)都使用較高的數(shù)據(jù)精度,并且為所有層指定統(tǒng)一的量化位寬,忽略了神經(jīng)網(wǎng)絡(luò)不同層的冗余.

Fig. 4 The hierarchical architecture of ReRAM-based accelerator圖4 基于ReRAM加速器的分層體系結(jié)構(gòu)

為了快速評(píng)估ReRAM加速器的性能,研究人員提出了許多模擬器.文獻(xiàn)[16-17]使用C++實(shí)現(xiàn)ReRAM加速器的電路級(jí)(circuit-level)仿真軟件,可用于仿真ReRAM加速器設(shè)計(jì)的面積、時(shí)延和功耗,但不支持混合精度計(jì)算.文獻(xiàn)[18]使用Python實(shí)現(xiàn)一個(gè)快速評(píng)估ReRAM硬件性能的行為級(jí)(behavior-level)模擬器,支持混合精度計(jì)算,可用于芯片早期設(shè)計(jì)階段的快速仿真,但不支持自動(dòng)選擇量化位寬.

1.3 量化與AutoML

專注于ReRAM加速器設(shè)計(jì)的硬件工程師通常使用模型級(jí)量化.文獻(xiàn)[16-17]都采用W2A8的量化策略,即將所有卷積層和全連接層的權(quán)值量化為2 b整型,激勵(lì)量化為8 b整型.但是,這會(huì)導(dǎo)致模型準(zhǔn)確度下降.手工為每一層確定量化位寬非常耗時(shí).最近,專注于算法研究的工程師提出使用自動(dòng)機(jī)器學(xué)習(xí)來自動(dòng)選擇量化位寬.文獻(xiàn)[11]針對(duì)FPGA平臺(tái),提出了基于DDPG算法的硬件感知自動(dòng)量化技術(shù);文獻(xiàn)[12]在文獻(xiàn)[11]的基礎(chǔ)上,也針對(duì)FPGA提出基于DDPG的卷積核級(jí)別(kernel-wise)的自動(dòng)量化;文獻(xiàn)[13]也在文獻(xiàn)[11]的基礎(chǔ)上,提出使用基于DDPG 2階段強(qiáng)化學(xué)習(xí),分別用于提高精度和ReRAM的存儲(chǔ)利用率;文獻(xiàn)[15]針對(duì)通用處理器CPU,使用強(qiáng)化學(xué)習(xí)來進(jìn)行自動(dòng)量化.由于DDPG適用于連續(xù)動(dòng)作空間,而量化位寬本質(zhì)上是離散數(shù)值.因此,文獻(xiàn)[11-13]都需要?jiǎng)幼骺臻g轉(zhuǎn)換步驟,這一轉(zhuǎn)化步驟可以通過使用適用于離散動(dòng)作空間的算法來避免;此外,文獻(xiàn)[11]中的資源受限約束是通過手工遞減量化位寬實(shí)現(xiàn)的,而不是自動(dòng)學(xué)習(xí)的,這可以通過設(shè)計(jì)新的包含模型精度和硬件開銷的獎(jiǎng)勵(lì)函數(shù)來實(shí)現(xiàn).文獻(xiàn)[27]使用基于神經(jīng)架構(gòu)搜索(neural architecture search, NAS)的方法,同時(shí)調(diào)整神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和量化策略來優(yōu)化ReRAM加速器性能.本文不調(diào)整神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),主要探索量化策略對(duì)ReRAM加速器硬件開銷的影響.

2 基于PPO的自動(dòng)量化

本文使用基于PPO Agent的actor-critic模型來進(jìn)行自動(dòng)量化.下面詳細(xì)說明狀態(tài)空間、動(dòng)作空間、獎(jiǎng)勵(lì)函數(shù)、量化方法和Agent的相關(guān)實(shí)現(xiàn)細(xì)節(jié).

Table 2 Embeddings of the State Space表2 狀態(tài)空間中的元素

3) 獎(jiǎng)勵(lì)函數(shù)(reward function).本文的獎(jiǎng)勵(lì)函數(shù):

(2)

4) 量化方法.訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)權(quán)值數(shù)據(jù)類型是32 b浮點(diǎn)數(shù).由于ReRAM cell精度和ReRAM交叉陣列(ReRAM crossbar array, XB)尺寸有限,需要更多的ReRAM cell來表示更高位寬的數(shù)據(jù).假設(shè)ReRAM設(shè)備的精度為1 b/cell,一個(gè)x位的整形數(shù)據(jù)將占用x個(gè)cells.本文將浮點(diǎn)數(shù)量轉(zhuǎn)換為x位有符號(hào)整數(shù)(signed integer):

(3)

其中,wq表示量化后的權(quán)值,Δ表示量化步長,函數(shù)clip用來將權(quán)值w截?cái)嗟絒-c,c]的范圍內(nèi),round表示向下取整.由于激勵(lì)是非負(fù)的,在對(duì)激勵(lì)進(jìn)行量化時(shí),函數(shù)clip會(huì)將激勵(lì)截?cái)嗟絒0,c].參數(shù)c的值在訓(xùn)練過程中更新:

(4)

其中,DKL表示量化前的w和量化后wq的分布的KL散度,其值越小表示w和wq的分布越接近.

5) Agent.傳統(tǒng)的基于策略梯度的方法很難確定步長(或?qū)W習(xí)率),若步長太小,學(xué)習(xí)很慢;若步長太大,容易學(xué)到不好的策略,模型很難收斂.為了解決這個(gè)問題,PPO算法在TRPO[28]的基礎(chǔ)上,將約束作為目標(biāo)函數(shù)的正則化項(xiàng),并通過新舊策略的比值來衡量新舊策略間的差異,限制新策略的更新幅度.

本文使用帶有截?cái)嗄繕?biāo)函數(shù)的PPO算法(PPO-Clip)來最大化期望獎(jiǎng)勵(lì).其中actor和critic網(wǎng)絡(luò)的前2層結(jié)構(gòu)一樣,都包含2個(gè)隱含層,每層包含256個(gè)神經(jīng)元.由于actor網(wǎng)絡(luò)用來產(chǎn)生動(dòng)作,因此,actor網(wǎng)絡(luò)的最后一層的神經(jīng)元個(gè)數(shù)為8-2+1=7,輸出表示[2,8]上的概率分布;critic網(wǎng)絡(luò)的最后一層的神經(jīng)元個(gè)數(shù)為1,輸出狀態(tài)價(jià)值.在每個(gè)時(shí)間步,Agent為神經(jīng)網(wǎng)絡(luò)的特定層選擇量化動(dòng)作.一個(gè)回合(episode)指Agent遍歷完所有層,由于神經(jīng)網(wǎng)絡(luò)的層數(shù)有限,因此回合長度是有限的.在探索過程中,使用ADAM[29]優(yōu)化器,其中β1=0.9,β2=0.999;actor和critic網(wǎng)絡(luò)學(xué)習(xí)率分別設(shè)為3×10-4和10-3.通過最小化目標(biāo)函數(shù)來更新actor網(wǎng)絡(luò)的參數(shù)θ:

(5)

(6)

3 軟硬件設(shè)計(jì)改動(dòng)

自動(dòng)量化后的模型的每一層的數(shù)據(jù)精度不一致,這就需要ReRAM加速器支持混合精度計(jì)算(mixed-precision computing).文獻(xiàn)[30]設(shè)計(jì)了一個(gè)支持混合精度計(jì)算的ReRAM加速器設(shè)計(jì),但是不支持自動(dòng)量化.本節(jié)遵循文獻(xiàn)[17]給出的ReRAM加速器設(shè)計(jì)指導(dǎo),結(jié)合文獻(xiàn)[18,30-31],介紹支持混合精度計(jì)算的ReRAM加速器軟硬件設(shè)計(jì)改動(dòng).

3.1 硬件設(shè)計(jì)改動(dòng)

權(quán)值存儲(chǔ)和矩陣分割.當(dāng)使用ReRAM交叉陣列存儲(chǔ)權(quán)值時(shí),需要解決2個(gè)問題:1)當(dāng)權(quán)值的位寬高于ReRAM cell能表示的范圍時(shí),如何表示高比特權(quán)值;2)當(dāng)權(quán)值矩陣超過ReRAM陣列大小時(shí),如何存儲(chǔ)整個(gè)權(quán)值矩陣.

對(duì)于權(quán)值存儲(chǔ),文獻(xiàn)[31]指出1 b ReRAM設(shè)備更加穩(wěn)定和可靠,其設(shè)備級(jí)和電路級(jí)的非理想特性對(duì)準(zhǔn)確度的影響不大.因此,本文使用1 b ReRAM.此外,由于ReRAM設(shè)備的電導(dǎo)是正數(shù),無法直接表征負(fù)權(quán)值,本文使用1組ReRAM交叉陣列來分別存儲(chǔ)正負(fù)權(quán)值.由于量化后的權(quán)值的位寬被限制在[2,8],為支持最大8 b權(quán)值的存儲(chǔ),需要8組ReRAM交叉陣列.

對(duì)于矩陣分割,當(dāng)權(quán)值矩陣大于ReRAM交叉陣列的尺寸時(shí),需要按照ReRAM交叉陣列的尺寸分割權(quán)值矩陣,每個(gè)ReRAM交叉陣列存儲(chǔ)一部分權(quán)值.在這種情況下,需要融合各ReRAM交叉陣列的中間計(jì)算結(jié)果來獲得該層最終的輸出.給出存儲(chǔ)整個(gè)神經(jīng)網(wǎng)絡(luò)所需要的ReRAM交叉陣列數(shù):

(7)

數(shù)據(jù)轉(zhuǎn)換模塊分析值和激勵(lì)的位寬會(huì)影響數(shù)據(jù)轉(zhuǎn)換模塊的開銷.量化后的激勵(lì)需要通過DACs轉(zhuǎn)換為輸入電壓,然后進(jìn)行模擬域的MVM運(yùn)算.假設(shè)DAC的分辨率為ResDAC,輸入數(shù)據(jù)轉(zhuǎn)化的總邏輯時(shí)鐘數(shù):

(8)

Qout=ResDAC+lb(SizeXB)+1,

(9)

理想情況下,ADC的分辨率ResADC應(yīng)該等于Qout才能保證將模擬電流精確轉(zhuǎn)換為數(shù)字信號(hào).假設(shè)ResDAC=1 b,ReRAM交叉陣列的尺寸通常為{128,256,512},那么理想的ResADC應(yīng)該為{9 b,10 b,11 b}.但是,高分辨率DAC/ADC的功耗很大,這會(huì)弱化ReRAM加速器的低功耗優(yōu)勢(shì).因此,不宜選擇較高分辨率的ADC,但是,ResADC和Qout間的差將引起硬件一級(jí)的量化誤差.文獻(xiàn)[16,30]表明ADC的分辨率大于等于6 b時(shí),由ADC引起的精度損失可以忽略,因此,后續(xù)實(shí)驗(yàn)中默認(rèn)使用1 b DAC和8 b ADC,忽略ADC引起的硬件一級(jí)的量化誤差.同時(shí)為方便和其他ReRAM加速器公平比較,使用128×128的陣列.

其他組件.除了MVM操作外,ReRAM加速器還要支持ReLU和最大池化(max pooling)運(yùn)算.采用類似文獻(xiàn)[30-31]的方法,使用look-up-table(LUT)來實(shí)現(xiàn)ReLU,使用寄存器保存序列中的最大值來實(shí)現(xiàn)最大池化.此外,為支持混合精度計(jì)算,控制器需要有寄存器來存儲(chǔ)量化位寬.

3.2 軟件設(shè)計(jì)改動(dòng)

基于3.1節(jié)分析,本文提出如圖5所示的軟件框架,其工作流程為:①用戶(算法工程師或硬件設(shè)計(jì)工程師)給出模型精度和硬件約束要求;②使用基于PPO Agent的actor-critic模型來進(jìn)行逐層自動(dòng)量化,如圖5中第l層的權(quán)值和激勵(lì)分別量化為6 b和4 b(簡寫為W6A4);③待整個(gè)模型的量化策略確定后,對(duì)模型進(jìn)行逐層量化;④通過分析每一層的結(jié)構(gòu)信息和量化位寬,將權(quán)值矩陣分割,并進(jìn)行數(shù)據(jù)映射;⑤通過模擬器評(píng)估ReRAM加速器的硬件開銷,更新狀態(tài)和獎(jiǎng)勵(lì)函數(shù);⑥搜索結(jié)束,返回最優(yōu)策略;否則重復(fù)步②~⑤.

根據(jù)分析,本文基于OpenAI開源的強(qiáng)化學(xué)習(xí)框架Spinning Up[32]實(shí)現(xiàn)支持自動(dòng)量化的前端訓(xùn)練框架.為了與前段訓(xùn)練框架對(duì)接,本文在文獻(xiàn)[18]的基礎(chǔ)上,使用Python實(shí)現(xiàn)一個(gè)用于評(píng)估ReRAM加速器硬件開銷的行為級(jí)模擬器.本文目前實(shí)現(xiàn)的ReRAM模擬器僅用于評(píng)估推理階段的硬件開銷,所使用的時(shí)延、能耗和功率模型與文獻(xiàn)[18]類似.文獻(xiàn)[11]使用查表的方式獲取FPGA的硬件開銷,而本文的框架中需要調(diào)用模擬器來評(píng)估ReRAM加速器硬件開銷,因此,調(diào)用模擬器的次數(shù)將影響搜索時(shí)間(將在4.2.2節(jié)分析).

Fig. 5 The software framework of automated quantization圖5 自動(dòng)量化軟件框架

4 實(shí)驗(yàn)結(jié)果與分析

4.1 實(shí)驗(yàn)環(huán)境與參數(shù)配置

實(shí)驗(yàn)的測(cè)試環(huán)境.本文使用的服務(wù)器配置信息為英特爾Xeon Silver 4110 CPU@2.10 GHz,內(nèi)存為32 GB,GPU為NVIDIA Tesla P100,操作系統(tǒng)為Ubuntu18.04.實(shí)驗(yàn)用的軟件為pytorch-1.6-gpu和基于文獻(xiàn)[18]實(shí)現(xiàn)的ReRAM模擬器.

表3列出了實(shí)驗(yàn)所用的數(shù)據(jù)集、神經(jīng)網(wǎng)絡(luò)模型.本文選擇使用LeNet-5和VGG-13這2個(gè)不同規(guī)模的模型,分別在MNIST和CIFAR-10數(shù)據(jù)集上實(shí)驗(yàn).由于標(biāo)準(zhǔn)的VGG模型是針對(duì)ImageNet數(shù)據(jù)集設(shè)計(jì)的,因此,本文修改VGG模型以適用于CIFAR-10數(shù)據(jù)集.LeNet-5模型結(jié)構(gòu)和文獻(xiàn)[33]保持一致.表4列出了模擬器的配置信息,該配置是由3.1節(jié)分析得來的.本文使用NVSim[34]來評(píng)估ReRAM陣列的硬件開銷,ADCs/DACs和減法器的開銷直接從文獻(xiàn)[7,35]獲取,數(shù)字化電路和緩沖設(shè)計(jì)使用和文獻(xiàn)[18]一樣的評(píng)估方法.通過對(duì)所有組件的開銷求和獲得ReRAM加速器的硬件開銷.

Table 3 The Configuration of the Neural Network表3 神經(jīng)網(wǎng)絡(luò)配置

Table 4 The Default Configuration of the ReRAM Simulator表4 ReRAM模擬器默認(rèn)配置

本文的對(duì)比實(shí)驗(yàn)主要包含2個(gè)方面:

1) 自動(dòng)量化算法對(duì)比.由于基于NAS的方法改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),因此,為了公平比較,本文關(guān)注基于強(qiáng)化學(xué)習(xí)的自動(dòng)量化算法.采用和文獻(xiàn)[11]類似的設(shè)置,即神經(jīng)網(wǎng)絡(luò)的第1層和最后1層固定量化為8 b.對(duì)比文獻(xiàn)[36]提出的模型級(jí)量化和文獻(xiàn)[11]提出的自動(dòng)量化在不同資源約束下的模型精度和硬件開銷.此外,針對(duì)文獻(xiàn)[11]對(duì)比搜索時(shí)間.

2) ReRAM硬件加速器對(duì)比.選擇使用16 b數(shù)據(jù)精度的ISAAC[7]和PipeLayer[9],以及文獻(xiàn)[31]提出的支持混合精度計(jì)算的加速器作為基線,對(duì)比功率效率(power efficiency).需要指出的是,本文的重點(diǎn)并不是要設(shè)計(jì)全新的ReRAM加速器,與使用相對(duì)較高數(shù)據(jù)精度的ISAAC和PipeLayer相比,本文強(qiáng)調(diào)使用自動(dòng)量化來減少ReRAM硬件開銷.

4.2 實(shí)驗(yàn)結(jié)果與分析

4.2.1 整體性能

為了證明所提方法的有效性,表5給出了在不同資源約束th下,所提出的方法與模型級(jí)量化[36]和基于DDPG的自動(dòng)量化方法[11]的整體性能對(duì)比.從表5中可以看出,與文獻(xiàn)[36]相比,所提出的自動(dòng)量化方法可以減少20%~30%的硬件開銷.在相同的資源約束th下,所提出的方法的模型精度與文獻(xiàn)[11]方法的相差不大,但是硬件開銷cost小于文獻(xiàn)[11]方法的.對(duì)于LeNet-5模型,所提出的方法主要減少LeNet-5模型在ReRAM加速器上的能耗和功率,但造成1%~3%的精度損失.對(duì)于VGG-13模型,所提出的方法可以有效減少VGG-13模型在ReRAM

Table 5 Overall Performance for Different NN Models Under Different Resource Constraints

加速器上的硬件開銷,且模型精度損失小于1%.與文獻(xiàn)[11]方法相比,在相同的資源約束th下,所提出的方法比文獻(xiàn)[11]方法可以多減少0.5%~4.21%的硬件開銷.

圖6顯示了不同資源約束下的VGG-13模型精度在600個(gè)回合內(nèi)的變化曲線,從圖6中可以看出:1)當(dāng)th=0.7和th=0.8時(shí),模型精度在300個(gè)回合后收斂;但是當(dāng)th=0.6時(shí),模型精度很難收斂,這是因?yàn)樵谫Y源約束相對(duì)嚴(yán)格時(shí),PPO Agent很難學(xué)到同時(shí)滿足精度要求和資源約束的策略.2)th=0.8時(shí)的模型精度整體上高于th=0.7和th=0.6時(shí)的模型精度,這是因?yàn)樵谫Y源約束相對(duì)寬松的條件,所設(shè)計(jì)的獎(jiǎng)勵(lì)函數(shù)鼓勵(lì)PPO Agent提高量化位寬來提升模型精度.

圖7顯示了當(dāng)th=0.6,只考慮能耗(β=1,α=γ=0)時(shí),VGG-13模型精度在600個(gè)回合內(nèi)的變化曲線.從圖7中可以看出,PPO Agent可以搜索到最優(yōu)量化策略,并且模型精度收斂速度快(與圖6中的虛線對(duì)比),這說明當(dāng)硬件開銷cost涵蓋多個(gè)指標(biāo)時(shí)(α,β,γ),優(yōu)化變得更加困難.

Fig. 7 Variation of Top -1 accuracy when th=0.6,α=γ=0,β=1圖7 當(dāng)th=0.6, α=γ=0, β=1時(shí)Top -1準(zhǔn)確率的變化

4.2.2 自動(dòng)量化算法對(duì)比

由于文獻(xiàn)[12-13]都是在文獻(xiàn)[11]的基礎(chǔ)上進(jìn)行的改進(jìn),因此本節(jié)主要和文獻(xiàn)[11]進(jìn)行對(duì)比.為了簡化說明,本節(jié)以VGG-13模型在CIFAR-10數(shù)據(jù)集上的測(cè)試作為示例,從學(xué)習(xí)過程、量化策略和搜索時(shí)間3個(gè)方面進(jìn)行對(duì)比.

1) 學(xué)習(xí)過程對(duì)比.圖8顯示了資源約束th=0.7時(shí),不同自動(dòng)量化算法的模型精度和硬件資源開銷在300個(gè)回合內(nèi)的的變化曲線.從圖8中可以看出,2種方法都能搜索到滿足資源約束的量化策略,并保持模型精度.但是,圖8(a)顯示了本文方法在前200個(gè)回合搜到量化策略導(dǎo)致精度和硬件開銷波動(dòng)較大,探索能力更強(qiáng),這是因?yàn)榛赑PO Agent的動(dòng)作是基于最近的隨機(jī)策略采樣獲得的,而文獻(xiàn)[11]是通過增加噪聲來增強(qiáng)DDPG的探索;圖8(b)清晰地顯示了本文方法在200個(gè)回合后,可以學(xué)習(xí)到滿足資源約束的量化策略,這得益于所設(shè)計(jì)的獎(jiǎng)勵(lì)函數(shù),而文獻(xiàn)[11]的獎(jiǎng)勵(lì)函數(shù)只與模型精度有關(guān),需要手工遞減量化位寬來滿足資源約束.

2) 量化策略逐層對(duì)比.圖9顯示不同自動(dòng)量化方法所搜索到的最優(yōu)量化策略.從圖9中可以看出,2種方法搜到的最優(yōu)量化策略的不同主要表現(xiàn)在權(quán)值的量化位寬上.文獻(xiàn)[11]為每一層的權(quán)值選擇較高的量化位寬(大部分為6 b),每一層的權(quán)值量化位寬平均為6.38 b;而本文方法為每一層的權(quán)值選擇的量化位寬的范圍更大(4~7 b),每一層的權(quán)值量化位寬平均為6 b,低于文獻(xiàn)[11],因此當(dāng)th=0.7時(shí),本文方法的硬件開銷(68.52%)比文獻(xiàn)[11]方法的(68.67%)少.

Fig. 10 Layer-wise analysis of hardware cost of different methods圖10 不同方法的硬件開銷的逐層分析

圖10顯示了圖9中的量化策略對(duì)應(yīng)的歸一化的時(shí)延(latency)、功率(power)和能耗(energy),其值越小越好.從圖10(a)中可以看出,激勵(lì)的量化位寬越高,時(shí)延越大.這與式(8)描述的一致.從圖10(b)中可以看出,權(quán)值的量化位寬越高,功率越大.從圖10(c)中可以看出,除了第2個(gè)卷積層(CONV2)和第7個(gè)卷積層(CONV7)外,本文方法比文獻(xiàn)[11]方法能降低更多的能耗.

3) 搜索時(shí)間對(duì)比.表6顯示不同自動(dòng)量化方法的搜索時(shí)間對(duì)比.從表6中可以看出,本文所提出方法的搜索時(shí)間比文獻(xiàn)[11]方法的少很多,這是由于本文方法在每個(gè)回合只調(diào)用一次模擬器來評(píng)估硬件開銷,而文獻(xiàn)[11]方法每遞減一次量化位寬就需要調(diào)用一次模擬器來評(píng)估硬件開銷.此外,文獻(xiàn)[11]方法中的獎(jiǎng)勵(lì)函數(shù)鼓勵(lì)A(yù)gent提高量化位寬,以此提高模型精度,但是這容易打破資源約束條件,導(dǎo)致需要更多的手工遞減步驟.

Table 6 Comparison of Search Time表6 搜索時(shí)間對(duì)比

圖11展示了在300回合內(nèi),文獻(xiàn)[11]方法在進(jìn)行手工遞減步驟前后的硬件開銷的對(duì)比,其中有131個(gè)回合的量化策略超出了硬件約束th=0.8,需要進(jìn)行手工遞減位寬.表7給出了第43回合的手工遞減步驟前后的量化策略,結(jié)合圖11和表7可看出,經(jīng)過7次遞減后,硬件開銷cost由90.88%減到79.17%,單在這一回合文獻(xiàn)[11]方法比本文方法就需要多調(diào)用7次模擬器.當(dāng)th更小時(shí),這種情況更加嚴(yán)重.

Fig. 11 Comparison of hardware cost before and after manual decrement step in ref [11]圖11 文獻(xiàn)[11]方法手工遞減步驟前后硬件開銷對(duì)比

Table 7 Comparison of Quantization Policy Before and After Manual Decrement Step in Epoch 43

4.2.3 和其他ReRAM加速器對(duì)比

表8對(duì)比了不同ReRAM加速器的功率效率.本文所提方法的功率效率為454.8GOPS/(s×W),低于ISAAC的627.5GOPS/(s×W),但高于PipeLayer的142.9GOPS/(s×W).文獻(xiàn)[31]提出支持混合精度計(jì)算的ReRAM加速器設(shè)計(jì),并使用貪婪策略選擇量化位寬.和文獻(xiàn)[31]相比,本文提出的自動(dòng)量化算法將ReRAM加速器的功率效率提升了近1.50倍.

Table 8 Comparison of Different ReRAM Accelerator Designs on Power Efficiency

5 結(jié) 論

本文提出基于PPO的ReRAM神經(jīng)網(wǎng)絡(luò)加速器自動(dòng)量化.使用PPO Agent來進(jìn)行自動(dòng)量化,通過設(shè)計(jì)新的獎(jiǎng)勵(lì)函數(shù),實(shí)現(xiàn)了模型精度和硬件開銷的最佳性能折中,并結(jié)合所提出的自動(dòng)量化算法,給出ReRAM加速器的軟硬件設(shè)計(jì)改動(dòng).實(shí)驗(yàn)結(jié)果表明:與模型級(jí)量化[36]相比,本文提出的方法可以減少20%~30%的硬件開銷.與文獻(xiàn)[11]相比,本文提出的方法通過學(xué)習(xí)來自動(dòng)搜索滿足資源約束條件的量化策略,避免手工遞減步驟,并且搜索時(shí)間快.與文獻(xiàn)[31]相比,本文提出的方法將ReRAM加速器的功率效率提升了近1.50倍.這為量化算法和ReRAM加速器的協(xié)同設(shè)計(jì)提供了借鑒.

作者貢獻(xiàn)聲明:魏正提出研究思路,負(fù)責(zé)算法與實(shí)驗(yàn)設(shè)計(jì),并撰寫論文;張興軍負(fù)責(zé)技術(shù)方案設(shè)計(jì)與最終版本的修訂;卓志敏負(fù)責(zé)行政和材料支持;紀(jì)澤宇負(fù)責(zé)方案討論與論文校對(duì);李泳昊負(fù)責(zé)分析數(shù)據(jù)與輔助實(shí)驗(yàn).

猜你喜歡
權(quán)值加速器卷積
莫比斯加速器眾創(chuàng)辦公空間
基于全卷積神經(jīng)網(wǎng)絡(luò)的豬背膘厚快速準(zhǔn)確測(cè)定
基于FPGA的卷積神經(jīng)網(wǎng)絡(luò)加速優(yōu)化方法
知識(shí)快餐店 科學(xué)加速器
國內(nèi)外醫(yī)用直線加速器可靠性對(duì)比研究
基于圖像處理與卷積神經(jīng)網(wǎng)絡(luò)的零件識(shí)別
基于深度卷積網(wǎng)絡(luò)與空洞卷積融合的人群計(jì)數(shù)
財(cái)務(wù)風(fēng)險(xiǎn)跟蹤評(píng)價(jià)方法初探
基于洪泛查詢的最短路徑算法在智能交通系統(tǒng)中的應(yīng)用
县级市| 保靖县| 遵化市| 房山区| 苗栗市| 剑河县| 涡阳县| 青海省| 邹平县| 康乐县| 高邮市| 兴海县| 平凉市| 怀远县| 邹平县| 从江县| 门头沟区| 长丰县| 巴林左旗| 黑龙江省| 繁昌县| 安图县| 无极县| 昌宁县| 汉川市| 万荣县| 梅河口市| 长武县| 麻城市| 图木舒克市| 岢岚县| 醴陵市| 青海省| 闵行区| 枣庄市| 麦盖提县| 池州市| 武夷山市| 莲花县| 舒城县| 盐城市|