薛峰,方維維
(北京交通大學計算機與信息技術學院,北京100044)
深度神經網絡(Deep Neural Networks,DNN)在諸多工業領域中取得了突破性的成就,如語音識別、圖像檢測與自動駕駛等[1-2],但是DNN 計算需要消耗大量的算力和存儲空間。基于云計算的解決方案不僅會導致過高的通信延遲和極高的帶寬成本,而且可能會引起對隱私泄漏的極大關注。同時,物聯網設備快速增加,由此產生的數據大爆炸現象不能僅依靠云計算方案解決[3-4]。
為了應對這些挑戰,研究人員提出邊緣計算[5],它指的是在靠近物聯網設備和數據源的網絡邊緣提供計算服務。與傳統的云計算解決方案相比,邊緣計算的優點包括低延遲、高能效、帶寬減少和增強隱私。然而邊緣設備在計算、存儲、通信和能源等資源方面受到限制,因此無法提供良好的硬件支持,使得邊緣設備無法進行DNN 模型計算或者計算緩慢[6]。
本文提出了EdgeMI,一種根據邊緣設備計算能力和網絡帶寬進行自適應的DNN 多設備推理框架,實驗結果表明,與文獻[7]工作相比,EdgeMI 在受限的邊緣環境下可以取得更好的效果。從以下兩個方面總結我們工作的貢獻:①提出了一種基于邊緣設備計算能力和網絡帶寬的卷積層劃分方案,使用時間預估模型預估卷積層和全連接層的計算時間和通信時間,精確劃分計算任務,均衡設備負載,加快多設備推理;②提出了一種邊緣多設備數據調度方案,減少邊緣設備間的數據交換,降低數據傳輸時間,進一步提高多設備推理性能。
DNN 模型通常由卷積層和全連接層組成,例如VGG16、AlexNet 和ResNet,卷積層參數較少,但是會消耗86.5%-97.8%的算力,全連接層參數多并占據87.1%的存儲空間[7]。以VGG16 為例[8],共有參數138M,模型存儲527MB,單圖像計算需要15.5G 浮點計算(Floating-Point Operations Per Second,FLOPS)[9]。邊緣設備推理時,VGG16 每層的計算耗時、通信耗時均不同,如圖1所示。

圖1 VGG16網絡層計算時間和通信時間
針對邊緣環境設備算力和存儲等資源難以滿足DNN 模型計算需求的問題,研究人員進行了大量的研究,主要分為以下兩個方面:DNN 模型壓縮和多設備協同處理技術。
模型壓縮研究大致歸類為網絡剪枝、知識蒸餾、低秩分解和緊湊卷積核設計[10-11]。網絡剪枝探索DNN 模型冗余參數,試圖去除不重要和冗余的權重,Han 等人[12-13]提出了一種基于權重的剪枝方法,先剪枝再微調訓練恢復推理精度,通過訓練量化和Huffman編碼來增強剪枝,將原始網絡壓縮為輕量級神經網絡,然而,這些非結構化剪枝方法產生了稀疏權重矩陣,沒有專用的硬件和軟件庫難以運行。Hinton 等人[14]提出知識蒸餾簡化網絡,但知識蒸餾技術僅對圖像分類任務有著良好的效果,圖像檢測和識別效果一般[15]。
多設備協同處理技術分為邊-云協同和本地多設備協同,Teerapittayanon 等人[16]提出網絡邊緣端-云端協同的方式,將計算任務切割、劃分到邊緣端和云端,有效避免邊緣端設備計算能力低下的問題;Kang 等人[17]提出一個輕量級的調度器Neurosurgeon,采用層級計算劃分DNN 策略,適應各種DNN 模型和硬件平臺,在延遲和能量方面可取得良好的效果;Li 等人[18]提出早期退出技術[19]和邊緣-云端結合的方式,在推理時間受限的條件下,完成計算任務,邊-云協同非常依賴云端計算能力,中間傳輸不可靠,數據易泄露隱私無法得到保障。Mao 提出MeDNN[20]和MoDNN[7],基于設備算力的計算任務劃分方案BODP,在各邊緣設備算力接近且網絡帶寬良好的條件下,BODP 有效提高了邊緣集群計算速度,但是忽略了設備的異構性和網絡狀態的差異性;Zhao 等人[21]提出一種用于自適應分布的框架Deep?Things,在嚴格資源約束的物聯網邊緣簇上執行DNN推理,使用Fused Tile Partitioning(FTP)劃分方案,方塊劃分方案復雜,設備間數據頻率交互偏高。模型壓縮技術與多設備協同處理技術是相互正交的,可混合使用多方面加速DNN 推理。
在該部分,我們將介紹EdgeMI 框架和原理,框架如圖2 所示,由三部分組成,①邊緣計算集群;②卷積層劃分方案;③邊緣集群調度策略。

