陳明浩,陳慶奎
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
近幾年物聯(lián)網(wǎng)的發(fā)展,數(shù)以百千萬個邊緣節(jié)點通過無數(shù)網(wǎng)絡(luò)節(jié)點鏈接在一起進行數(shù)據(jù)交互、分析,同時越來越多的節(jié)點設(shè)備也在通過物聯(lián)網(wǎng)方式不斷加入,邊緣設(shè)備的智能化已經(jīng)大勢所趨[1]。由于邊緣節(jié)點自身硬件資源限制,往往需要通過遠程的云計算資源為用戶提供相關(guān)服務(wù),云端服務(wù)器仍承擔(dān)著巨大的計算負載[2]。因此在邊緣節(jié)點上搭載神經(jīng)網(wǎng)絡(luò)成為新的趨勢。但由于節(jié)點設(shè)備自身硬件性能與網(wǎng)絡(luò)通信環(huán)境的限制,目前難以全部實現(xiàn)[3]。
為了解決低性能邊緣節(jié)點難以搭載神經(jīng)網(wǎng)絡(luò)的問題,本文提出通過改進Roofline模型對通信環(huán)境、邊緣設(shè)備與神經(jīng)網(wǎng)絡(luò)參數(shù)三者進行動態(tài)評估,并根據(jù)評估指標對不同的神經(jīng)網(wǎng)絡(luò)計算任務(wù)進行動態(tài)適應(yīng)性劃分方法,使得邊緣節(jié)點與服務(wù)器節(jié)點能夠共同完成神經(jīng)網(wǎng)絡(luò)計算任務(wù)。實驗結(jié)果表明,對計算任務(wù)的適應(yīng)性分配,能夠避免邊緣節(jié)點計算資源的浪費,降低服務(wù)器節(jié)點的通信與計算開銷。該方法克服了邊緣節(jié)點的硬件條件限制,將邊緣設(shè)備與神經(jīng)網(wǎng)絡(luò)進行有效結(jié)合,表現(xiàn)出優(yōu)良效果。
目前將神經(jīng)網(wǎng)絡(luò)計算與邊緣設(shè)備節(jié)點相結(jié)合主要分為兩種方式:①運用客戶端/服務(wù)器架構(gòu)模式(C/S模式);②對網(wǎng)絡(luò)模型進行優(yōu)化。
傳統(tǒng)的C/S架構(gòu)模式,是指通過邊緣節(jié)點獲取數(shù)據(jù)信息,將采集的信息傳輸至中心服務(wù)器,服務(wù)器結(jié)合神經(jīng)網(wǎng)絡(luò)進行數(shù)據(jù)處理分析。該模式保證了計算結(jié)果的高精度性,并避免了邊緣設(shè)備終端的自身硬件性能的限制。但C/S架構(gòu)模式面臨著的巨大通信開銷,以及服務(wù)器資源分配調(diào)度等問題。文獻[4]提出通過對于通信數(shù)據(jù)進行壓縮,優(yōu)化傳輸功耗實現(xiàn)了通信時間延遲以及邊緣節(jié)點的物理損耗。文獻[5]結(jié)合了邊緣設(shè)備任務(wù)優(yōu)先級,設(shè)備運算性能,任務(wù)完成時間等條件,自適應(yīng)調(diào)用Max-Min與Min-min算法進行任務(wù)分配。但邊緣設(shè)備節(jié)點不斷增多,中心服務(wù)器仍面臨著巨大的負載壓力。
優(yōu)化網(wǎng)絡(luò)模型,則主要分兩種情況。第一種情況,若邊緣設(shè)備硬件條件良好,則對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型進行參數(shù)壓縮從而達到模型優(yōu)化。文獻[6]通過在保證網(wǎng)絡(luò)結(jié)構(gòu)的前提下進行網(wǎng)絡(luò)修剪,去除不重要的網(wǎng)絡(luò)連接,減少模型冗余,達到降低模型復(fù)雜度的目的。文獻[7]基于遷移卷積濾波器的方式設(shè)計新型結(jié)構(gòu)卷積濾波器,縮小計算規(guī)模。文獻[8]指出借助復(fù)雜的神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果訓(xùn)練新型網(wǎng)絡(luò),從而減少計算開銷,優(yōu)化網(wǎng)絡(luò)模型。第二種情況,若邊緣設(shè)備自身硬件性能較為低下,難以支撐傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,則選擇搭載輕量化網(wǎng)絡(luò)模型。輕量化模型主要通過改變自身網(wǎng)絡(luò)結(jié)構(gòu),減少參數(shù)量,從而減少存儲空間的占用,降低計算開銷。輕量化模型主要包括:①基于流線型架構(gòu),使用分離卷積核,深度可分離卷積的MobileNet[9];②借鑒ResNet[10]分組卷積,采用各點卷積的ShuffleNet;③采用個點卷積,并利用Squeeze layer限制通道數(shù)的SqueezeNet[11]等。神經(jīng)網(wǎng)絡(luò)模型的輕量化,讓越來越多節(jié)點設(shè)備能夠成功搭載神經(jīng)網(wǎng)絡(luò),使之得到充分的利用。但模型的壓縮與輕量化難以保證運算結(jié)果精度的準確性,目前生活中仍有大部分邊緣節(jié)點設(shè)備無法支持輕量化模型的計算。
為了使邊緣計算節(jié)點進行神經(jīng)網(wǎng)絡(luò)計算,同時避免上述兩種方式的現(xiàn)有問題。本文提出了一種創(chuàng)新性地解決方案,在確保計算結(jié)果準確性的同時減輕服務(wù)器原計算負載與傳輸延遲,即對深度神經(jīng)網(wǎng)絡(luò)模型進行可分離式拆分。根據(jù)不同節(jié)點設(shè)備的網(wǎng)絡(luò)環(huán)境與硬件性能瓶頸,動態(tài)分配計算任務(wù),其它部分計算任務(wù)則通過網(wǎng)絡(luò)傳輸由中心服務(wù)器進行完成。從而充分利用大批移動設(shè)備的空閑計算力,使邊緣設(shè)備得到利用,同時降低傳輸延遲,減輕服務(wù)器的負載壓力。
本文對Roofline模型進行改進,選取神經(jīng)網(wǎng)絡(luò)模型作為分析對象。結(jié)合節(jié)點設(shè)備自身性能以及網(wǎng)絡(luò)環(huán)境,分析設(shè)備在網(wǎng)絡(luò)計算過程中產(chǎn)生的計算與通信開銷,進行動態(tài)計算任務(wù)分配。
神經(jīng)網(wǎng)絡(luò)模型與節(jié)點設(shè)備需要相互“配合”,才能發(fā)揮各自的性能優(yōu)勢。因此不僅需要對節(jié)點設(shè)備進行分析,還需要對網(wǎng)絡(luò)模型進行性能評估。伯克利大學(xué)并行計算實驗室的Williams和Patterson提出了Roofline模型,該模型可將復(fù)雜的性能問題進行可視化描述從而進行相關(guān)的性能評估[12]。Roofline模型指出計算設(shè)備的性能指標主要有兩點:①每秒浮點運算最大次數(shù)π(單位FLOP/s),指的是系統(tǒng)每秒內(nèi)所執(zhí)行的最大浮點運算次數(shù)。②內(nèi)存帶寬上限M(單位 Byte/s),指的是系統(tǒng)每秒可進行內(nèi)存交換的字節(jié)數(shù)最大值[13]。模型同時提供了評估網(wǎng)絡(luò)模型性能的指標:①計算量O(單位FLOAPS)指模型進行一次完整的輸入計算所產(chǎn)生浮點計算總數(shù)。②內(nèi)存訪問量T(單位 Bytes) 指模型進行一次完整的輸入計算能夠達到最高的內(nèi)存交換量,亦稱作空間復(fù)雜度。③計算密度I(單位 FLOP/Byte):指模型的計算量與內(nèi)存訪問量的比值,計算方式如式(1)所示
(1)
2.1.1 Roofline模型
提出Roofline模型的目的是為了能夠創(chuàng)建適用于共享內(nèi)核系統(tǒng)的可視化模型。發(fā)展至今,該模型已被廣泛用來評估設(shè)備系統(tǒng)性能[14]。它表達出設(shè)備的內(nèi)存帶寬與設(shè)備最佳性能之間的關(guān)系,節(jié)點設(shè)備實際可達到的最大浮點計算量F的計算方法如式(2)所示
(2)
當計算密度小于某一閾值Imax時,節(jié)點可達到的最大計算性能,受自身內(nèi)存帶寬上限控制。當計算密度大于閾值Imax時,可達到的計算性能取決于系統(tǒng)的最大浮點計算性能上限π,其關(guān)系如圖1所示。

