薛峰,方維維
(北京交通大學(xué)計算機與信息技術(shù)學(xué)院,北京100044)
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)在諸多工業(yè)領(lǐng)域中取得了突破性的成就,如語音識別、圖像檢測與自動駕駛等[1-2],但是DNN 計算需要消耗大量的算力和存儲空間。基于云計算的解決方案不僅會導(dǎo)致過高的通信延遲和極高的帶寬成本,而且可能會引起對隱私泄漏的極大關(guān)注。同時,物聯(lián)網(wǎng)設(shè)備快速增加,由此產(chǎn)生的數(shù)據(jù)大爆炸現(xiàn)象不能僅依靠云計算方案解決[3-4]。
為了應(yīng)對這些挑戰(zhàn),研究人員提出邊緣計算[5],它指的是在靠近物聯(lián)網(wǎng)設(shè)備和數(shù)據(jù)源的網(wǎng)絡(luò)邊緣提供計算服務(wù)。與傳統(tǒng)的云計算解決方案相比,邊緣計算的優(yōu)點包括低延遲、高能效、帶寬減少和增強隱私。然而邊緣設(shè)備在計算、存儲、通信和能源等資源方面受到限制,因此無法提供良好的硬件支持,使得邊緣設(shè)備無法進行DNN 模型計算或者計算緩慢[6]。
本文提出了EdgeMI,一種根據(jù)邊緣設(shè)備計算能力和網(wǎng)絡(luò)帶寬進行自適應(yīng)的DNN 多設(shè)備推理框架,實驗結(jié)果表明,與文獻[7]工作相比,EdgeMI 在受限的邊緣環(huán)境下可以取得更好的效果。從以下兩個方面總結(jié)我們工作的貢獻:①提出了一種基于邊緣設(shè)備計算能力和網(wǎng)絡(luò)帶寬的卷積層劃分方案,使用時間預(yù)估模型預(yù)估卷積層和全連接層的計算時間和通信時間,精確劃分計算任務(wù),均衡設(shè)備負載,加快多設(shè)備推理;②提出了一種邊緣多設(shè)備數(shù)據(jù)調(diào)度方案,減少邊緣設(shè)備間的數(shù)據(jù)交換,降低數(shù)據(jù)傳輸時間,進一步提高多設(shè)備推理性能。
DNN 模型通常由卷積層和全連接層組成,例如VGG16、AlexNet 和ResNet,卷積層參數(shù)較少,但是會消耗86.5%-97.8%的算力,全連接層參數(shù)多并占據(jù)87.1%的存儲空間[7]。以VGG16 為例[8],共有參數(shù)138M,模型存儲527MB,單圖像計算需要15.5G 浮點計算(Floating-Point Operations Per Second,F(xiàn)LOPS)[9]。邊緣設(shè)備推理時,VGG16 每層的計算耗時、通信耗時均不同,如圖1所示。
圖1 VGG16網(wǎng)絡(luò)層計算時間和通信時間
針對邊緣環(huán)境設(shè)備算力和存儲等資源難以滿足DNN 模型計算需求的問題,研究人員進行了大量的研究,主要分為以下兩個方面:DNN 模型壓縮和多設(shè)備協(xié)同處理技術(shù)。
模型壓縮研究大致歸類為網(wǎng)絡(luò)剪枝、知識蒸餾、低秩分解和緊湊卷積核設(shè)計[10-11]。網(wǎng)絡(luò)剪枝探索DNN 模型冗余參數(shù),試圖去除不重要和冗余的權(quán)重,Han 等人[12-13]提出了一種基于權(quán)重的剪枝方法,先剪枝再微調(diào)訓(xùn)練恢復(fù)推理精度,通過訓(xùn)練量化和Huffman編碼來增強剪枝,將原始網(wǎng)絡(luò)壓縮為輕量級神經(jīng)網(wǎng)絡(luò),然而,這些非結(jié)構(gòu)化剪枝方法產(chǎn)生了稀疏權(quán)重矩陣,沒有專用的硬件和軟件庫難以運行。Hinton 等人[14]提出知識蒸餾簡化網(wǎng)絡(luò),但知識蒸餾技術(shù)僅對圖像分類任務(wù)有著良好的效果,圖像檢測和識別效果一般[15]。
多設(shè)備協(xié)同處理技術(shù)分為邊-云協(xié)同和本地多設(shè)備協(xié)同,Teerapittayanon 等人[16]提出網(wǎng)絡(luò)邊緣端-云端協(xié)同的方式,將計算任務(wù)切割、劃分到邊緣端和云端,有效避免邊緣端設(shè)備計算能力低下的問題;Kang 等人[17]提出一個輕量級的調(diào)度器Neurosurgeon,采用層級計算劃分DNN 策略,適應(yīng)各種DNN 模型和硬件平臺,在延遲和能量方面可取得良好的效果;Li 等人[18]提出早期退出技術(shù)[19]和邊緣-云端結(jié)合的方式,在推理時間受限的條件下,完成計算任務(wù),邊-云協(xié)同非常依賴云端計算能力,中間傳輸不可靠,數(shù)據(jù)易泄露隱私無法得到保障。Mao 提出MeDNN[20]和MoDNN[7],基于設(shè)備算力的計算任務(wù)劃分方案BODP,在各邊緣設(shè)備算力接近且網(wǎng)絡(luò)帶寬良好的條件下,BODP 有效提高了邊緣集群計算速度,但是忽略了設(shè)備的異構(gòu)性和網(wǎng)絡(luò)狀態(tài)的差異性;Zhao 等人[21]提出一種用于自適應(yīng)分布的框架Deep?Things,在嚴格資源約束的物聯(lián)網(wǎng)邊緣簇上執(zhí)行DNN推理,使用Fused Tile Partitioning(FTP)劃分方案,方塊劃分方案復(fù)雜,設(shè)備間數(shù)據(jù)頻率交互偏高。模型壓縮技術(shù)與多設(shè)備協(xié)同處理技術(shù)是相互正交的,可混合使用多方面加速DNN 推理。
在該部分,我們將介紹EdgeMI 框架和原理,框架如圖2 所示,由三部分組成,①邊緣計算集群;②卷積層劃分方案;③邊緣集群調(diào)度策略。
圖2 EdgeMI框架
后續(xù)將介紹EdgeMI 框架、算法描述和實驗結(jié)果等,表定義常用變量以及介紹變量的含義。
表1 變量定義及說明
卷積層運算時間與FLOPs 具有相關(guān)性,通過計算FLOPs 可預(yù)估卷積層計算時間。文獻[9]介紹了卷積計算和全連接層矩陣計算的FLOPs 的,公式(1)定義卷積運算浮點計算量,假設(shè)特征圖map 進行卷積運算,H 表示map 的高度,W 表示map 的寬度,Cin表示卷積計算的輸入通道個數(shù),Cout表示卷積運算的輸出通道個數(shù),K表示卷積核的大小。公式(2)定義全連接層矩陣運算的FLOPs,其中I 表示全連接層的輸入維數(shù),O 表示全連接層的輸出維數(shù)。
假設(shè)FLOPs 與計算時間邏輯回歸模型如公式(3)所示,y 表示計算時間,a 表示設(shè)備計算能力,x 表示FLOPs,b 表示卷積計算固有時間開銷。如何求得該邏輯回歸模型?設(shè)置不同大小的特征圖H*W(H 與W 不一定相等),在邊緣設(shè)備上進行卷積運算,多次計算求平均值。記錄FLOPs 與計算時間,使用最小二乘法求得回歸方程。在卷積運算和全連接層運算前,根據(jù)已知的輸入、輸出等參數(shù)計算FLOPs,根據(jù)邊緣設(shè)備的FLOPs 計算時間回歸方程可預(yù)估卷積計算時間。
通信開銷Tcomm=D/B,D 表示傳輸數(shù)據(jù)的大小,B表示網(wǎng)絡(luò)帶寬,分為發(fā)送數(shù)據(jù)通信開銷和接受數(shù)據(jù)通信開銷。
傳統(tǒng)的卷積層劃分方案通常保持層輸入的結(jié)構(gòu)對稱性,劃分為二維網(wǎng)格形式,但是該方法導(dǎo)致設(shè)備間數(shù)據(jù)依賴較多,并不適合網(wǎng)絡(luò)邊緣環(huán)境。文獻[7]提出的基于算力的劃分方式BODP,各邊緣設(shè)備間重疊數(shù)據(jù)較少,有利于降低邊緣設(shè)備間的交換頻率,減少通信時間。本文提出了基于設(shè)備算力與網(wǎng)絡(luò)帶寬的劃分方式CBPS(Computation-Bandwidth Partitioning Scheme),降低邊緣節(jié)點的空閑等待時間。
圖3 卷積層劃分方案
假設(shè)邊緣集群有M 個節(jié)點,編號依次為0,1,2,…,M-1,i 表示第i 個邊緣節(jié)點,其算力為Ci,網(wǎng)絡(luò)帶寬為Bi。Ctotal表示所有邊緣節(jié)點的算力之和,邊緣集群按照算力初始化劃分長度,劃分依據(jù)為ENi的算力所占總算力的比例,邊緣節(jié)點i 所分配的長度leni,如公式(5)所示,其中W 表示特征圖map 的寬度。
劃分長度初始化完成后,使用時間預(yù)估模型預(yù)測邊緣節(jié)點的耗時Tpre,包括計算時間Tcomp和通信時間Tcomm,如公式(6)所示,Tcomp值大小與節(jié)點的算力等因素有關(guān),根據(jù)之前提到的公式(3)預(yù)估計算時間,Tcomm值大小與網(wǎng)絡(luò)帶寬和數(shù)據(jù)量大小有關(guān),分為發(fā)送數(shù)據(jù)耗時和接受數(shù)據(jù)耗時,如公式(8)所示。
為了使得每層卷積運算的速度最快,耗時最小,即最小化邊緣集群中max(Tpre),優(yōu)化步驟為:①根據(jù)劃分范圍和時間預(yù)估模型,計算出邊緣集群預(yù)計耗時{Tpre},找出{Tpre}中最大值max 與最小值min;②調(diào)整步長為Wstep,即最大值max 對應(yīng)的劃分長度減Wstep,最小值min 對應(yīng)的劃分長度加Wstep,重新計算邊緣集群的{Tpre};③判斷終止條件:最大值Tmax與最小值Tmin差值是否小于Ttolerate,若符合終止條件,則停止迭代求解,否則繼續(xù)步驟(1)。整個過程如算法1 描述。
Algorithm 1 卷積層劃分方案
輸入:神經(jīng)網(wǎng)絡(luò)特征圖map,大小為H*W,H 表示特征圖map 的高度,W 表示寬度,M 臺邊緣節(jié)點ENs,計算能力Ci,網(wǎng)絡(luò)帶寬Bi,(i=0,1,…,M-1),迭代步長為Wstep
初始化:根據(jù)邊緣節(jié)點ENi的算力Ci,根據(jù)公式()初始化劃分長度,并存儲在len[]中
1:Procedure INT PARTITION(M)
2:使用時間預(yù)測模型預(yù)測邊緣節(jié)點i 的總耗時
3:計算邊緣節(jié)點的FLOPs=2H*leni(CinK2+1)Cout,得到Tcomp和Tcomm,對于每個邊緣節(jié)點:
4:找出預(yù)計時間的極值
5:計算差值Tdiff=Tmax-Tmin
6:IfTdiff 7: 結(jié)束迭代求解過程,返回len[] 8:else: 9:lenarg(max)=max-Wstep 10:lenarg(max)=max-Wstep 11: 回到步驟(2)繼續(xù)計算 12:輸出:卷積層劃分結(jié)果len[] 之前我們探討了基于算力和網(wǎng)絡(luò)帶寬的卷積層劃分方案CBPS,調(diào)度策略總體按照Map-Reduce 方式。邊緣網(wǎng)關(guān)對卷積層數(shù)據(jù)劃分后,根據(jù)劃分映射依次發(fā)送至邊緣節(jié)點進行計算,待計算任務(wù)完成后,由邊緣網(wǎng)關(guān)聚合各節(jié)點的計算結(jié)果,整個過程我們稱為數(shù)據(jù)調(diào)度,根據(jù)邊緣網(wǎng)關(guān)與邊緣節(jié)點EN 間的數(shù)據(jù)交換頻率分為兩種調(diào)度策略:單層交換和多層交換。如圖4 所示,單層交換策略即邊緣節(jié)點每層卷積運算均會與邊緣網(wǎng)關(guān)交換數(shù)據(jù);多層交換即邊緣節(jié)點進行多層卷積運算后才會與邊緣網(wǎng)關(guān)交換數(shù)據(jù)。 特征圖的卷積結(jié)果不僅與輸入特征圖相同位置的數(shù)據(jù)相關(guān),而且與該區(qū)域四周的數(shù)據(jù)相關(guān),具體外擴范圍的確定與卷積核大小相關(guān), 圖4 單層交換與多層交換策略對比 單層交換策略中,邊緣節(jié)點ENi的劃分范圍[indexstart,indexend]一般情況表示為公式9,當(dāng)i=0 時,令indexstart=0;當(dāng)i=M-1時,令indexend=W-1。 多層交換策略中,假設(shè)經(jīng)過a 層卷積運算后邊緣節(jié)點與邊緣網(wǎng)關(guān)數(shù)據(jù)交換,劃分范圍一般表示為公式10,當(dāng)i=0 時,indexstart=0;當(dāng)i=M-1時,indexend=W-1。 EdgeMI 采用的深度學(xué)習(xí)開發(fā)框架為PyTorch 1.3,通信協(xié)議為TCP/IP,編程語言為Python 3.6.9。DNN 模型類型有VGG13 和VGG16。邊緣設(shè)備采用樹莓派3B+,Intel MiniPC CPU 800MHz、900MHz,使用Wondershaper 設(shè)置邊緣節(jié)點網(wǎng)絡(luò)帶寬,帶寬范圍:50-1000Mbps。 表2 邊緣設(shè)備算力-FLOPs 回歸模型 我們采用不同的邊緣設(shè)備作為實驗平臺,并設(shè)置不同寬度與高度的特征圖map,5 次計算取平均值,以降低偶然誤差,利用最小二乘法求得回歸方程。各邊緣設(shè)備算力回歸模型如表2 所示,其中算力回歸直線的斜率越低,表示該邊緣節(jié)點的計算能力越強,同樣的FLOPs,計算耗時更少,回歸方程與Y 軸的截距為正值,表示邊緣設(shè)備在卷積計算過程中的固有時間開銷。根據(jù)回歸模型求得的卷積計算和全連接層矩陣預(yù)估時間,與實際計算時間有一定的誤差。表2 中同一邊緣設(shè)備,卷積層和全連接層的算力回歸模型斜率不同,即卷積層和全連接層計算相同的FLOPs 耗時不同,是由于邊緣設(shè)備內(nèi)存不足導(dǎo)致與swap 分區(qū)數(shù)據(jù)交換,交卷積運算與全連接層運算的swap 分區(qū)交換頻率導(dǎo)致回歸模型斜率的不同。 利用邊緣設(shè)備的算力值初始化卷積層劃分長度,根據(jù)步長迭代優(yōu)化求解,最小化計算時間。DNN 模型選擇VGG13 與VGG16,邊緣節(jié)點數(shù)量設(shè)置為4。本文所提劃分方案和文獻[9]劃分方案BODP 兩種劃分進行對比實驗,(1)在理想網(wǎng)絡(luò)帶寬條件下,設(shè)置網(wǎng)絡(luò)帶寬均為1000Mbps;(2)在較差網(wǎng)絡(luò)帶寬條件下,設(shè)置網(wǎng)絡(luò)帶寬為100Mbps。實驗結(jié)果表3 所示。同一DNN 模型,本文所提卷積層劃分方案CBPS 在良好網(wǎng)絡(luò)狀態(tài)稍優(yōu)于BODP 方案,但是在較差網(wǎng)絡(luò)狀態(tài)下的CBPS 性能明顯高于BODP,最高達到14.34%。在圖5 中,不同網(wǎng)絡(luò)帶寬條件下,CBPS 加速比均高于BODP,加速比最高為3.57x。BODP 方案僅依據(jù)算力進行卷積層長度劃分,當(dāng)某個邊緣節(jié)點網(wǎng)絡(luò)狀態(tài)較差,易導(dǎo)致邊緣網(wǎng)關(guān)長時間等待該邊緣節(jié)點返回的計算結(jié)果,使得其他已完成計算任務(wù)的邊緣節(jié)點處于空閑等待狀態(tài),造成總體計算時間的上升。CBPS 利用網(wǎng)絡(luò)狀態(tài),重新調(diào)整劃分長度,使得邊緣網(wǎng)關(guān)在相近的時間內(nèi)收到邊緣節(jié)點返回的計算結(jié)果,邊緣網(wǎng)關(guān)空閑等待時間越短,邊緣集群的計算速度越快。 表3 BODP 與CBPS 性能對比 圖5 CBPS與BODP加速比對比 圖6 單層交換與多層交換策略性能對比 單層交換和多層交換兩種調(diào)度策略,單層交換策略設(shè)定,即在卷積運算后邊緣節(jié)點間進行數(shù)據(jù)交換;多層交換策略設(shè)定,在多次卷積運算后池化層前邊緣節(jié)點間進行數(shù)據(jù)交換。邊緣節(jié)點數(shù)量設(shè)置為4,DNN 模型選擇VGG13 和VGG16。網(wǎng)絡(luò)帶寬設(shè)置為1000mbps。實驗結(jié)果如圖6 所示,相同調(diào)度策略VGG16 的計算耗時明顯高于VGG13;相同DNN 模型,多層交換策略時間低于單層交換策略。單層交換策略總體耗時由單層計算耗時和單層通信耗時組成,多層交換策略總體耗時由多層計算耗時和單層通信耗時組成,多層交換策略的計算耗時稍高于單層交換策略的計算耗時,但是同一網(wǎng)絡(luò)狀態(tài)下,后者的通信耗時明顯低于前者的通信耗時,導(dǎo)致多層交換策略的加速比高于單層交換策略,調(diào)度策略的關(guān)鍵就是減少邊緣節(jié)點間的數(shù)據(jù)交換頻率,提高數(shù)據(jù)利用效率,最終達到邊緣集群的加速。 邊緣節(jié)點為2 臺時,單節(jié)點平均內(nèi)存減少49.11%;邊緣節(jié)點為4 臺時,單節(jié)點平均內(nèi)存減少73.67%。邊緣集群中邊緣節(jié)點數(shù)量對計算時間的影響如圖7 所示,VGG13 與VGG16 兩個DNN 模型,隨著邊緣節(jié)點數(shù)量的增加,加速比逐漸增加,但是增加速率總體是降低的,邊緣節(jié)點為2 臺時,加速為1.84x;邊緣節(jié)點為4 臺時,加速比最大為3.58x。加速比的非線性增加是由于邊緣節(jié)點增多,節(jié)點間數(shù)據(jù)交互增多,通信時間增加導(dǎo)致加速比增加速率下降。 圖7 邊緣節(jié)點數(shù)量對加速比的影響 本文提出了一種在邊緣資源受限條件下多設(shè)備協(xié)同推理框架EdgeMI,以提高DNN 模型在邊緣集群上的推理性能。主要研究點集中在卷積層分布式協(xié)同計算,提出時間預(yù)估模型預(yù)計計算和通信時間;提出基于設(shè)備算力和網(wǎng)絡(luò)狀態(tài)的劃分方案CBPS,邊緣集群自適應(yīng)推理,降低內(nèi)存占用73.67%;提出單層交換和多層交換兩種調(diào)度策略,提高劃分區(qū)間的重疊數(shù)據(jù)利用效率,降低邊緣節(jié)點通信負載,加快邊緣集群的推理速度1.84x-3.57x。未來的研究工作,將深入探討邊緣異構(gòu)設(shè)備具有硬件加速功能條件下多設(shè)備協(xié)同推理問題,以及DNN 全連接層多設(shè)備協(xié)同推理問題。2.3 調(diào)度策略
3 實驗和評估
3.1 時間預(yù)測模型
3.2 卷積層劃分策略CBPS
3.3 調(diào)度策略
3.4 邊緣節(jié)點數(shù)量
4 結(jié)語