圖2 EdgeMI框架
后續將介紹EdgeMI 框架、算法描述和實驗結果等,表定義常用變量以及介紹變量的含義。

表1 變量定義及說明
卷積層運算時間與FLOPs 具有相關性,通過計算FLOPs 可預估卷積層計算時間。文獻[9]介紹了卷積計算和全連接層矩陣計算的FLOPs 的,公式(1)定義卷積運算浮點計算量,假設特征圖map 進行卷積運算,H 表示map 的高度,W 表示map 的寬度,Cin表示卷積計算的輸入通道個數,Cout表示卷積運算的輸出通道個數,K表示卷積核的大小。公式(2)定義全連接層矩陣運算的FLOPs,其中I 表示全連接層的輸入維數,O 表示全連接層的輸出維數。

假設FLOPs 與計算時間邏輯回歸模型如公式(3)所示,y 表示計算時間,a 表示設備計算能力,x 表示FLOPs,b 表示卷積計算固有時間開銷。如何求得該邏輯回歸模型?設置不同大小的特征圖H*W(H 與W 不一定相等),在邊緣設備上進行卷積運算,多次計算求平均值。記錄FLOPs 與計算時間,使用最小二乘法求得回歸方程。在卷積運算和全連接層運算前,根據已知的輸入、輸出等參數計算FLOPs,根據邊緣設備的FLOPs 計算時間回歸方程可預估卷積計算時間。

通信開銷Tcomm=D/B,D 表示傳輸數據的大小,B表示網絡帶寬,分為發送數據通信開銷和接受數據通信開銷。
傳統的卷積層劃分方案通常保持層輸入的結構對稱性,劃分為二維網格形式,但是該方法導致設備間數據依賴較多,并不適合網絡邊緣環境。文獻[7]提出的基于算力的劃分方式BODP,各邊緣設備間重疊數據較少,有利于降低邊緣設備間的交換頻率,減少通信時間。本文提出了基于設備算力與網絡帶寬的劃分方式CBPS(Computation-Bandwidth Partitioning Scheme),降低邊緣節點的空閑等待時間。

圖3 卷積層劃分方案
假設邊緣集群有M 個節點,編號依次為0,1,2,…,M-1,i 表示第i 個邊緣節點,其算力為Ci,網絡帶寬為Bi。Ctotal表示所有邊緣節點的算力之和,邊緣集群按照算力初始化劃分長度,劃分依據為ENi的算力所占總算力的比例,邊緣節點i 所分配的長度leni,如公式(5)所示,其中W 表示特征圖map 的寬度。

劃分長度初始化完成后,使用時間預估模型預測邊緣節點的耗時Tpre,包括計算時間Tcomp和通信時間Tcomm,如公式(6)所示,Tcomp值大小與節點的算力等因素有關,根據之前提到的公式(3)預估計算時間,Tcomm值大小與網絡帶寬和數據量大小有關,分為發送數據耗時和接受數據耗時,如公式(8)所示。