圖1 Roofline模型構(gòu)
2.1.2 Roofline模型的擴展
由于原始Roofline模型一般研究的對象為單機平臺理論評估,并沒有考慮到節(jié)點設(shè)備在實際應(yīng)用中與外部機器進行數(shù)據(jù)通信占用系統(tǒng)性能的情況。為了評估因數(shù)據(jù)通信產(chǎn)生的影響,本文對傳統(tǒng)Roofline模型進行改進,引用新的參數(shù)指標:①數(shù)據(jù)通信帶寬Mc(單位BPS),指設(shè)備進行數(shù)據(jù)通信時單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量。②網(wǎng)絡(luò)傳輸字節(jié)數(shù)N(單位Byte),指設(shè)備進行一次數(shù)據(jù)網(wǎng)絡(luò)通信傳輸?shù)淖止?jié)數(shù)。③通信計算密度Ic(單位 FLOP/Byte)指設(shè)備在單次網(wǎng)絡(luò)通信中設(shè)備總計算量與通信字節(jié)數(shù)的比值,其計算方式如式(3)所示
(3)
節(jié)點設(shè)備在進行數(shù)據(jù)通信時,可達到的最大計算性能F計算公式如式(4)所示
(4)
由式(4)可看出,當系統(tǒng)應(yīng)用的通信計算密度小于特定閾值Icmax時,系統(tǒng)的達到的最大計算性能由通信帶寬主導(dǎo)。當通信計算密度大于閾值Icmax時,可達到的最大計算性能受限于該系統(tǒng)的浮點計算性能上限π。在原始Roofline模型基礎(chǔ)上進行改進,通過將通信計算密度與數(shù)據(jù)通信帶寬替換原始模型中的平臺計算密度與存儲器帶寬可以得到新Roofline模型如圖2所示。

