宋玉紅 沙行勉 諸葛晴鳳 許 瑞 王 寒
(華東師范大學(xué)計算機科學(xué)與技術(shù)學(xué)院 上海 200062)
(yhsong@stu.ecnu.edu.cn)
隨著人工智能的發(fā)展,深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)作為典型的機器學(xué)習(xí)模型已經(jīng)被廣泛地應(yīng)用于邊緣設(shè)備上[1-2],例如自動駕駛、智能家居、智慧醫(yī)療等應(yīng)用領(lǐng)域.然而,邊緣設(shè)備擁有的資源(如能源、計算單元和存儲單元等)是十分有限的,這限制了DNN 在邊緣設(shè)備上的高效部署.盡管許多壓縮技術(shù)[3-9]通過減少神經(jīng)網(wǎng)絡(luò)模型參數(shù)在一定程度上能夠節(jié)省資源的使用,但隨著壓縮率的持續(xù)升高,模型推理準確率會產(chǎn)生明顯的下降.隨機計算(stochastic computing,SC)[10-12]作為一種新興的計算技術(shù)由于其特殊的數(shù)據(jù)表示和計算模式,使得其對于神經(jīng)網(wǎng)絡(luò)在硬件上的部署具有低能耗、低開銷的優(yōu)勢.SC 通過使用簡單的邏輯門近似運算以替代傳統(tǒng)浮點數(shù)計算中復(fù)雜的算術(shù)單元,大大降低了計算單元單位時間內(nèi)的能耗,以及計算單元和存儲單元的使用量.
SC 使用一個隨機的0/1 比特串來表示數(shù)據(jù),它不同于傳統(tǒng)的二進制比特串—每個位置具有不同的權(quán)重值.對于SC 數(shù)據(jù)來說,每個位置的權(quán)重都是一樣的.因此,SC 數(shù)據(jù)在噪聲環(huán)境中具有很高的數(shù)據(jù)容錯性,1 個比特位發(fā)生翻轉(zhuǎn),對整體數(shù)值的影響并不大.SC 數(shù)據(jù)具有2 種數(shù)據(jù)類型:單極(unipolar)數(shù)據(jù)和雙極(bipolar)數(shù)據(jù).單極數(shù)據(jù)表示的是[0,1]范圍內(nèi)的實數(shù),雙極數(shù)據(jù)表示[-1,1]范圍內(nèi)的實數(shù).對單極數(shù)據(jù)來說,對任意的實數(shù)x(0 ≤x≤1),0/1 比特串中的每個比特都有x的概率為1,都有 1-x的概率為0,即x=P(串中出現(xiàn)1).圖1(a)(c)中的比特串A,B,C均為單極數(shù)據(jù)表示.例如,比特串A:11010100 的長度為8,其中出現(xiàn)4 個1,因此該比特串表示的數(shù)據(jù)xa=4/8=0.5.SC 也可以表示-1~1 的數(shù)據(jù)x,即雙極數(shù)據(jù).這種數(shù)據(jù)表示方式只需要對比特串中1出現(xiàn)的概率進行簡單地變換即可,即x=2×P(串中出現(xiàn)1)-1.因為概率P的范圍一定是[0,1],因此雙極數(shù)據(jù)x通過線性變換被調(diào)整到[-1,1]范圍內(nèi).圖1(b)(d)中的比特串A,B,C均為雙極數(shù)據(jù)表示.例如,比特串A:11000000 的長度為8,其中出現(xiàn)2 個1,則P=2/8=0.25,那么數(shù)據(jù)xa=2×0.25-1=-0.5.對于SC 數(shù)據(jù)來說,數(shù)據(jù)精度由比特串長度決定,數(shù)據(jù)比特串的位數(shù)越長數(shù)據(jù)表示越精確.
Fig.1 Examples of SC based arithmetic units圖1 基于隨機計算的算術(shù)單元示例
基于這樣的數(shù)據(jù)表示方式,傳統(tǒng)計算中的算術(shù)運算就可以利用概率知識來近似計算.利用SC 技術(shù),傳統(tǒng)浮點數(shù)運算中復(fù)雜的加法器、乘法器等算術(shù)單元可以用簡單的邏輯門代替.例如,對于單極數(shù)據(jù)來說,可以利用一個簡單的與門(AND)來近似乘法運算(見圖1(a)).它是利用概率計算中,2 個獨立事件A,B,P(A∩B)=P(A)×P(B) 來近似計算,即P(A∧B)=xa×xb.對于雙極數(shù)據(jù)的乘法來說(見圖1(b)),可以用同或門(XNOR)來近似.在概率計算中,P(A⊙B)=P(A⊙B)的結(jié)果正好就是xaxb結(jié)果的雙極數(shù)據(jù)表示.因此,雙極數(shù)據(jù)的乘法可以用同或門來近似見.類似地,單極數(shù)據(jù)和雙極數(shù)據(jù)的加法都可以用或門來近似,見圖1(c)(d).利用概率計算,SC 算術(shù)單元的復(fù)雜度被極大地簡化,這減少了算術(shù)單元的運行能耗和硬件使用面積.但是,這種近似方式會產(chǎn)生較大的計算誤差.因為要滿足上述的概率計算公式,比特流A和流B的生成需要是獨立事件,且在用或門近似加法運算時需要滿足A,B是互斥事件.因此,對于SC 來說,設(shè)計高準確率的算術(shù)單元至關(guān)重要.
現(xiàn)有的基于SC 的工作[13-16]大多集中于設(shè)計高準確率的算術(shù)電路,接著利用這些算術(shù)電路將DNN 模型部署到硬件設(shè)備上進行推理.這種部署往往通過啟發(fā)式的方法確定一組模型配置(如模型結(jié)構(gòu)、數(shù)據(jù)比特串長度等)用于硬件實施.并且,這種部署不會考慮動態(tài)改變的硬件環(huán)境(例如,電池電量會隨著消耗而減少).這些設(shè)計往往能夠獲得較高的推理準確率,卻忽略了硬件效率和電池使用時間.另外一些工作[17-18]考慮設(shè)計數(shù)據(jù)精度縮放方法以靈活地改變數(shù)據(jù)比特串長度,但是神經(jīng)網(wǎng)絡(luò)依然被運行在固定的硬件配置上,使得硬件的使用效率沒有被充分發(fā)揮.
因此,面對有限且動態(tài)變化的硬件資源,為了滿足模型推理的時間約束和準確率要求,本文針對基于SC 的神經(jīng)網(wǎng)絡(luò)創(chuàng)新性地提出了一個運行時可重配置的框架RR-SC.對于電池搭載的邊緣設(shè)備來說,面對動態(tài)變化的電池電量,本文提出利用動態(tài)電壓和頻率調(diào)節(jié)(dynamic voltage and frequency scaling,DVFS)技術(shù)來進行硬件層面重配置以節(jié)省能源使用.DVFS 根據(jù)剩余的電池電量情況,對硬件的電壓和頻率進行相應(yīng)的調(diào)節(jié).在電池電量充足時,使用較高的電壓/頻率(voltage/frequency,V/F)等級使模型保持在一個較快的速度上進行推理;在電池電量降低到一定程度時,切換至較低的硬件V/F 等級以降低單位時間內(nèi)的推理能耗,使得模型能夠在有限的能源內(nèi)運行更多次數(shù),以延長電池的使用時間.除了硬件層面使用DVFS 進行重配置外,RR-SC 還結(jié)合了軟件層面的重配置以滿足模型推理的實時性約束.如果在模型推理時僅僅在不同的電量對硬件的V/F 等級進行切換,會使得一組模型配置在高V/F 等級時能夠滿足時間約束,而切換到低V/F 等級時推理時間變長,預(yù)先設(shè)定的時間約束無法被滿足.因此,我們設(shè)計了RR-SC 框架自動地為不同的V/F等級選擇出最佳的軟件配置.RR-SC 利用強化學(xué)習(xí)(reinforcement learning,RL)[19-20]技術(shù)一次性為不同的V/F 等級生成對應(yīng)的模型配置,即模型結(jié)構(gòu)、SC 算術(shù)單元、數(shù)據(jù)比特串長度等,以滿足模型推理的時間約束和不同V/F 等級下的準確率要求,同時盡可能地延長電池的使用時間.為了實現(xiàn)運行時的輕量級切換,RR-SC 只生成1 組模型結(jié)構(gòu)作為主干網(wǎng)絡(luò),從而能夠在不同的硬件配置下快速切換.
本文的主要貢獻包括3 個方面:
1)為了滿足基于SC 的神經(jīng)網(wǎng)絡(luò)推理的實時性要求,并盡可能地延長電池搭載的邊緣設(shè)備的使用時間,本文創(chuàng)新性地提出將硬件重配置和軟件重配置相結(jié)合.
2)基于自動機器學(xué)習(xí)技術(shù)提出了一個運行時可重配置的框架RR-SC,以自動地生成硬件配置對應(yīng)的模型配置(即軟件重配置).選擇的軟件配置擁有最好的準確率和運行效率的權(quán)衡.除此之外,模型運行時在一個搜索出來的主干網(wǎng)絡(luò)上進行軟件配置切換,以實現(xiàn)輕量級軟件重配置.
3)實驗結(jié)果表明,RR-SC 能夠保證在所有硬件級別下滿足實時約束,并且可以在準確率損失僅為1%的情況下將模型推理次數(shù)增加7.6 倍.同時,它還能在110 ms 內(nèi)滿足不同軟件配置的輕量級切換.
SC 近似計算產(chǎn)生的高計算誤差使得基于SC 的DNN 實現(xiàn)的相關(guān)研究[13-16]主要集中于設(shè)計高準確率的硬件電路.由于乘積累加(multiply-accumulate,MAC)運算是DNN 實現(xiàn)中的基本運算,因此我們主要討論乘法器和加法器的設(shè)計與實現(xiàn).文獻[13]提出使用同或門作為乘法器,并且提出了一個基于多選器樹(MUX-tree)的加法器,我們稱這個算術(shù)電路為XNORMUX.XNOR-MUX 受制于比特流間的相關(guān)性問題(即概率近似失效),使得計算誤差較大.文獻[14]將正負數(shù)據(jù)分開計算,并利用與門作為乘法器.同時,它提出一種新的加法器,這種加法器分別計算正數(shù)數(shù)據(jù)的和(POS)與負數(shù)數(shù)據(jù)的和(NEG),最后利用對結(jié)果進行巧妙地轉(zhuǎn)換,這種轉(zhuǎn)換只需要一個MUX 門,使得單極數(shù)據(jù)計算的結(jié)果正好為雙極數(shù)據(jù)表示下正數(shù)部分和負數(shù)部分的差.我們稱這個電路為AND-SEP.但當輸入數(shù)據(jù)數(shù)量較多時,該加法器在沒有數(shù)據(jù)縮放時會產(chǎn)生計算溢出問題使得計算誤差較大.文獻 [15]為雙極數(shù)據(jù)設(shè)計了新的乘法器uMUL 和加法器uNSADD,并利用并行計數(shù)器來緩解輸入的相關(guān)性問題.但在某些特殊情況下會出現(xiàn)冗余1 或缺失1 的問題從而產(chǎn)生計算誤差,這種電路被稱為uGEMM.文獻[16]進一步提出了一種基于累加器的塊內(nèi)加法器以減少計算錯誤,并設(shè)計了一種輸出修正方案來解決塊之間的冗余/缺失1 的問題.塊內(nèi)的算術(shù)電路被稱為AND-ACC,帶有輸出修正方案的電路被稱為AND-LOOP.這些設(shè)計雖然相比傳統(tǒng)的二進制電路具有更低的運行能耗,但它們都沒有考慮電池搭載的邊緣設(shè)備電量動態(tài)改變的情況,因此沒有涉及任何軟件和硬件的重配置.當神經(jīng)網(wǎng)絡(luò)被部署到硬件上時,模型推理始終運行在相同的V/F 等級下,模型的推理會快速消耗電池電量,使得模型最終推理總次數(shù)較少.
另一方面,文獻[17-18]考慮了運行時比特串長度的動態(tài)改變.文獻[17]提出一個新的計算提前終止方法,使得模型推理時可以只利用較少位數(shù)的比特串就能獲得較好的推理準確率.文獻[18]擴展了文獻[21]的方法并設(shè)計了新的數(shù)據(jù)表示方式,使得輸入、輸出數(shù)據(jù)的精度可以在運行時任意更改.這些工作雖然實現(xiàn)了運行時軟件層面的重配置,一定程度上延長了電池的使用時間,但它們都運行在固定的硬件配置下,使得硬件資源沒有被充分利用.
因此本文提出一種軟/硬件協(xié)同重配置的方式,利用硬件重配置以盡可能地延長電池使用時間,增加模型的推理總次數(shù).同時搭配軟件重配置以滿足機器學(xué)習(xí)任務(wù)的實時性要求.本文提出的方法充分利用硬件資源,實現(xiàn)高效實時的模型推理.同時,保證了模型推理的準確率.
動機1:電池搭載的邊緣設(shè)備的能源是有限且動態(tài)變化的.大多數(shù)移動設(shè)備都是電池供電的,例如手機、無人機、機器人等[22].延長能源有限的電池使用時間是很重要的.同時,任務(wù)執(zhí)行需要符合實時性要求.面對有限的能源資源,許多模型壓縮方法[3-5]通過減小模型大小和參數(shù)數(shù)量在一定程度上提高模型推理速度以降低能源消耗.但是這些壓縮方法依然依賴于復(fù)雜的浮點數(shù)算術(shù)電路運算,在能源消耗方面仍有很大的優(yōu)化空間.SC 利用新的數(shù)據(jù)表達方式和簡化的算術(shù)電路進一步降低模型推理能耗,但由于數(shù)據(jù)表示精度、電路計算誤差等問題,使得許多研究者都致力于研究高準確率的算術(shù)電路,忽略了硬件的效率和動態(tài)變化的硬件資源.因此,面對逐漸減少的電池電量情況,DVFS[23]技術(shù)常被用于硬件重配置,以節(jié)省能源使用.表1 展示了 Odroid-XU3 平臺中Cortex A7 內(nèi)核的可用V/F 等級.本文針對電池搭載的邊緣設(shè)備,在電池電量較高時配置較高的V/F 等級;當電池電量降低到一定程度時,切換到更低的V/F 等級.在本文中,我們稱這種動態(tài)電壓和頻率等級調(diào)節(jié)為硬件重配置.
Table 1 V/F Levels Supported by ARM Cortex A7 Core in Odroid-XU3 Mobile Platform表1 Odroid-XU3 移動平臺中 ARM Cortex A7 內(nèi)核支持的電壓/頻率等級
動機2:僅僅使用硬件重配置無法滿足實時性要求.我們通過對比實驗驗證了硬件重配置能夠延長電池使用時間,實驗結(jié)果展示在表2 中.為了度量電池的使用時間,本文用模型在一定能源總量下的推理總次數(shù)來表示,表2 中所有的方法都具有相同的能源總量.實驗設(shè)置S1 和S2 使用了相同的多層感知機(multi-layer perceptrons,MLP)模型.我們設(shè)定MLP模型的結(jié)構(gòu)為784-100-200-10,表示MLP 的3 層全連接層分別有100,200,10 個神經(jīng)元,784 表示輸入數(shù)據(jù)的大小.模型推理時使用AND-ACC 算術(shù)電路.在本實驗中的模型配置均使用默認設(shè)置,但對于RRSC 方法,模型的配置通過優(yōu)化方法確定.實驗設(shè)置S1 僅使用一種模型配置,且模型推理運行在固定的硬件配置下,這里的SC 數(shù)據(jù)使用32 b 的0/1 串表示.在實驗設(shè)置S2 中使用了硬件重配置(即DVFS),S2一共設(shè)置了3 個V/F 等級F,N,E.F 模式表示使用高V/F 等級下的快速執(zhí)行模式;N 模式表示使用中間V/F 等級下的普通速度執(zhí)行模式;E 模式表示使用低V/F 等級下的節(jié)省能耗的執(zhí)行模式.相應(yīng)地,我們選擇表1 中的l6,l4,l3分別作為F 模式、N 模式和E 模式下的V/F 設(shè)置.從表2 中我們可以看出,在S2 實驗設(shè)置下,由于配置了DVFS 技術(shù),模型的總的推理次數(shù)相比于S1 實驗設(shè)置提升了1.4 倍,這表明DVFS 能夠在一定程度上延長電池使用時間.然而,當V/F 等級降低時,如S2 實驗設(shè)置下的N 模式和E 模式的模型推理時間無法滿足時間約束.因為當頻率降低時,計算速度也相應(yīng)地變慢.在本實驗中,我們設(shè)置的時間約束為45 ms.
Table 2 Running Results Comparison of Three Experimental Settings with the Time Constraint of 45 ms表2 時間約束 45 ms 下的3 種實驗設(shè)置運行結(jié)果對比
為了解決僅使用硬件重配置無法滿足實時性要求的問題,我們探索了軟件重配置以搭配不同的硬件配置.在不同的硬件V/F 等級下搭配不同的數(shù)據(jù)精度,以降低運行的時間和能耗、滿足實時性要求和增加模型推理總次數(shù).我們同樣用實驗來證明,如表2中的S3 實驗設(shè)置:結(jié)合硬件重配置和軟件重配置.實驗結(jié)果表明,S3 設(shè)置下模型推理總次數(shù)是S1 模式下的2.3 倍,并且相比于S2 模式提升了近40%.與此對應(yīng)的是,模型推理準確率產(chǎn)生了一定程度的損失.通過搭配DVFS,模型推理總次數(shù)顯著增加,電池一次放電的使用時間延長.接著搭配軟件重配置,也就是不同的模型配置,模型推理的時間約束能夠被滿足.
本文為了解決動機1 和動機2 對應(yīng)的問題,提出了一個完整的基于自動機器學(xué)習(xí)的框架,能夠為不同的硬件配置一次性選擇多種軟件配置.本文的問題定義為:
定義1.給定邊緣設(shè)備能源總預(yù)算TE,推理時間約束TC,一組運行時用于切換的V/F 等級L={l1,l2,…,li,… },各等級下的準確率約束AC={Ac1,Ac2,…,Aci,…},本文框架主要用于決定:
1)一個主干網(wǎng)絡(luò)模型結(jié)構(gòu)BM;
2)一個隨機計算算術(shù)電路C;
3)多組用于軟件重配置的比特串長度BL={bl1,bl2,…,bli,…}.
運行時,硬件根據(jù)剩余的能源(即電池電量)切換相應(yīng)的V/F 等級,被選擇出來的主干模型BM使用算術(shù)電路C進行推理運算,根據(jù)不同的V/F 等級切換相應(yīng)的數(shù)據(jù)精度BL.通過RR-SC 選擇出來的軟件配置可以滿足時間約束TC和各級準確率約束AC,同時最大化模型BM在不同V/F 等級下的推理次數(shù)總和以及模型推理準確率.本文使用模型在總能源預(yù)算TE下的推理次數(shù)來表示硬件的效率.因此本文的優(yōu)化問題可以表示為:
其中Runs表示模型在V/F 等級L下的總運行次數(shù),Acc表示多個模型推理的平均準確率,lati和Ai分別表示各V/F 等級下的模型推理時間和準確率.
圖2 展示了RR-SC 框架的整體設(shè)計.我們建立了一個基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的RL 控制器(見3.2 節(jié)),用來從預(yù)先定義好的離散的搜索空間選擇出相應(yīng)的軟件配置.RL 控制器利用深度機器學(xué)習(xí)的方法,可以通過訓(xùn)練優(yōu)化以預(yù)測出更好的結(jié)果.離散搜索空間由模型結(jié)構(gòu)(包括層數(shù)、每層神經(jīng)元個數(shù)、卷積核大小等)、SC 算術(shù)電路庫、數(shù)據(jù)精度(即數(shù)據(jù)比特串長度)組成.RL 控制器選擇出來一組模型結(jié)構(gòu)作為主干網(wǎng)絡(luò)BM,在不同的V/F 等級下均使用相同的SC 算術(shù)單元C推理以節(jié)省能耗和切換開銷.同時RL 控制器生成多種數(shù)據(jù)精度BL,以在不同的V/F 等級下進行輕量級切換.當模型配置確定后,主干網(wǎng)絡(luò)接著被訓(xùn)練和推理以獲得各等級的能耗、時延和準確率(見3.3 節(jié)).這些指標被輸入設(shè)計好的反饋函數(shù)(見3.4 節(jié))得到獎勵值R,R值被用于更新RL 控制器參數(shù)使其能夠快速收斂.RL 控制器的選擇過程被執(zhí)行EP次,每次通過從環(huán)境中獲得的獎勵值R來更新RNN 網(wǎng)絡(luò)的參數(shù)以指導(dǎo)下一次的參數(shù)選擇.
Fig.2 RR-SC framework圖2 RR-SC 框架
為了一次性地獲得能夠滿足時間約束TC和準確率約束AC的軟件配置,本文利用RL 技術(shù)來為基于SC 的DNN 智能、高效地選擇最好的參數(shù),以在固定能源總量下獲得最多的模型推理次數(shù)和最好的推理準確率.RL 控制器是RR-SC 框架的核心部件,它的設(shè)計基于深度學(xué)習(xí)網(wǎng)絡(luò)模型.DNN 的應(yīng)用使得RL控制器在收斂到全局最優(yōu)解方面具有很大的優(yōu)勢.智能體(agent)每次自動地觀察環(huán)境狀態(tài)并通過獎勵值進行參數(shù)的自我更新,以在未來的執(zhí)行過程中得到更好的動作預(yù)測結(jié)果.
1)狀態(tài)空間(state space).本文使用基于SC 的DNN在相應(yīng)參數(shù)配置下的推理準確率Acc,及在給定能源總量和V/F 設(shè)置下的推理總次數(shù)Runs來表征當前的環(huán)境狀態(tài),如表3 所示.RL 控制器利用以往動作及相應(yīng)的反饋值作為輸入以學(xué)習(xí)以往的經(jīng)驗,用以訓(xùn)練自身網(wǎng)絡(luò),使其未來能夠預(yù)測出擁有更高反饋值的參數(shù)組合.反饋函數(shù)中的性能值能夠全面反映模型在嵌入式設(shè)備上推理時的不同方面,即推理總次數(shù)反映了運行時的硬件效率,平均推理準確率反映了模型的分類水平.它們能夠使智能體更好地理解復(fù)雜的系統(tǒng),并能及時捕捉環(huán)境的動態(tài)變化.
Table 3 State Space of RL Controller表3 RL 控制器的狀態(tài)空間
2)動作空間(action space).本文的強化學(xué)習(xí)的動作空間由3 類參數(shù)的組合空間組成:模型結(jié)構(gòu)、SC算術(shù)電路以及數(shù)據(jù)精度.其中,模型結(jié)構(gòu)決定了推理模型的大小,它包括模型的層數(shù)、每層的神經(jīng)元個數(shù)、卷積核大小、卷積步長、輸入通道數(shù)等要素,包含哪些要素由具體的模型決定.接著,本文根據(jù)現(xiàn)有的SC算術(shù)電路設(shè)計工作構(gòu)建SC 算術(shù)電路庫,包括XNORMUX,AND-SEP,uGEMM,AND-ACC,AND-LOOP 這5 種電路.數(shù)據(jù)精度指不同的SC 數(shù)據(jù)表示位數(shù),越長的數(shù)據(jù)表示越高的數(shù)據(jù)精度.值得注意的是,RR-SC是一個可重新配置的框架,它允許將其他因素包含在內(nèi),動作空間的值可以根據(jù)不同的需求和場景進行調(diào)整.
3)智能體.在RR-SC 的設(shè)計中,強化學(xué)習(xí)中的智能體被稱為RL 控制器.RL 控制器的實現(xiàn)基于一個RNN 網(wǎng)絡(luò),這和文獻[24]中的實現(xiàn)類似.RNN 相關(guān)的網(wǎng)絡(luò)能夠很好地處理序列相關(guān)的輸入,提取和保留序列中的上下文關(guān)系及信息,因此RL 控制器有助于通過學(xué)習(xí)以往動作中的經(jīng)驗,不斷訓(xùn)練出更好的RNN 網(wǎng)絡(luò)以做出更好的選擇.首先,RL 控制器從動作空間內(nèi)預(yù)測出一組模型結(jié)構(gòu),一個SC 算術(shù)單元和多組數(shù)據(jù)精度用于在不同的V/F 等級下進行切換,這種預(yù)測是基于一個Softmax 分類器.選擇出來的參數(shù)用于構(gòu)建主干模型.接著進行模型的預(yù)訓(xùn)練和硬件推理,通過訓(xùn)練和推理,模型的能耗、時延和準確率會被獲得以用于構(gòu)建反饋函數(shù).接著,基于反饋函數(shù)計算得到獎勵值R,一個蒙特卡羅策略梯度算法[25]被應(yīng)用于更新RL 控制器中的參數(shù) θ.更新 θ的計算公式為:
其中,m表示RNN 輸入的批次大小,T表示每次選擇的步數(shù).獎勵值R在每一步都按指數(shù)因子減少,基線b是R的平均指數(shù)移動.θ的更新是為了讓RL 控制器在下一輪的搜索中選擇擁有更高R值的配置,使其可以更快地收斂到全局最優(yōu)解.
為了獲得更穩(wěn)定的結(jié)果[26],我們對RR-SC 執(zhí)行多次,并以擁有最高R值的配置作為我們最終的結(jié)果.RR-SC 的搜索時間開銷以多次運行的平均時間計算得到.
當RL 控制器選擇出來一組模型配置后,模型訓(xùn)練和推理過程被啟動.RL 控制器選擇出來的模型配置包括模型結(jié)構(gòu),即模型層數(shù)、每層神經(jīng)元個數(shù)、卷積層核數(shù)、步長等,SC 算術(shù)電路和多種數(shù)據(jù)精度.當選擇出來的模型配置通過性能預(yù)測器(見3.4 節(jié))計算得到的推理時間滿足設(shè)定的時間約束TC時,開始相應(yīng)的訓(xùn)練器和模型推理過程.如果任意V/F 等級下的時間約束和準確率約束沒有被滿足,那么模型的訓(xùn)練和推理過程被提前終止,以節(jié)省RR-SC 的搜索開銷.圖3 展示了模型訓(xùn)練和推理模塊的主要流程.首先,對于選擇出來的參數(shù),模型結(jié)構(gòu)被解析,對應(yīng)結(jié)構(gòu)的浮點數(shù)模型被構(gòu)建.接著,浮點數(shù)模型被預(yù)訓(xùn)練多次,以獲得擁有高準確率的模型參數(shù),即權(quán)重和偏置.為了獲得模型在硬件上的推理準確率,基于SC 的模型被建立.模型的結(jié)構(gòu)與選擇出來的主干網(wǎng)絡(luò)模型相同,只是數(shù)據(jù)的表示由浮點數(shù)據(jù)轉(zhuǎn)換為SC數(shù)據(jù),即單極數(shù)據(jù)和雙極數(shù)據(jù).所有浮點數(shù)輸入數(shù)據(jù)和模型參數(shù)均通過隨機數(shù)生成器(stochastic number generator,SNG)轉(zhuǎn)換成SC 的數(shù)據(jù)比特串.隨后,選擇出來的算術(shù)電路C被用于實現(xiàn)基于SC 的DNN 模型.對于不同的硬件配置,即V/F 等級來說,被選擇出來的多個數(shù)據(jù)精度分別對應(yīng)多個V/F 等級,應(yīng)用不同數(shù)據(jù)精度的模型通過算術(shù)電路C推理得到各自的準確率.多個模型推理的平均準確率用于計算獎勵值R.理論上講,當硬件配備高V/F 等級時,相應(yīng)的高數(shù)據(jù)精度被選擇出來,也就是更長的比特串長度.這樣,在硬件能源(即電池電量)相對充足時,模型推理能夠盡可能的準確.當硬件能源減少到一定程度后,數(shù)據(jù)精度也相應(yīng)地被調(diào)低,這樣在損失一定準確率的情況下,能夠盡可能降低模型推理能耗,以延長電池的使用時間.
Fig.3 Model training and inference stages used for obtaining energy,latency and accuracy圖3 模型訓(xùn)練和推理階段用以獲得能耗、時延和推理準確率
為了獲得基于SC 的模型推理時間,我們設(shè)計了一個性能預(yù)測器.我們在高級綜合(high-level synthesis,HLS)工具上模擬基于SC 的加法器和乘法器,并獲得當前數(shù)據(jù)精度下每個操作數(shù)計算所需的時間.接著,我們根據(jù)選擇出來的模型結(jié)構(gòu)計算所有操作的數(shù)量.這樣,就可以獲得模型在當前V/F 等級下的推理時間.那么當模型被切換至其他V/F 等級時,推理時間可以通過頻率的線性變換計算得到.頻率越高,推理的速度越快,推理時間越短.另外,為了獲得當前硬件設(shè)置下的模型推理次數(shù),我們通過總能源TE和模型一次推理所需要花費的能耗Ei計算得到.模型一次推理所花費的能耗Ei通過功率乘以時間得到,即Ei=Poweri×lati.其中,當前V/F 等級下的功率和時延通過模型在HLS 中模擬得到.那么模型的推理總次數(shù)Runs即為當前等級的總能源TEi與一次推理所需的能耗Ei的比值,即
本文假定在相同的工作負載和不變的物理環(huán)境下設(shè)計,因此忽略工作負載和環(huán)境變化帶來的功率的動態(tài)變化.除此之外,溫度對能耗也有一定的影響,但本文所使用的隨機計算技術(shù)是一種顯著降低模型推理能耗的技術(shù),低能耗技術(shù)對工作溫度的影響很小甚至沒有[27].并且,本文在相同的起始溫度下對不同的軟硬件配置進行能耗預(yù)估,溫度對能耗的影響對于最后的配置的選擇幾乎沒有影響.因此本文不考慮溫度對能耗的影響.
經(jīng)過模型訓(xùn)練和推理過程,以及模型預(yù)測器的高級綜合之后,可以得到模型在各個V/F 等級下的推理次數(shù)和準確率.接下來,當前輪的獎勵值R可以通過反饋函數(shù)計算用以更新RL 控制器.反饋函數(shù)同時也用來表示我們的優(yōu)化目標,即在時間約束TC及準確率約束AC下,最大化模型推理次數(shù)和準確率.反饋函數(shù)的計算公式為:
在介紹具體的函數(shù)之前,我們先介紹5 個符號:1)Rrs指的是多個模型推理總次數(shù)的歸一化值,它的范圍在[0,1];2)lati表示每一種V/F 等級下模型的推理時間;3)Ai表示各種V/F 等級下的模型推理準確率,Au和Al是我們預(yù)先設(shè)置的最高準確率和最低準確率,用以對準確率進行歸一化;4)Aci表示各V/F 等級下的準確率約束;5)cond是一個二值條件,cond=True表示對于 ?i<j,我們有Ai>Aj,意味著運行在高V/F等級的模型擁有更高的推理準確率,否則cond=False,在這種情況下我們會給獎勵值R一個懲罰pen.
那么,對于計算獎勵值R有3 種情況:
1)如果 ?lati>TC或者 ?Ai<Aci意味著時間約束TC和準確率約束AC并不是在任意的V/F 等級下都被滿足,這里我們直接設(shè)置R=-1+Rrs.這意味著,當通過性能預(yù)測器得到的模型在選擇的動作參數(shù)下無法滿足邊緣設(shè)備要求的時間約束TC時,就不需要進行真正的模型訓(xùn)練和推理以獲得準確率,因此直接將準確率反饋值設(shè)置成-1.這樣,RR-SC 的搜索開銷在一定程度上就可以減少.同樣地,如果基于SC 的神經(jīng)網(wǎng)絡(luò)模型在某些V/F 等級下的推理準確率無法滿足預(yù)期的要求,那么其他V/F 等級下的模型就不需要再耗費時間和資源進行推理.
2)如果任意V/F 等級下的推理時間約束和準確率約束都能夠被滿足,并且cond=True,也就是期望擁有高V/F 等級的硬件配置能夠獲得更高的準確率,那么我們使用歸一化后的平均準確率和模型推理總次數(shù)作為獎勵值R.這種情況對應(yīng)著本文優(yōu)化問題的目標函數(shù),RR-SC 期望在滿足時間約束和準確率約束的情況下,最大化運行總次數(shù)和推理準確率.
3)否則,我們在第2 種情況下的獎勵值R增加一個懲罰值pen.因為RR-SC 更希望能夠在高V/F 等級下?lián)碛懈叩耐评頊蚀_率,給定一個懲罰值相當于告訴智能體這是一種不被期望的結(jié)果.
1)實驗方法對比.首先,我們將RR-SC 框架與之前的基于SC 的工作[13-16]進行對比.本文方法結(jié)合了軟件和硬件的重配置,在滿足實時性約束的前提下最大限度地延長電池使用時間.通過利用RL 技術(shù)一次性選擇多種軟件配置對應(yīng)于多種硬件配置.硬件配置根據(jù)剩余能源電量進行V/F 等級的調(diào)整,選擇出來的軟件配置對應(yīng)各個硬件配置.而現(xiàn)有的前沿工作主要針對算術(shù)電路進行設(shè)計,缺少硬件和軟件重配置.同時,RR-SC 框架選擇出來的模型被可視化以便于展示.接著,我們利用RR-SC 選擇出來的模型結(jié)構(gòu)和配置,進一步探究軟件重配置和硬件重配置分別對推理時間和能源消耗的影響.
2)實驗指標及平臺設(shè)置.我們使用MN?ST 數(shù)據(jù)集在MLP 和LeNet 模型上評估本文方法,使用Cifar10數(shù)據(jù)集在AlexNet 模型上驗證.搜索空間的設(shè)置包括模型結(jié)構(gòu)、SC 算術(shù)單元、數(shù)據(jù)精度3 個部分.通過探究,我們將搜索空間內(nèi)所有因素的值都收縮到一個合理的范圍內(nèi),本文實驗設(shè)置的搜索空間被總結(jié)在表4 中.對于硬件指標,算術(shù)電路由 Bluespec SystemVerilog實現(xiàn),然后編譯為 Verilog 以在Vivado v2020.2 上評估能耗、時間等硬件指標.對于準確率指標,我們在2×NV?D?A Tesla P100 GPU 服務(wù)器(16 GB GPU 內(nèi)存)上進行模型推理和RL 的搜索過程.實驗在 Python 3.6.0,GCC 9.3.0,PyTorch 1.5.1 和 CUDA 10.1 環(huán)境上進行.對于邊緣設(shè)備,我們使用移動平臺 Odroid-XU3[28].在實現(xiàn)SC 模型中,Sobol[29-30]隨機數(shù)生成器被用于從浮點數(shù)到SC 數(shù)據(jù)的轉(zhuǎn)換.
本文使用LSTM 網(wǎng)絡(luò)作為RL 控制器,LSTM 輸入的批次大小m=35,每次選擇的步數(shù)T=50,學(xué)習(xí)率lr=0.99.本文實驗探究2 種時間約束下的RR-SC搜索結(jié)果:對于MLP 來說,本文選擇95 ms 和120 ms這2 種時間約束來進行實驗探究;對于LeNet 來說,時間約束分別為540 ms 和2 700 ms;對于AlexNet 來說,時間約束分別設(shè)置為21 000 ms 和125 000 ms.本文共設(shè)置3 種V/F 等級,從高到低分別為表1 中的l6,l4,l3這3 個等級.相應(yīng)地,對于在MN?ST 數(shù)據(jù)集上進行訓(xùn)練的MLP 和LeNet 這2 種模型來說,3 種V/F 等級下的模型推理準確率約束分別設(shè)置為95%,90%,85%;對于在Cifar10 數(shù)據(jù)集上進行訓(xùn)練的AlexNet 模型來說,3 個V/F 等級下的模型推理準確率約束分別設(shè)置為90%,85%,80%.同時,對于反饋函數(shù)中的Au和Al分別設(shè)置為98%和60%.
首先對于RR-SC 框架的評估,我們與現(xiàn)有的SC相關(guān)工作[13-16]進行對比.這些工作主要針對SC 算術(shù)電路進行設(shè)計,沒有充分考慮硬件環(huán)境的動態(tài)改變.為了對比公平,將SC 相關(guān)的工作與通過RR-SC 搜索到的模型結(jié)構(gòu)設(shè)置成一樣的,并且數(shù)據(jù)精度取RRSC 方法中搜索出來的最高精度,然后對它們的模型推理準確率、時延及模型推理次數(shù)進行比較.
MLP 模型在不同時間約束下的結(jié)果與SC 相關(guān)工作的對比展示在表5 和表6 中.表5 展示了時間約束設(shè)置為95 ms 時的結(jié)果,表6 展示時間約束為120 ms時的結(jié)果.表5 實驗得到的MLP 的模型結(jié)構(gòu)為784-200-32-10,表示模型具有3 層全連接層,并且全連接層的神經(jīng)元的個數(shù)分別為200,32,10.表6 實驗得到的模型結(jié)構(gòu)為784-128-100-10 這2 組實驗選擇的SC算術(shù)電路均為AND-LOOP.我們將RR-SC 選擇出來模型結(jié)構(gòu)及相應(yīng)的算術(shù)電路進行可視化展示,如圖4 所示.RR-SC 實驗中的硬件配置均設(shè)置成表1 中的l6,l4,l3.對于其他對比工作來說,V/F 等級設(shè)置為l6.從實驗結(jié)果中可以看出,AND-LOOP 方法[16]擁有最高的推理準確率,XNOR-MUX 方法[13]擁有最低的推理準確率.RR-SC 方法的平均準確率僅比ANDLOOP 分別低1 個百分點和1.5 個百分點.然而,RRSC 的推理次數(shù)是AND-LOOP 推理次數(shù)的2.0 倍和2.8 倍.在眾多參數(shù)中,RR-SC 找到了最好的配置.對于XNOR-MUX 和uGEMM 來說,它們的模型推理準確率和時間約束都無法滿足我們的要求的.同時,RRSC 在推理次數(shù)方面實現(xiàn)了高達7.6 倍的提升.對于AND-SEP 和AND-ACC 來說,它們在MLP 784-200-32-10 模型能夠滿足我們的時間約束要求,但是在MLP 784-128-100-10 這個模型上的時間約束要求無法被滿足.從準確率和推理時間來說,AND-ACC 是最具競爭力的一個方法.對于推理次數(shù)來說,由于結(jié)合了硬件重配置和軟件重配置,RR-SC 比AND-ACC 實現(xiàn)了約1.8 倍的性能提升.RR-SC 方法可以在滿足一定的時間約束和準確率約束的情況下,最大化模型推理次數(shù)和平均準確率,擁有最好的性能權(quán)衡.
Table 5 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 95 ms on MLP表5 MLP 上SC 相關(guān)工作和RR-SC 在時間約束為95 ms 時的比較結(jié)果
Table 6 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 120 ms on MLP表6 MLP 上SC 相關(guān)工作和RR-SC 在時間約束為120 ms 時的比較結(jié)果
Fig.4 Visualization of the model architecture and SC arithmetic circuit searched by RR-SC圖4 RR-SC 搜索到的模型架構(gòu)和SC 算術(shù)電路可視化
對于LeNet 來說,同樣地,一個較緊的時間約束實驗結(jié)果和一個較松的時間約束實驗結(jié)果分別被展示在表7 和表8 中.表7 中的實驗設(shè)置時間約束為540 ms,表8 實驗設(shè)置時間約束為2 700 ms.AlexNet的實驗結(jié)果被展示在表9 和表10 中,設(shè)置時間約束分別為21 000 ms 和125 000 ms.因為LeNet 和AlexNet相較于MLP 更大、也更復(fù)雜,因此我們設(shè)置了更長的時間約束.對于表7 中的實驗,一個結(jié)構(gòu)為Conv1(k=3,s=1,c=6)-Pooling1(k=1,s=2)-Conv2(k=7,s=1,c=64)-Pooling2(k=1,s=2)-FC1(32)-FC2(128)-FC3(10)的 主干網(wǎng)絡(luò)被選擇出來.對于表8 中的實驗來說,主干網(wǎng)絡(luò)結(jié)構(gòu)為Conv1(k=3,s=1,c=32)-Pooling1(k=1,s=1)-Conv2(k=5,s=1,c=6)-Pooling2(k=1,s=1)-FC1(32)-FC2(512)-FC3(10).其中,k表示卷積層或池化層的核大小,s表示卷積層和池化層的滑動步長,c表示卷積層的輸出通道數(shù).在卷積層和池化層之后緊接2 個全連接層.對于AlexNet 網(wǎng)絡(luò)來說,表9 實驗下選擇出來的主干網(wǎng)絡(luò)模型為Conv1(k=5,s=1,c=256)-Pooling1(k=1,s=1)-Conv2(k=3,s=2,c=32)-Pooling2(k=1,s=1)-Conv3(k=7,s=2,c=16)-Conv4(k=5,s=2,c=16)-Conv5(k=3,s=1,c=256)-Pooling3(k=1,s=1)-FC1(512)-FC2(1 024)-FC3(10),表10 實驗下選擇出來的主干網(wǎng)絡(luò)模型為Conv1(k=7,s=2,c=256)-Pooling1(k=1,s=1)-Conv2(k=7,s=1,c=64)-Pooling2(k=1,s=1)-Conv3(k=3,s=1,c=256)-Conv4(k=7,s=1,c=32)-Conv5(k=7,s=1,c=256)-FC1(1 024)-FC2(512)-FC3(10).同樣地,對于LeNet 和AlexNet 的實驗中選擇出來的模型參數(shù)也被展示在圖4 中.對于LeNet 來說,當TC=540 ms 時,RR-SC 選擇出來的SC 算術(shù)電路是AND-LOOP,對于TC=2 700 ms 時,RR-SC 在ANDACC 上有更好的表現(xiàn).從準確率的角度來說,ANDLOOP 依然能夠獲得最高的推理準確率,但RR-SC 在產(chǎn)生高達3.1 倍的硬件效率的同時,只產(chǎn)生了1.2%的準確率丟失.從推理時間的角度來說,有些SC 工作在推理時能夠滿足我們約定的時間約束,但由于缺乏軟件和硬件的重配置,使得硬件效率沒有被充分發(fā)揮.對比所有的方法,RR-SC 能夠產(chǎn)生最高4.4倍的性能提升.對于AlexNet 來說,當TC=21 000 ms時,RR-SC 能夠產(chǎn)生高達4.9 倍的硬件效率提升,但比擁有最高準確率的AND-LOOP 電路只產(chǎn)生了1.7%的準確率損失.類似地,當TC=125 000 ms 時,RR-SC比其他方法最高能達到7.3 倍的運行數(shù)提升,相比AND-LOOP 電路準確率損失只有0.9%.同時,RR-SC也能夠滿足設(shè)定的時間約束和準確率約束.
Table 7 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 540 ms on LeNet表7 LeNet 上SC 相關(guān)工作和RR-SC 在時間約束為540 ms 時的比較結(jié)果
Table 8 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 2 700 ms on LeNet表8 LeNet 上SC 相關(guān)工作和RR-SC 在時間約束為2 700 ms 時的比較結(jié)果
Table 9 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 21 000 ms on AlexNet表9 AlexNet 上SC 相關(guān)工作和RR-SC 在時間約束為21 000 ms 時的比較結(jié)果
Table 10 Comparative Results of SC Relative Work and RR-SC with the Time Constraint 125 000 ms on AlexNet表10 AlexNet 上SC 相關(guān)工作和RR-SC 在時間約束為125 000 ms 時的比較結(jié)果
除此之外,RR-SC 產(chǎn)生的模型在不同配置中進行切換時產(chǎn)生的開銷也非常小.對于MLP 來說,模型切換需要約9 ms;對于LeNet 來說,模型切換需要約110 ms;對于AlexNet 來說,模型切換需要約4 030 ms.RR-SC 支持實時輕量級的模型切換.MLP,LeNet,AlexNet 每次因V/F 等級切換而切換數(shù)據(jù)精度時產(chǎn)生的能耗開銷分別為18 μJ,220 μJ,8.1 mJ.
在本節(jié)中,我們對軟硬件重配置方式進行比較.MLP,LeNet 和AlexNet 的配置使用RR-SC 選擇出來的模型結(jié)構(gòu)、算術(shù)電路和數(shù)據(jù)精度進行實驗對比.我們分別對比了無任何重配置、只有硬件重配置(HW)、只有軟件重配置(SW)和結(jié)合軟硬件重配置(RR-SC)4 種方法.對于所有的方法,MLP 結(jié)構(gòu)設(shè)置為784-200-32-10,LeNet 結(jié)構(gòu)設(shè)置為Conv1(k=3,s=1,c=6)-Pooling1(k=1,s=2)-Conv2(k=7,s=1,c=64)-Pooling2(k=1,s=2)-FC1(32)-FC2(128)-FC3(10),AlexNet 模型結(jié)構(gòu)設(shè) 置為Conv1(k=5,s=1,c=256)-Pooling1(k=1,s=1)-Conv2(k=3,s=2,c=32)-Pooling2(k=1,s=1)-Conv3(k=7,s=2,c=16)-Conv4(k=5,s=2,c=16)-Conv5(k=3,s=1,c=256)-Pooling3(k=1,s=1)-FC1(512)-FC2(1 024)-FC3(10),均使用在相對低的時間約束下RR-SC 選擇出來的模型結(jié)構(gòu).為了公平比較,這4 種方法均使用相同的SC 算術(shù)電路,即AND-LOOP.對于硬件重配置來說,3 個V/F 等級依然設(shè)置為l6,l4,l3.類似地,只有軟件重配置的設(shè)置和只有硬件重配置的其他配置被展示在表11、表12 和表13 中.
Table 11 Experimental Results of Methods with/Without Hardware and Software Reconfiguration on MLP表11 MLP 模型上搭配/不搭配軟硬件重配置方法的實驗結(jié)果
Table 12 Experimental Results of Methods with/Without Hardware and Software Reconfiguration on LeNet表12 LeNet 上搭配/不搭配軟硬件重配置方法的實驗結(jié)果
Table 13 Experimental Results of Methods with/Without Hardware and Software Reconfiguration on AlexNet表13 AlexNet 上搭配/不搭配軟硬件重配置方法的實驗結(jié)果
表11~13 實驗結(jié)果表明,當模型不搭配任何的軟硬件重配置時,雖然其擁有最高的推理準確率,且時間約束能夠被滿足,但是它能進行的模型推理次數(shù)是最少的.當模型只搭配硬件重配置時,模型推理的時間約束無法被滿足,但其對延長電池使用時間有一定的優(yōu)化.對于只有軟件重配置的實驗來說,模型的時間約束都能被滿足,但推理準確率有一定的下降,且推理次數(shù)也比只搭配硬件和RR-SC方法更少.對于RR-SC 方法來說,能夠在滿足時間約束的條件下,最大限度延長電池的使用時間,相比于無任何軟硬件配置的實驗有接近2.0 倍的性能提升;對比只有硬件重配置或只有軟件重配置的方法來說,能夠達到1.5 倍的性能提升;而且,RR-SC相比于最高的準確率來說,在MLP,LeNet 和AlexNet中分別只產(chǎn)生了1.0 個百分點,1.2 個百分點,1.7 個百分點的下降.
對于電池搭載的邊緣設(shè)備來說,能源(即電池電量)是有限且動態(tài)改變的.面對這種硬件環(huán)境,本文針對基于SC 的神經(jīng)網(wǎng)絡(luò)創(chuàng)新性地提出了硬件和軟件重配置相結(jié)合的方法以最大限度地延長電池使用時間.對于不斷改變的電池電量來說,本文設(shè)置電量閾值以便于在電量降低到一定程度之后進行硬件配置的切換(即切換V/F 等級).同時,為了選擇最好的軟件配置,本文提出一個運行時可重配置框架RRSC,在滿足模型推理時間約束和準確率約束的前提下,最大化模型推理準確率和推理總次數(shù).RR-SC 利用強化學(xué)習(xí)技術(shù)能夠一次性選擇多組軟件配置以對應(yīng)不同的硬件配置.每組配置能夠同時滿足規(guī)定的時間約束和準確率約束.同時,多個模型配置在同一個主干網(wǎng)絡(luò)上進行切換,從而在運行時實現(xiàn)輕量級的軟件重配置.實驗結(jié)果表明,RR-SC 在給定能源總量的情況下最高可以將模型推理次數(shù)增加7.6 倍,且精度損失相較于最高準確率方法小于1.7 個百分點.同時,可以在110 ms 內(nèi)進行LeNet 模型配置的輕量級切換,并且可以滿足不同硬件配置下的實時性要求.
作者貢獻聲明:宋玉紅提出論文方案,完成實驗和撰寫論文;沙行勉提出指導(dǎo)意見和分析方案;諸葛晴鳳提出指導(dǎo)意見和討論方案;許瑞和王寒參與方案討論和修改論文.