為了使得每層卷積運算的速度最快,耗時最小,即最小化邊緣集群中max(Tpre),優化步驟為:①根據劃分范圍和時間預估模型,計算出邊緣集群預計耗時{Tpre},找出{Tpre}中最大值max 與最小值min;②調整步長為Wstep,即最大值max 對應的劃分長度減Wstep,最小值min 對應的劃分長度加Wstep,重新計算邊緣集群的{Tpre};③判斷終止條件:最大值Tmax與最小值Tmin差值是否小于Ttolerate,若符合終止條件,則停止迭代求解,否則繼續步驟(1)。整個過程如算法1 描述。
Algorithm 1 卷積層劃分方案
輸入:神經網絡特征圖map,大小為H*W,H 表示特征圖map 的高度,W 表示寬度,M 臺邊緣節點ENs,計算能力Ci,網絡帶寬Bi,(i=0,1,…,M-1),迭代步長為Wstep
初始化:根據邊緣節點ENi的算力Ci,根據公式()初始化劃分長度,并存儲在len[]中
1:Procedure INT PARTITION(M)
2:使用時間預測模型預測邊緣節點i 的總耗時
3:計算邊緣節點的FLOPs=2H*leni(CinK2+1)Cout,得到Tcomp和Tcomm,對于每個邊緣節點:
4:找出預計時間的極值
5:計算差值Tdiff=Tmax-Tmin
6:IfTdiff 7: 結束迭代求解過程,返回len[] 8:else: 9:lenarg(max)=max-Wstep 10:lenarg(max)=max-Wstep 11: 回到步驟(2)繼續計算 12:輸出:卷積層劃分結果len[] 之前我們探討了基于算力和網絡帶寬的卷積層劃分方案CBPS,調度策略總體按照Map-Reduce 方式。邊緣網關對卷積層數據劃分后,根據劃分映射依次發送至邊緣節點進行計算,待計算任務完成后,由邊緣網關聚合各節點的計算結果,整個過程我們稱為數據調度,根據邊緣網關與邊緣節點EN 間的數據交換頻率分為兩種調度策略:單層交換和多層交換。如圖4 所示,單層交換策略即邊緣節點每層卷積運算均會與邊緣網關交換數據;多層交換即邊緣節點進行多層卷積運算后才會與邊緣網關交換數據。 特征圖的卷積結果不僅與輸入特征圖相同位置的數據相關,而且與該區域四周的數據相關,具體外擴范圍的確定與卷積核大小相關, 圖4 單層交換與多層交換策略對比 單層交換策略中,邊緣節點ENi的劃分范圍[indexstart,indexend]一般情況表示為公式9,當i=0 時,令indexstart=0;當i=M-1時,令indexend=W-1。 多層交換策略中,假設經過a 層卷積運算后邊緣節點與邊緣網關數據交換,劃分范圍一般表示為公式10,當i=0 時,indexstart=0;當i=M-1時,indexend=W-1。 EdgeMI 采用的深度學習開發框架為PyTorch 1.3,通信協議為TCP/IP,編程語言為Python 3.6.9。DNN 模型類型有VGG13 和VGG16。邊緣設備采用樹莓派3B+,Intel MiniPC CPU 800MHz、900MHz,使用Wondershaper 設置邊緣節點網絡帶寬,帶寬范圍:50-1000Mbps。 表2 邊緣設備算力-FLOPs 回歸模型 我們采用不同的邊緣設備作為實驗平臺,并設置不同寬度與高度的特征圖map,5 次計算取平均值,以降低偶然誤差,利用最小二乘法求得回歸方程。各邊緣設備算力回歸模型如表2 所示,其中算力回歸直線的斜率越低,表示該邊緣節點的計算能力越強,同樣的FLOPs,計算耗時更少,回歸方程與Y 軸的截距為正值,表示邊緣設備在卷積計算過程中的固有時間開銷。根據回歸模型求得的卷積計算和全連接層矩陣預估時間,與實際計算時間有一定的誤差。表2 中同一邊緣設備,卷積層和全連接層的算力回歸模型斜率不同,即卷積層和全連接層計算相同的FLOPs 耗時不同,是由于邊緣設備內存不足導致與swap 分區數據交換,交卷積運算與全連接層運算的swap 分區交換頻率導致回歸模型斜率的不同。 利用邊緣設備的算力值初始化卷積層劃分長度,根據步長迭代優化求解,最小化計算時間。DNN 模型選擇VGG13 與VGG16,邊緣節點數量設置為4。本文所提劃分方案和文獻[9]劃分方案BODP 兩種劃分進行對比實驗,(1)在理想網絡帶寬條件下,設置網絡帶寬均為1000Mbps;(2)在較差網絡帶寬條件下,設置網絡帶寬為100Mbps。實驗結果表3 所示。同一DNN 模型,本文所提卷積層劃分方案CBPS 在良好網絡狀態稍優于BODP 方案,但是在較差網絡狀態下的CBPS 性能明顯高于BODP,最高達到14.34%。在圖5 中,不同網絡帶寬條件下,CBPS 加速比均高于BODP,加速比最高為3.57x。BODP 方案僅依據算力進行卷積層長度劃分,當某個邊緣節點網絡狀態較差,易導致邊緣網關長時間等待該邊緣節點返回的計算結果,使得其他已完成計算任務的邊緣節點處于空閑等待狀態,造成總體計算時間的上升。CBPS 利用網絡狀態,重新調整劃分長度,使得邊緣網關在相近的時間內收到邊緣節點返回的計算結果,邊緣網關空閑等待時間越短,邊緣集群的計算速度越快。 表3 BODP 與CBPS 性能對比 圖5 CBPS與BODP加速比對比 圖6 單層交換與多層交換策略性能對比 單層交換和多層交換兩種調度策略,單層交換策略設定,即在卷積運算后邊緣節點間進行數據交換;多層交換策略設定,在多次卷積運算后池化層前邊緣節點間進行數據交換。邊緣節點數量設置為4,DNN 模型選擇VGG13 和VGG16。網絡帶寬設置為1000mbps。實驗結果如圖6 所示,相同調度策略VGG16 的計算耗時明顯高于VGG13;相同DNN 模型,多層交換策略時間低于單層交換策略。單層交換策略總體耗時由單層計算耗時和單層通信耗時組成,多層交換策略總體耗時由多層計算耗時和單層通信耗時組成,多層交換策略的計算耗時稍高于單層交換策略的計算耗時,但是同一網絡狀態下,后者的通信耗時明顯低于前者的通信耗時,導致多層交換策略的加速比高于單層交換策略,調度策略的關鍵就是減少邊緣節點間的數據交換頻率,提高數據利用效率,最終達到邊緣集群的加速。 邊緣節點為2 臺時,單節點平均內存減少49.11%;邊緣節點為4 臺時,單節點平均內存減少73.67%。邊緣集群中邊緣節點數量對計算時間的影響如圖7 所示,VGG13 與VGG16 兩個DNN 模型,隨著邊緣節點數量的增加,加速比逐漸增加,但是增加速率總體是降低的,邊緣節點為2 臺時,加速為1.84x;邊緣節點為4 臺時,加速比最大為3.58x。加速比的非線性增加是由于邊緣節點增多,節點間數據交互增多,通信時間增加導致加速比增加速率下降。 圖7 邊緣節點數量對加速比的影響 本文提出了一種在邊緣資源受限條件下多設備協同推理框架EdgeMI,以提高DNN 模型在邊緣集群上的推理性能。主要研究點集中在卷積層分布式協同計算,提出時間預估模型預計計算和通信時間;提出基于設備算力和網絡狀態的劃分方案CBPS,邊緣集群自適應推理,降低內存占用73.67%;提出單層交換和多層交換兩種調度策略,提高劃分區間的重疊數據利用效率,降低邊緣節點通信負載,加快邊緣集群的推理速度1.84x-3.57x。未來的研究工作,將深入探討邊緣異構設備具有硬件加速功能條件下多設備協同推理問題,以及DNN 全連接層多設備協同推理問題。2.3 調度策略



3 實驗和評估

3.1 時間預測模型
3.2 卷積層劃分策略CBPS



3.3 調度策略
3.4 邊緣節點數量

4 結語