圖2 新Roofline模型
2.2.1 計算分析
本文選取卷積神經(jīng)網(wǎng)絡(luò)作為分析對象,卷積神經(jīng)網(wǎng)絡(luò)主要包括卷積層、線性整流層、池化層、損失函數(shù)層[15]。不同神經(jīng)網(wǎng)絡(luò)模型之間結(jié)構(gòu)的主要區(qū)別在于計算層的數(shù)量以及排序不同。卷積層是卷積神經(jīng)網(wǎng)絡(luò)最重要的一環(huán),并且它數(shù)據(jù)計算量占據(jù)了整個網(wǎng)絡(luò)計算量的絕大部份,因此以卷積層為例并進行著重分析,其它層的計算方法與卷積層計算方法類似將不詳細介紹。卷積層的結(jié)構(gòu)如圖3所示。

圖3 卷積層解析
從圖3中可看出,卷積層的輸入?yún)?shù):Hn為輸入的高度,Wn為輸入的寬度,常規(guī)計算中有Hn=Wn,Dn為輸入的深度。卷積核的計算參數(shù)包括:Fh為卷積核的高度,F(xiàn)w為卷積核的寬度,常規(guī)計算中Fh=Fw,F(xiàn)d為卷積核的深度,默認卷積核深度與輸入核深度相同,卷積核個數(shù)為N。單層卷積的輸入?yún)?shù)量Tn如式(5)[16]所示
Tn=Hn*Wn*Dn
(5)
卷積核的總參數(shù)量Fn如式(6)所示
Fn=Fd*Fh*Fw*Fd*N
(6)
單層卷積總計算開銷公式Cn如式(7)所示
Cn=Hn*Wn*Fh*Fw*Fd*N
(7)
單層卷積產(chǎn)生的內(nèi)存訪問開銷Mn滿足式(8)
(8)
卷積神經(jīng)網(wǎng)絡(luò)完成一次前向傳播總計算量Ctotal,總內(nèi)存訪問量Mtotal滿足式(9)、式(10)
(9)
(10)
2.2.2 通信分析
為了簡化模型,我們不考慮內(nèi)存之間,或網(wǎng)絡(luò)波動產(chǎn)生的延遲。為了確定計算中的動態(tài)參數(shù)值,編寫一個簡易的“彈球準則”腳本來進行對網(wǎng)絡(luò)通信帶寬的測量[17]。在測試中,節(jié)點設(shè)備發(fā)送指定固定大小的通訊消息至中心服務(wù)器,服務(wù)器收到消息后回復(fù)同樣大小的消息。節(jié)點設(shè)備通過計時器獲取從發(fā)送消息到接收回復(fù)消息的時間T,消息字節(jié)大小為S,通信帶寬為Mc,其計算方法如式(11)所示
(11)
假定第N層卷積層為任務(wù)分割層,則需要在完成卷積操作后將該層的計算結(jié)果進行數(shù)據(jù)傳輸。則該傳輸數(shù)據(jù)量大小TDn如式(12)所示
(12)
其中,Hn+1為完成第N層卷積層的輸出數(shù)據(jù)尺寸,Dn+1為輸出數(shù)據(jù)的深度,其中4 Bytes為矩陣中單位值所占大小。
卷積神經(jīng)網(wǎng)絡(luò)模型完成一次完整的前向傳播計算傳輸?shù)目倲?shù)據(jù)量TDtotal滿足式(13)
(13)
數(shù)據(jù)通信效率更多依賴于網(wǎng)絡(luò)帶寬,若計算數(shù)據(jù)量較大時,數(shù)據(jù)通信往往更容易成為設(shè)備平臺的性能瓶頸。
2.2.3 模型綜合分析
為了能夠綜合性評估設(shè)備運行模型的性能,同時考慮節(jié)點設(shè)備的計算開銷與通信開銷。結(jié)合原始Roofline模型與新Roofline模型,構(gòu)建全新的三維模型,如圖4所示。借助新模型可以更明顯觀察出計算密度與通信計算密度對計算平臺浮點運算瓶頸產(chǎn)生的影響。新模型主要參數(shù)包括浮點計算量、存儲器帶寬、通信帶寬、計算密度、通信計算密度。

