茍 英 李冀明 魏 星
1(重慶商務(wù)職業(yè)學(xué)院出版?zhèn)髅较?重慶 401331)2(重慶工程學(xué)院軟件學(xué)院 重慶 400056)3(重慶工程學(xué)院計(jì)算機(jī)學(xué)院 重慶 400056)
通過互連的對象和設(shè)備及其虛擬表示來擴(kuò)展當(dāng)前的互聯(lián)網(wǎng)已成為一種趨勢,物聯(lián)網(wǎng)(Internet of things, IoT)的貢獻(xiàn)在于通過事物之間的互連數(shù)量以及為了社會(huì)利益而將處理后的信息轉(zhuǎn)化為知識(shí)而創(chuàng)造的信息價(jià)值的增加。在IoT中,較大的數(shù)據(jù)量和較復(fù)雜的數(shù)據(jù)內(nèi)容使得傳統(tǒng)機(jī)器學(xué)習(xí)技術(shù)對于IoT數(shù)據(jù)的處理存在一些缺點(diǎn),如大量的特征提取等,而深度學(xué)習(xí)只需將數(shù)據(jù)直接傳遞到網(wǎng)絡(luò),避免了大量特征處理過程。另外,深度學(xué)習(xí)可以針對不同問題自動(dòng)提取新特征,可以精確地學(xué)習(xí)多媒體信息的高級(jí)特征,提高處理多媒體信息的效率[4]。
深度學(xué)習(xí)就是堆疊多個(gè)層,即下一層的輸入是上一層的輸出,這樣能夠?qū)斎胄畔⑦M(jìn)行分級(jí)表達(dá)。深度學(xué)習(xí)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相同之處是:二者均采用分層結(jié)構(gòu),即輸入-隱藏-輸出網(wǎng)絡(luò)結(jié)構(gòu),同一層不相鄰節(jié)點(diǎn)沒有連接,跨層之間也沒有連接;不同之處是:傳統(tǒng)神經(jīng)網(wǎng)絡(luò)是人工選擇特征,并映射到值,訓(xùn)練較慢,較容易過擬合,參數(shù)不好調(diào)整,深度學(xué)習(xí)是網(wǎng)絡(luò)選擇特征,采用逐層訓(xùn)練機(jī)制,這就使得深度學(xué)習(xí)比神經(jīng)網(wǎng)絡(luò)更適合大量和復(fù)雜數(shù)據(jù)的處理。
深度學(xué)習(xí)作為一種大數(shù)據(jù)分析工具,已經(jīng)成為視覺識(shí)別、自然語言處理和生物信息學(xué)等許多信息學(xué)領(lǐng)域的重要處理方法[2-4]。目前已經(jīng)有深度學(xué)習(xí)在IoT的應(yīng)用,如深度學(xué)習(xí)根據(jù)智能電表收集的數(shù)據(jù)對家庭用電量進(jìn)行預(yù)測[5]、基于深度學(xué)習(xí)的物聯(lián)網(wǎng)灌溉系統(tǒng)等[6]。由于高效研究復(fù)雜數(shù)據(jù)的實(shí)用性,深度學(xué)習(xí)將在未來的IoT服務(wù)中發(fā)揮非常重要的作用[7]。
深度學(xué)習(xí)比傳統(tǒng)的機(jī)器學(xué)習(xí)方法花費(fèi)更少的時(shí)間來推理信息[8],在IoT中執(zhí)行深度學(xué)習(xí)提高了IoT的性能。文獻(xiàn)[9]提出一種基于物聯(lián)網(wǎng)深度學(xué)習(xí)的負(fù)載均衡方案,通過分析大量的用戶數(shù)據(jù)和網(wǎng)絡(luò)負(fù)載來測量網(wǎng)絡(luò)負(fù)載和處理結(jié)構(gòu)配置,并應(yīng)用深度信任網(wǎng)絡(luò)方法實(shí)現(xiàn)物聯(lián)網(wǎng)中的高效負(fù)載平衡。文獻(xiàn)[10] 提出了一種新的可穿戴物聯(lián)網(wǎng)設(shè)備的深度學(xué)習(xí)模型,提高了音頻識(shí)別任務(wù)的準(zhǔn)確性。
大多數(shù)現(xiàn)有的深度學(xué)習(xí)應(yīng)用仍然需要云輔助,文獻(xiàn)[11]中提出一個(gè)結(jié)合深度學(xué)習(xí)算法和Apache Spark進(jìn)行物聯(lián)網(wǎng)數(shù)據(jù)分析,推理階段在移動(dòng)設(shè)備上執(zhí)行,而Apache Spark部署在云服務(wù)器中以支持?jǐn)?shù)據(jù)培訓(xùn),這種雙層設(shè)計(jì)與邊緣計(jì)算非常相似,這表明可以從云端卸載處理任務(wù)。
由于數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)性能有限,集中式云計(jì)算結(jié)構(gòu)已經(jīng)不能處理和分析從IoT設(shè)備收集的大量數(shù)據(jù)[12]。邊緣計(jì)算能夠?qū)⒂?jì)算任務(wù)從集中式云卸載到IoT設(shè)備附近的邊緣,因此通過預(yù)處理過程傳輸?shù)臄?shù)據(jù)會(huì)極大地減少,這使得邊緣計(jì)算成為IoT服務(wù)的另一個(gè)重要技術(shù)[13-15]。深度學(xué)習(xí)模型中每個(gè)網(wǎng)絡(luò)層都可以快速縮小中間數(shù)據(jù)大小,直到找到足夠的特征,深度學(xué)習(xí)模型的多層次結(jié)構(gòu)使其適用于邊緣計(jì)算,因?yàn)榭梢栽谶吘壣闲遁d部分學(xué)習(xí)層,然后將縮減的中間數(shù)據(jù)傳輸?shù)郊惺皆品?wù)器。深度學(xué)習(xí)在邊緣計(jì)算中的另一個(gè)優(yōu)勢是中間數(shù)據(jù)傳輸中的隱私保護(hù)。
為了提高物聯(lián)網(wǎng)深度學(xué)習(xí)模型的性能,本文將物聯(lián)網(wǎng)的深度學(xué)習(xí)引入到邊緣計(jì)算環(huán)境中,以提高學(xué)習(xí)性能并減少網(wǎng)絡(luò)流量。制定了與不同的深度學(xué)習(xí)模型兼容的彈性模型,由于不同的深度學(xué)習(xí)模型的中間數(shù)據(jù)量和預(yù)處理開銷不同,本文提出了一個(gè)調(diào)度問題,在邊緣節(jié)點(diǎn)的有限網(wǎng)絡(luò)帶寬和服務(wù)能力下最大化深度學(xué)習(xí)任務(wù)的數(shù)量。為了在調(diào)度中保證每個(gè)物聯(lián)網(wǎng)的深度學(xué)習(xí)服務(wù)的服務(wù)質(zhì)量(QoS),設(shè)計(jì)離線和在線調(diào)度算法來解決這個(gè)問題。實(shí)驗(yàn)結(jié)果表明,本文解決方案優(yōu)于其他優(yōu)化方法。
物聯(lián)網(wǎng)設(shè)備會(huì)生成大量數(shù)據(jù)并將數(shù)據(jù)傳輸?shù)皆贫艘怨┻M(jìn)一步處理,這些數(shù)據(jù)包括多媒體信息,如視頻、圖像和聲音,或結(jié)構(gòu)化數(shù)據(jù),如溫度、振動(dòng)和光通量信息。有許多成熟的技術(shù)用于處理結(jié)構(gòu)化數(shù)據(jù),然后自動(dòng)控制物聯(lián)網(wǎng)設(shè)備。傳統(tǒng)的多媒體處理技術(shù)需要復(fù)雜的計(jì)算,不適用于物聯(lián)網(wǎng)服務(wù),由于深度學(xué)習(xí)技術(shù)提高了多媒體信息處理的效率,越來越多的作品開始將深度學(xué)習(xí)引入多媒體IoT服務(wù)。
視頻傳感是一項(xiàng)重要的物聯(lián)網(wǎng)應(yīng)用,它在物聯(lián)網(wǎng)網(wǎng)絡(luò)中集成了圖像處理和計(jì)算機(jī)視覺,識(shí)別來自物聯(lián)網(wǎng)設(shè)備記錄的低質(zhì)量視頻數(shù)據(jù)的對象仍然是一項(xiàng)挑戰(zhàn)。由于深度學(xué)習(xí)在視頻識(shí)別中準(zhǔn)確性較高,因此認(rèn)為它是具有深度學(xué)習(xí)的典型物聯(lián)網(wǎng)應(yīng)用。
深度學(xué)習(xí)提高了物聯(lián)網(wǎng)服務(wù)的多媒體處理效率,因?yàn)樘卣魇怯啥鄬犹崛〉?,而不是傳統(tǒng)的復(fù)雜預(yù)處理,然而,通信性能將是提高處理效率的瓶頸。所收集的多媒體數(shù)據(jù)大小遠(yuǎn)遠(yuǎn)大于傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)大小,因此網(wǎng)絡(luò)將收集到的數(shù)據(jù)從IoT設(shè)備傳輸?shù)皆品?wù)的性能很難得到提高。
邊緣計(jì)算是將收集的數(shù)據(jù)從物聯(lián)網(wǎng)設(shè)備傳輸?shù)皆品?wù)一種解決方案,物聯(lián)網(wǎng)包含邊緣層和云層,用于連接物聯(lián)網(wǎng)設(shè)備和云服務(wù)。邊緣層通常由物聯(lián)網(wǎng)設(shè)備、物聯(lián)網(wǎng)網(wǎng)關(guān)和局域網(wǎng)中的網(wǎng)絡(luò)接入點(diǎn)組成;云層包括互聯(lián)網(wǎng)連接和云服務(wù)器。邊緣計(jì)算的處理在邊緣層中執(zhí)行,在邊緣計(jì)算環(huán)境中,由于只有中間數(shù)據(jù)或結(jié)果需要從設(shè)備傳輸?shù)皆品?wù),因此減少了傳輸數(shù)據(jù)和減輕了網(wǎng)絡(luò)壓力。
邊緣計(jì)算非常適合于中間數(shù)據(jù)小于輸入數(shù)據(jù)的任務(wù)。因此,邊緣計(jì)算對于深層學(xué)習(xí)任務(wù)是有效的,因?yàn)樵谏顚訉W(xué)習(xí)網(wǎng)絡(luò)層中,提取的特征大小被濾波器減少。圖1給出了本文提出的物聯(lián)網(wǎng)深度學(xué)習(xí)任務(wù)的邊緣計(jì)算結(jié)構(gòu),該結(jié)構(gòu)由云層與邊緣層以及典型的邊緣計(jì)算結(jié)構(gòu)組成。
圖1 物聯(lián)網(wǎng)深度學(xué)習(xí)的邊緣計(jì)算結(jié)構(gòu)
在邊緣層中,邊緣服務(wù)器部署在IoT網(wǎng)關(guān)中,用于處理收集的數(shù)據(jù)。首先在云服務(wù)器上訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò),在訓(xùn)練之后,將學(xué)習(xí)網(wǎng)絡(luò)分為兩部分,一部分靠近輸入數(shù)據(jù)的較低層,而另一部分靠近輸出數(shù)據(jù)的較高層。將具有較低層的部分部署到邊緣服務(wù)器中,將具有較高層的部分部署到云中用于卸載處理。因此,收集的數(shù)據(jù)被輸入到邊緣服務(wù)器中的第一層,邊緣服務(wù)器從較低層加載中間數(shù)據(jù),然后將數(shù)據(jù)作為較高層的輸入數(shù)據(jù)傳輸?shù)皆品?wù)器。
由較高層生成的中間數(shù)據(jù)小于由較低層生成的中間數(shù)據(jù),將更多層部署到邊緣服務(wù)器可以減少更多網(wǎng)絡(luò)流量。但是,與云服務(wù)器相比,邊緣服務(wù)器的服務(wù)器容量有限,在邊緣服務(wù)器中處理無限任務(wù)是不可能的。深度學(xué)習(xí)網(wǎng)絡(luò)中的每一層都會(huì)給服務(wù)器帶來額外的計(jì)算開銷,因此,只能將部分深度學(xué)習(xí)網(wǎng)絡(luò)部署到邊緣服務(wù)器中。同時(shí),由于不同的深度學(xué)習(xí)網(wǎng)絡(luò)和任務(wù)具有不同大小的中間數(shù)據(jù)和計(jì)算開銷,在邊緣計(jì)算結(jié)構(gòu)中需要有效的調(diào)度來優(yōu)化物聯(lián)網(wǎng)的深度學(xué)習(xí)。針對這一問題,本文設(shè)計(jì)了一種有效的調(diào)度策略,并在下一節(jié)中進(jìn)行了闡述。
物聯(lián)網(wǎng)深度學(xué)習(xí)的邊緣計(jì)算結(jié)構(gòu)中深度學(xué)習(xí)網(wǎng)絡(luò)使用的是深度自編碼器,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 深度自編碼器網(wǎng)絡(luò)結(jié)構(gòu)
對于輸入向量x被編碼為長度為低維特征向量a,然后被重構(gòu)為近似于x的向量y,則在深度自編碼器中,較低的維度a可以表示為:
a=f(∑Wx+b)
(1)
式中:f(·)是輸入映射函數(shù),本文采用sigmoid函數(shù),W是權(quán)重向量,b是偏置向量。
首先闡述物聯(lián)網(wǎng)深度學(xué)習(xí)的邊緣計(jì)算結(jié)構(gòu)中的調(diào)度問題,然后提出解決方案。在給定的邊緣計(jì)算環(huán)境中,使用集合E來表示所有邊緣服務(wù)器,ei表示集合E中的邊緣服務(wù)器。從邊緣服務(wù)器ei到云服務(wù)器,使用值ci表示服務(wù)容量,bi表示網(wǎng)絡(luò)帶寬。由于邊緣服務(wù)器和云服務(wù)器之間存在一些交互流量,還添加了閾值V用以避免網(wǎng)絡(luò)擁塞。因此,邊緣服務(wù)器ei和云服務(wù)器之間的最大可用帶寬由bi·V表示。
移動(dòng)節(jié)點(diǎn)i在每個(gè)時(shí)間段t中生成ki(t)比特的調(diào)度任務(wù),對于IoT中i在t時(shí)的調(diào)度任務(wù)量定義為Ti(t),其在下一個(gè)時(shí)間段的更新規(guī)則可表示為:
Ti(t+1)=Ti(t)+ki(t)-ui(t)-vi(t)
(2)
式中:ui(t)表示本地任務(wù)執(zhí)行量,vi(t)表示卸載任務(wù)量。
tj表示深度學(xué)習(xí)任務(wù),任務(wù)t′j的深度學(xué)習(xí)網(wǎng)絡(luò)層數(shù)為Nj。假設(shè)減少的數(shù)據(jù)大小接近具有不同輸入數(shù)據(jù)的每個(gè)任務(wù)的平均值。由第k層生成的中間數(shù)據(jù)大小(k∈[1,Nj])與總輸入數(shù)據(jù)大小的平均比率由rkj表示。對于任務(wù)tj和邊緣服務(wù)器ei,被分配的帶寬由bij表示。令dij表示邊緣服務(wù)器ei中任務(wù)tj的每時(shí)間單位的輸入數(shù)據(jù)大小。如果任務(wù)tj的k個(gè)層放置在邊緣服務(wù)器中,則邊緣服務(wù)器ei中的任務(wù)tj的傳送等待時(shí)間可以被表示為dij·rkj/bij。為保證QoS,傳輸延遲應(yīng)小于Qj所表示的最大值。對于任務(wù)tj,第k層之后的輸入數(shù)據(jù)單元的計(jì)算開銷用Ikj表示。因此,對于任務(wù)tj,計(jì)算機(jī)在邊緣服務(wù)器ei中的開銷是Ikj·dij。
計(jì)算中調(diào)度IoT深度學(xué)習(xí)網(wǎng)絡(luò)層的問題:給定邊緣計(jì)算結(jié)構(gòu),調(diào)度問題試圖通過在IOT邊緣服務(wù)器中部署深度學(xué)習(xí)層來分配邊緣計(jì)算結(jié)構(gòu)中的最大任務(wù),使得所需的傳輸延遲每個(gè)任務(wù)都可以保證,如下式所示:
(3)
如果任務(wù)tj部署在邊緣服務(wù)器ei中,則Xij=1;否則,Xij=0。
Φ(cijm)←(Bmin·e/Bmax)cijm·(Bmax·e)
(4)
式中:邊緣服務(wù)器eijm的剩余服務(wù)容量是cijm。如果:
(bijm-dijmj·rijmj/Qj)·(cijm-dijmj·Iijmj)≤Φ(cijm)
(5)
并且其他邊緣服務(wù)器有足夠的帶寬和服務(wù)容量,則調(diào)度算法將任務(wù)tj部署到邊緣服務(wù)器。在線算法的近似比為:
在本文實(shí)驗(yàn)中有兩個(gè)實(shí)驗(yàn)環(huán)境,一個(gè)用于收集深度學(xué)習(xí)任務(wù)的數(shù)據(jù),另一個(gè)用于仿真。使用配備為Intel Core i7 7770 CPU和NVIDIA Geforce GTX 1080顯卡的工作站執(zhí)行深度學(xué)習(xí)應(yīng)用程序。實(shí)驗(yàn)定義了10個(gè)不同的深度自編碼器網(wǎng)絡(luò),執(zhí)行10個(gè)深度自編碼器任務(wù)使用不同的網(wǎng)絡(luò)并記錄每個(gè)層中生成的操作和中間數(shù)據(jù)的數(shù)量。圖3給出了深度網(wǎng)絡(luò)的計(jì)算開銷和減少數(shù)據(jù)大小比率指標(biāo),深度學(xué)習(xí)網(wǎng)絡(luò)有五個(gè)層次和不同的神經(jīng)元設(shè)置。
圖3 深度學(xué)習(xí)網(wǎng)絡(luò)中的減少數(shù)據(jù)和計(jì)算開銷
從圖中可以看出,輸入數(shù)據(jù)可以通過深度學(xué)習(xí)網(wǎng)絡(luò)來減少,更多的中間數(shù)據(jù)可以通過較低層來減少,計(jì)算開銷隨著層數(shù)的增加而迅速增加。
使用Python 2.7和networkx開發(fā)模擬器,在模擬中,將深度學(xué)習(xí)任務(wù)的數(shù)量設(shè)置為1 000。根據(jù)NVIDIA Tegra K1,每臺(tái)邊緣服務(wù)器的服務(wù)能力設(shè)置為290 Gflops,將網(wǎng)絡(luò)中的邊緣服務(wù)器數(shù)量從20增加到90。每個(gè)任務(wù)的輸入數(shù)據(jù)大小設(shè)置為從100 KB至1 MB,所有深度網(wǎng)絡(luò)的層數(shù)設(shè)置為5到10。每個(gè)邊緣服務(wù)器的帶寬均勻分布在10 Mbit/s到1 Mbit/s之間,所需的延遲時(shí)間為0.2 s。
將本文在線調(diào)度算法的性能與兩種流行的在線調(diào)度算法:先入先出(FIFO)和低帶寬優(yōu)先部署(LBF)進(jìn)行比較。向邊緣網(wǎng)絡(luò)輸入1 000個(gè)任務(wù)的隨機(jī)序列,這兩種算法將任務(wù)部署到邊緣服務(wù)器中,邊緣服務(wù)器的數(shù)量設(shè)置為50。圖4給出了本文在線方法與其他兩種方法的性能比較。
圖4 使用不同算法的部署任務(wù)的數(shù)量
如圖4所示,F(xiàn)IFO算法對每個(gè)任務(wù)進(jìn)行部署,直到?jīng)]有足夠的能力和帶寬,因此,在部署360個(gè)任務(wù)之后,F(xiàn)IFO算法會(huì)彈出第一個(gè)部署的任務(wù),用于附加以后的任務(wù),部署的任務(wù)數(shù)量隨著輸入任務(wù)的增加不再增加,或者減少。當(dāng)容量和帶寬不足時(shí),LBF與FIFO類似,部署任務(wù)數(shù)不再隨著輸入任務(wù)數(shù)的增加而增加了,當(dāng)沒有空間部署以后的任務(wù)時(shí),LBF將刪除具有最大帶寬要求的任務(wù)。本文的在線算法決定是否將以后的任務(wù)部署到邊緣服務(wù)器中,當(dāng)輸入任務(wù)的數(shù)量接近600時(shí),在線算法比FIFO和LBF能夠部署更多的任務(wù)。因此,當(dāng)容量和帶寬不足時(shí),本文在線卸載調(diào)度算法部署的任務(wù)數(shù)量會(huì)隨著輸入任務(wù)的增加,且優(yōu)于FIFO和LBF算法。
本文將物聯(lián)網(wǎng)的深度學(xué)習(xí)引入到邊緣計(jì)算環(huán)境中,以優(yōu)化網(wǎng)絡(luò)性能并保護(hù)上傳數(shù)據(jù)時(shí)的用戶隱私。邊緣計(jì)算結(jié)構(gòu)使得邊緣節(jié)點(diǎn)減少了上傳數(shù)據(jù)的中間數(shù)據(jù),減少了從物聯(lián)網(wǎng)設(shè)備到云服務(wù)器的網(wǎng)絡(luò)流量。針對邊緣節(jié)點(diǎn)的有限服務(wù)能力,提出卸載調(diào)度算法來最大化邊緣計(jì)算環(huán)境中的任務(wù)數(shù)量。實(shí)驗(yàn)結(jié)果表明,本文邊緣計(jì)算的物聯(lián)網(wǎng)深度學(xué)習(xí)應(yīng)用及卸載調(diào)度算法可以在保證QoS要求的情況下增加邊緣服務(wù)器中部署的任務(wù)數(shù)量。未來將利用本文算法在真實(shí)世界的邊緣計(jì)算環(huán)境中部署深度學(xué)習(xí)應(yīng)用。