圖4 Roofline三維模型
從圖4中可看出在不同計算密度以及不同通信密度條件下,系統(tǒng)可達到的最大運算性能。X軸代表計算密度,Y軸代表通信計算密度,Z軸代表設(shè)備可達到的計算性能。系統(tǒng)進行一定卷積計算任務(wù)時,若通信計算密度固定不變,伴隨計算密度的提升,系統(tǒng)的運算性能隨之增加。同時,若計算密度不變,改變通信計算密度大小,系統(tǒng)的運算性能也將改變。如果當前應(yīng)用的計算密度很大時,整個平臺性能可達到的性能上限將受到通信密度的制約,此時對數(shù)據(jù)通信方面的優(yōu)化對平臺產(chǎn)生的影響遠比優(yōu)化計算密度產(chǎn)生的影響大的多。當計算密度與通信計算密度分別各自達到特定值時,計算平臺才能充分發(fā)揮其最大計算性能。
結(jié)合網(wǎng)絡(luò)模型的計算量分析、數(shù)據(jù)通信量分析以及系統(tǒng)自身性能參數(shù),可適應(yīng)性分配給計算設(shè)備相應(yīng)的計算任務(wù)。假定設(shè)備自動分配k層計算任務(wù),完成第n層卷積計算時可達到的浮點計算性能fn如式(14)所示,設(shè)備完成計算任務(wù)時間記為TCn。在獲取每層計算峰值性能后,可預(yù)估出設(shè)備完成各層計算任務(wù)的時間以及完成一次完整模型計算所需時間TCtotal如式(15)所示,從而進行任務(wù)分配,但設(shè)備信息或設(shè)備環(huán)境發(fā)生變化時將自動重新評估分析
fn=Min(π,M*I,Mc*Ic)
(14)
(15)
相比于傳統(tǒng)模式服務(wù)器運行全部計算任務(wù),利用設(shè)備節(jié)點計算大大減少了服務(wù)器的運行負載,內(nèi)存訪問以及運行時間。服務(wù)器減少的計算負載量CS如式(16)所示
(16)
服務(wù)器減少的內(nèi)存訪問量MS如式(17)所示
(17)
網(wǎng)絡(luò)數(shù)據(jù)通信減少的傳輸量TD如式(18)所示
(18)
2.2.4 系統(tǒng)運行分析
當邊緣設(shè)備接收到計算指令,結(jié)合自身硬件資源與當前網(wǎng)絡(luò)狀態(tài),借助Roofline三維模型進行性能評估,若當前性能足以支持完成對應(yīng)層計算任務(wù),則進行下一層,否則返回上一層,并以該層數(shù)作為任務(wù)劃分層。若網(wǎng)絡(luò)環(huán)境發(fā)生較大波動時則將重新進行性能評估與任務(wù)分配,以確保已分配任務(wù)的可執(zhí)行性。任務(wù)完成后,將分層信息與參數(shù)傳輸至服務(wù)器。
服務(wù)器接收到信息后進行下一步處理,若服務(wù)器為單節(jié)點模式架構(gòu),其余任務(wù)將直接由該節(jié)點進行完成。
若服務(wù)器為多節(jié)點分布式架構(gòu),則需先根據(jù)Roofline模型評估各個從節(jié)點的實際計算力并進行排序。每當主控制節(jié)點接收到計算指令后,將掃描各個從節(jié)點的工作狀態(tài),若從節(jié)點存在空閑節(jié)點則按照先前順序進行任務(wù)分配,若不存空閑節(jié)點則借助AP哈希算法進行任務(wù)調(diào)度分配,盡量使各個從節(jié)點均衡負載,避免某個服務(wù)器壓力過大情況的發(fā)生。
每當系統(tǒng)設(shè)備接收到計算指令,進行計算前,首先獲取系統(tǒng)相關(guān)參數(shù),測試網(wǎng)絡(luò)狀態(tài),并將設(shè)備閑置時間作為分配任務(wù)的時間上限Free_T,結(jié)合分析深度網(wǎng)絡(luò)模型,進行任務(wù)分層劃分[18]。具體的分配步驟如下:
(1)獲取當前狀態(tài)設(shè)備系統(tǒng),模型信息,并分析相關(guān)參數(shù),模型層數(shù)以及每層計算層的計算量與內(nèi)存訪問量;
(2)系統(tǒng)與服務(wù)器之間進行數(shù)據(jù)通信,獲取當前網(wǎng)絡(luò)實時帶寬;
(3)根據(jù)相關(guān)公式計算出系統(tǒng)計算以及通信計算密度,并確認當前狀態(tài)下系統(tǒng)在各層所計算時所能達到的最佳浮點性能(步驟(1)~步驟(3)參考算法1);
(4)根據(jù)每層的參數(shù)以及系統(tǒng)可達到的計算性能可得出每層消耗時間Ti;
(5)將每層的耗時累計,若到達N層時,耗時累計超過Free_T,則返回N-1層;
(6)將第N-1層作為界限進行任務(wù)劃分(步驟(4)~步驟(6)參考算法2);
(7)若下一次計算時,則返回步驟(1)重新進行任務(wù)劃分。
算法1: 計算與數(shù)據(jù)通信分析偽代碼:
Data calculation and communication analysis of equipment
Get the System.info.
Get the Layer.info.
Time_begin = sys_gettime();
While{
length = Recv(Client_socket, buffer, Data 0);
Send_num++;
Time_end = sys_gettime ();
Time[send_num] = (Time_end - Time_begin)/2;
Mc[send_num] = Data /Time[send_num];
If(send_num == 20):
Break;
Send(Client_socket, buffer, Data, 0);
}
I ← O_Pre/T; /* Operational intensity*/
Ic ← O_Pre/N; /*Communication arithmetic intensity*/
If (M*I>π) & (Mc*Ic>π):
F←π;
Else:
F←Min(M*I, Mc*Ic);
Return F
END
算法2:計算任務(wù)劃分偽代碼:
Data calculation and communication analysis of equipment
Get the System.info.
Get the Layer.info.
Get the equipment free time.
For N = 0→Layer:
LayerTime[n]← O_Pre/F;
If Sum(LayerTime)<=Free_T:
N++;
Else:
Break;
END
分布式服務(wù)器主控制節(jié)點收到新的計算請求,對本次任務(wù)進行分析,結(jié)合集群中可利用的計算資源,進行任務(wù)分配。具體計算步驟如下:
(1)服務(wù)器控制節(jié)點通過廣播,對所有服務(wù)器進行檢測,獲取可用的從節(jié)點資源集合List。每個從節(jié)點屬性涵括其GPU算力,最大帶寬,節(jié)點狀態(tài)等。如果List為空,則繼續(xù)步驟(1),否則進入下一步;
(2)為了能夠確定最優(yōu)分配方案,需先對List內(nèi)各個節(jié)點借助Roofline模型計算出實際計算能力,并依照結(jié)果進行排序(步驟(1)~步驟(2)參考算法3);
(3)接下來分情況討論,若存在多個空閑服務(wù)器節(jié)點,則依照排序?qū)⑷蝿?wù)分配給算力最高的節(jié)點。若只存在一個空閑服務(wù)器節(jié)點,則直接進行分配。若無處于空閑狀態(tài)的節(jié)點,則借助APHASH算法進行分配(參考算法4);
(4)配置執(zhí)行腳本開始執(zhí)行。
算法3:計算服務(wù)器節(jié)點實際計算力并排序:
Calculate computing power of the server node and sort
Get the Server.info.
Get the Layer.info.
I_Server←O_Other/T;
For(i=0;i M_Server ←List[i].[BandWith] If (M_ Server *I_ Server > π): List[i].[Computer]←π Else: List[i].[Computer]←M_ Server *I_ Server; QuickSort(List,left,right) Return List END 算法4:服務(wù)器節(jié)點任務(wù)分配: Task assignment of Server Node Get the Server.info. List_State = False If (List.length == 1): UseNode = List[0] Else: For(i=0;i If (List[i].state == Free): UseNode = List[i] List[i].[Computer]←π If (List_state == False): UseNode←APHash(List) Return UseNode END 本次實驗設(shè)備由中心服務(wù)器與邊緣節(jié)點設(shè)備構(gòu)成,因由實際條件限制,服務(wù)器采用的是單節(jié)點模式架構(gòu)。實驗設(shè)備信息如下:中心服務(wù)器GPU為GTX1080,8 G顯存;邊緣節(jié)點設(shè)備采用的是樹莓派3B型,其CPU采用的是四核1.2 GHz Broadcom BCM2837 64位處理器 1 G 內(nèi)存。實驗環(huán)境,樹莓派編譯環(huán)境采用的是Tensorflow 1.7,服務(wù)器采用的是Tensorflow 1.3,IDE工具為Anaconda-Navigator,本文采用LeNet-5以及OpenPose神經(jīng)網(wǎng)絡(luò)模型,通過改變?nèi)蝿?wù)計算量、網(wǎng)絡(luò)環(huán)境進行對比實驗分析。 為了防止模型計算任務(wù)過大從而導(dǎo)致系統(tǒng)宕機,首先對結(jié)構(gòu)簡單、計算量較少的LeNet-5進行分析,LeNet-5網(wǎng)絡(luò)具體參數(shù)見表1[19]。 表1 LeNet-5網(wǎng)絡(luò)具體參數(shù) 從表1可得出完成一次LeNet-5網(wǎng)絡(luò)前向傳播計算開銷約為13.88 MFLOPS,內(nèi)存訪問量約為13.45 MB,因此可計算出該網(wǎng)絡(luò)模型的計算密度約為1.03 FLOP/Byte,根據(jù)官方文檔所示,樹莓派3B型的內(nèi)存帶寬M為1 GB/s。π為24 GFLOPS從表2可得出系統(tǒng)進行數(shù)據(jù)傳輸速率基本不變,相對穩(wěn)定,限定傳輸速率平均在8 MB/S,系統(tǒng)數(shù)據(jù)通信密度約為38 FLOP/Byte,由此可見在本次LeNet-5計算過程中,系統(tǒng)性能受到雙條件約束:①計算任務(wù)的內(nèi)存限制;②系統(tǒng)通信帶寬限制,因此可提升計算任務(wù)工作量與復(fù)雜度,并對網(wǎng)絡(luò)通信環(huán)境進行改善。 實驗以200張圖片作為一個測試單位,計算完成后并以二進制文件進行數(shù)據(jù)傳輸。由于實驗網(wǎng)絡(luò)中采用的每一層計算輸入輸出矩陣尺寸基本不變,其數(shù)據(jù)量在輸入圖片尺寸相同的情況下相對固定,因此本次計算數(shù)據(jù)量的大小取決于設(shè)備本身采集圖片的清晰度大小。實驗完成相應(yīng)分層任務(wù)后進行數(shù)據(jù)通信的結(jié)果見表2。 表2 數(shù)據(jù)通信結(jié)果 通過實驗發(fā)現(xiàn),邊緣節(jié)點設(shè)備可以完成對于簡單網(wǎng)絡(luò)模型計算分層處理,于是我們通過在系統(tǒng)上運行OpenPose網(wǎng)絡(luò)進行分析[20,21]。因OpenPose網(wǎng)絡(luò)過于復(fù)雜,本實驗僅對模型前26層進行分析研究,OpenPose網(wǎng)絡(luò)具體參數(shù)見表3。 表3 OpenPose網(wǎng)絡(luò)具體參數(shù) 從表2可得出完成一次OpenPose網(wǎng)絡(luò)前向傳播計算開銷約為31 GFLOPS,內(nèi)存訪問量約為191.4 MB,因此可計算出該網(wǎng)絡(luò)模型的計算密度約為163 FLOP/Byte。π為24 GFLOPS從表2可得出系統(tǒng)進行數(shù)據(jù)傳輸速率基本不變,相對穩(wěn)定,由于網(wǎng)絡(luò)環(huán)境限制,傳輸帶寬最高保持在速率25.5 MB/S,系統(tǒng)數(shù)據(jù)通信密度約為166 FLOP/Byte,由此可見在本次OpenPose計算過程中,系統(tǒng)的計算性能受通信帶寬限制,提高網(wǎng)絡(luò)帶寬是當前提高系統(tǒng)性能的有效辦法。以單張圖像為例,不同分割層完成計算后進行數(shù)據(jù)通信傳輸時間如圖5所示。 從圖5中可看出,伴隨劃分層數(shù)的深入,節(jié)點設(shè)備的通信傳輸時間不斷減少,最多甚至可減少90%以上。對于設(shè)備系統(tǒng)來說減少了系統(tǒng)通信開銷,釋放了更多的系統(tǒng)資源。單個節(jié)點通信時間減少產(chǎn)生的影響并不顯著,但若應(yīng)用到大規(guī)模節(jié)點設(shè)備中并采用分布式服務(wù)器架構(gòu),則將大幅度降低網(wǎng)絡(luò)通信負載。 圖5 通信時間 通過將系統(tǒng)置于不同網(wǎng)絡(luò)環(huán)境下并搭載不同神經(jīng)網(wǎng)絡(luò)模型進行實驗,可分析出網(wǎng)絡(luò)環(huán)境質(zhì)量的好壞以及任務(wù)計算量的大小對于系統(tǒng)性能造成的影響。 系統(tǒng)搭載LeNet-5模型時,在進行不同計算層劃分時系統(tǒng)實時性能如圖6所示。 圖6 系統(tǒng)運行LeNet-5性能 搭載OpenPose模型時,在不同層進行切分時系統(tǒng)達到的實時性能如圖7所示。 圖7 系統(tǒng)運行OpenPose性能 結(jié)合圖6、圖7可看出,在不同的計算任務(wù)下,節(jié)點設(shè)備性能表現(xiàn)截然不同,若在網(wǎng)絡(luò)環(huán)境良好狀況下,計算任務(wù)的計算量越高,則系統(tǒng)內(nèi)存訪問量越高,節(jié)點實時性能隨之提升,直至達到峰值。因此,邊緣節(jié)點設(shè)備則可結(jié)合當前網(wǎng)絡(luò)通信環(huán)境,以及自身可達到的性能峰值對計算任務(wù)進行動態(tài)劃分。 若在網(wǎng)絡(luò)環(huán)境較差的情況下,任務(wù)的高數(shù)據(jù)計算量已經(jīng)無法提升系統(tǒng)的性能瓶頸,因此節(jié)點設(shè)備將自適應(yīng)地選擇數(shù)據(jù)傳輸量相對較少的計算層進行分離。若邊緣設(shè)備出現(xiàn)無法連接網(wǎng)絡(luò)情況,則自動停止分配計算。 設(shè)備根據(jù)自身硬件性能與不斷變化的網(wǎng)絡(luò)環(huán)境,動態(tài)分配邊緣節(jié)點計算任務(wù),有效減輕服務(wù)器負擔(dān)。以搭載OpenPose模型實驗為例,設(shè)備搭模型,伴隨網(wǎng)絡(luò)模型分離的深入,服務(wù)器的負載逐漸降低,更多的時間、空間資源得到釋放。系統(tǒng)設(shè)備分配到的計算層數(shù)越多,服務(wù)器的所需承受壓力越少。實驗中服務(wù)器GPU負載減少量具體情況如圖8所示。 圖8 服務(wù)器負載減少量 本文對傳統(tǒng)的邊緣節(jié)點計算模式進行改進,不再將全部的計算任務(wù)交付服務(wù)器進行計算,從而避免邊緣設(shè)備的計算資源與網(wǎng)絡(luò)通信的浪費。通過使用全新的方法,基于邊緣設(shè)備系統(tǒng)性能以及設(shè)備網(wǎng)絡(luò)環(huán)境對神經(jīng)網(wǎng)絡(luò)模型進行合理的動態(tài)分離,充分利用了設(shè)備系統(tǒng)的閑置性能,減輕了服務(wù)器的負載壓力,提高了整個網(wǎng)絡(luò)系統(tǒng)的兼容性與計算通信性能。本文以卷積神經(jīng)網(wǎng)絡(luò)為例,通過對性能評估模型的改進對設(shè)備系統(tǒng)、通信環(huán)境和計算任務(wù)進行定量評估。同時此模型通用適合其它情境下的計算分析,具有一定的實際通用性。 在接下來的工作中,仍需要對整個系統(tǒng)的運行進行監(jiān)測,同時考慮系統(tǒng)自身物理損耗造成的性能影響并進行算法改進,以便有效改善應(yīng)用系統(tǒng),進行更為準確的評估分析。3 實驗分析
3.1 LeNet-5結(jié)果及分析


3.2 OpenPose結(jié)果及分析


3.3 綜合對比研究



4 結(jié)束語