茍 英 李冀明 魏 星
1(重慶商務職業學院出版傳媒系 重慶 401331)2(重慶工程學院軟件學院 重慶 400056)3(重慶工程學院計算機學院 重慶 400056)
通過互連的對象和設備及其虛擬表示來擴展當前的互聯網已成為一種趨勢,物聯網(Internet of things, IoT)的貢獻在于通過事物之間的互連數量以及為了社會利益而將處理后的信息轉化為知識而創造的信息價值的增加。在IoT中,較大的數據量和較復雜的數據內容使得傳統機器學習技術對于IoT數據的處理存在一些缺點,如大量的特征提取等,而深度學習只需將數據直接傳遞到網絡,避免了大量特征處理過程。另外,深度學習可以針對不同問題自動提取新特征,可以精確地學習多媒體信息的高級特征,提高處理多媒體信息的效率[4]。
深度學習就是堆疊多個層,即下一層的輸入是上一層的輸出,這樣能夠對輸入信息進行分級表達。深度學習網絡與傳統神經網絡相同之處是:二者均采用分層結構,即輸入-隱藏-輸出網絡結構,同一層不相鄰節點沒有連接,跨層之間也沒有連接;不同之處是:傳統神經網絡是人工選擇特征,并映射到值,訓練較慢,較容易過擬合,參數不好調整,深度學習是網絡選擇特征,采用逐層訓練機制,這就使得深度學習比神經網絡更適合大量和復雜數據的處理。
深度學習作為一種大數據分析工具,已經成為視覺識別、自然語言處理和生物信息學等許多信息學領域的重要處理方法[2-4]。目前已經有深度學習在IoT的應用,如深度學習根據智能電表收集的數據對家庭用電量進行預測[5]、基于深度學習的物聯網灌溉系統等[6]。由于高效研究復雜數據的實用性,深度學習將在未來的IoT服務中發揮非常重要的作用[7]。
深度學習比傳統的機器學習方法花費更少的時間來推理信息[8],在IoT中執行深度學習提高了IoT的性能。文獻[9]提出一種基于物聯網深度學習的負載均衡方案,通過分析大量的用戶數據和網絡負載來測量網絡負載和處理結構配置,并應用深度信任網絡方法實現物聯網中的高效負載平衡。文獻[10] 提出了一種新的可穿戴物聯網設備的深度學習模型,提高了音頻識別任務的準確性。
大多數現有的深度學習應用仍然需要云輔助,文獻[11]中提出一個結合深度學習算法和Apache Spark進行物聯網數據分析,推理階段在移動設備上執行,而Apache Spark部署在云服務器中以支持數據培訓,這種雙層設計與邊緣計算非常相似,這表明可以從云端卸載處理任務。
由于數據傳輸的網絡性能有限,集中式云計算結構已經不能處理和分析從IoT設備收集的大量數據[12]。邊緣計算能夠將計算任務從集中式云卸載到IoT設備附近的邊緣,因此通過預處理過程傳輸的數據會極大地減少,這使得邊緣計算成為IoT服務的另一個重要技術[13-15]。深度學習模型中每個網絡層都可以快速縮小中間數據大小,直到找到足夠的特征,深度學習模型的多層次結構使其適用于邊緣計算,因為可以在邊緣上卸載部分學習層,然后將縮減的中間數據傳輸到集中式云服務器。深度學習在邊緣計算中的另一個優勢是中間數據傳輸中的隱私保護。
為了提高物聯網深度學習模型的性能,本文將物聯網的深度學習引入到邊緣計算環境中,以提高學習性能并減少網絡流量。制定了與不同的深度學習模型兼容的彈性模型,由于不同的深度學習模型的中間數據量和預處理開銷不同,本文提出了一個調度問題,在邊緣節點的有限網絡帶寬和服務能力下最大化深度學習任務的數量。為了在調度中保證每個物聯網的深度學習服務的服務質量(QoS),設計離線和在線調度算法來解決這個問題。實驗結果表明,本文解決方案優于其他優化方法。
物聯網設備會生成大量數據并將數據傳輸到云端以供進一步處理,這些數據包括多媒體信息,如視頻、圖像和聲音,或結構化數據,如溫度、振動和光通量信息。有許多成熟的技術用于處理結構化數據,然后自動控制物聯網設備。傳統的多媒體處理技術需要復雜的計算,不適用于物聯網服務,由于深度學習技術提高了多媒體信息處理的效率,越來越多的作品開始將深度學習引入多媒體IoT服務。
視頻傳感是一項重要的物聯網應用,它在物聯網網絡中集成了圖像處理和計算機視覺,識別來自物聯網設備記錄的低質量視頻數據的對象仍然是一項挑戰。由于深度學習在視頻識別中準確性較高,因此認為它是具有深度學習的典型物聯網應用。
深度學習提高了物聯網服務的多媒體處理效率,因為特征是由多層提取的,而不是傳統的復雜預處理,然而,通信性能將是提高處理效率的瓶頸。所收集的多媒體數據大小遠遠大于傳統的結構化數據大小,因此網絡將收集到的數據從IoT設備傳輸到云服務的性能很難得到提高。
邊緣計算是將收集的數據從物聯網設備傳輸到云服務一種解決方案,物聯網包含邊緣層和云層,用于連接物聯網設備和云服務。邊緣層通常由物聯網設備、物聯網網關和局域網中的網絡接入點組成;云層包括互聯網連接和云服務器。邊緣計算的處理在邊緣層中執行,在邊緣計算環境中,由于只有中間數據或結果需要從設備傳輸到云服務,因此減少了傳輸數據和減輕了網絡壓力。
邊緣計算非常適合于中間數據小于輸入數據的任務。因此,邊緣計算對于深層學習任務是有效的,因為在深層學習網絡層中,提取的特征大小被濾波器減少。圖1給出了本文提出的物聯網深度學習任務的邊緣計算結構,該結構由云層與邊緣層以及典型的邊緣計算結構組成。

圖1 物聯網深度學習的邊緣計算結構
在邊緣層中,邊緣服務器部署在IoT網關中,用于處理收集的數據。首先在云服務器上訓練深度學習網絡,在訓練之后,將學習網絡分為兩部分,一部分靠近輸入數據的較低層,而另一部分靠近輸出數據的較高層。將具有較低層的部分部署到邊緣服務器中,將具有較高層的部分部署到云中用于卸載處理。因此,收集的數據被輸入到邊緣服務器中的第一層,邊緣服務器從較低層加載中間數據,然后將數據作為較高層的輸入數據傳輸到云服務器。
由較高層生成的中間數據小于由較低層生成的中間數據,將更多層部署到邊緣服務器可以減少更多網絡流量。但是,與云服務器相比,邊緣服務器的服務器容量有限,在邊緣服務器中處理無限任務是不可能的。深度學習網絡中的每一層都會給服務器帶來額外的計算開銷,因此,只能將部分深度學習網絡部署到邊緣服務器中。同時,由于不同的深度學習網絡和任務具有不同大小的中間數據和計算開銷,在邊緣計算結構中需要有效的調度來優化物聯網的深度學習。針對這一問題,本文設計了一種有效的調度策略,并在下一節中進行了闡述。
物聯網深度學習的邊緣計算結構中深度學習網絡使用的是深度自編碼器,網絡結構如圖2所示。

圖2 深度自編碼器網絡結構
對于輸入向量x被編碼為長度為低維特征向量a,然后被重構為近似于x的向量y,則在深度自編碼器中,較低的維度a可以表示為:
a=f(∑Wx+b)
(1)
式中:f(·)是輸入映射函數,本文采用sigmoid函數,W是權重向量,b是偏置向量。
首先闡述物聯網深度學習的邊緣計算結構中的調度問題,然后提出解決方案。在給定的邊緣計算環境中,使用集合E來表示所有邊緣服務器,ei表示集合E中的邊緣服務器。從邊緣服務器ei到云服務器,使用值ci表示服務容量,bi表示網絡帶寬。由于邊緣服務器和云服務器之間存在一些交互流量,還添加了閾值V用以避免網絡擁塞。因此,邊緣服務器ei和云服務器之間的最大可用帶寬由bi·V表示。
移動節點i在每個時間段t中生成ki(t)比特的調度任務,對于IoT中i在t時的調度任務量定義為Ti(t),其在下一個時間段的更新規則可表示為:
Ti(t+1)=Ti(t)+ki(t)-ui(t)-vi(t)
(2)
式中:ui(t)表示本地任務執行量,vi(t)表示卸載任務量。
tj表示深度學習任務,任務t′j的深度學習網絡層數為Nj。假設減少的數據大小接近具有不同輸入數據的每個任務的平均值。由第k層生成的中間數據大小(k∈[1,Nj])與總輸入數據大小的平均比率由rkj表示。對于任務tj和邊緣服務器ei,被分配的帶寬由bij表示。令dij表示邊緣服務器ei中任務tj的每時間單位的輸入數據大小。如果任務tj的k個層放置在邊緣服務器中,則邊緣服務器ei中的任務tj的傳送等待時間可以被表示為dij·rkj/bij。為保證QoS,傳輸延遲應小于Qj所表示的最大值。對于任務tj,第k層之后的輸入數據單元的計算開銷用Ikj表示。因此,對于任務tj,計算機在邊緣服務器ei中的開銷是Ikj·dij。
計算中調度IoT深度學習網絡層的問題:給定邊緣計算結構,調度問題試圖通過在IOT邊緣服務器中部署深度學習層來分配邊緣計算結構中的最大任務,使得所需的傳輸延遲每個任務都可以保證,如下式所示:
(3)
如果任務tj部署在邊緣服務器ei中,則Xij=1;否則,Xij=0。



Φ(cijm)←(Bmin·e/Bmax)cijm·(Bmax·e)
(4)
式中:邊緣服務器eijm的剩余服務容量是cijm。如果:
(bijm-dijmj·rijmj/Qj)·(cijm-dijmj·Iijmj)≤Φ(cijm)
(5)
并且其他邊緣服務器有足夠的帶寬和服務容量,則調度算法將任務tj部署到邊緣服務器。在線算法的近似比為:
在本文實驗中有兩個實驗環境,一個用于收集深度學習任務的數據,另一個用于仿真。使用配備為Intel Core i7 7770 CPU和NVIDIA Geforce GTX 1080顯卡的工作站執行深度學習應用程序。實驗定義了10個不同的深度自編碼器網絡,執行10個深度自編碼器任務使用不同的網絡并記錄每個層中生成的操作和中間數據的數量。圖3給出了深度網絡的計算開銷和減少數據大小比率指標,深度學習網絡有五個層次和不同的神經元設置。

圖3 深度學習網絡中的減少數據和計算開銷
從圖中可以看出,輸入數據可以通過深度學習網絡來減少,更多的中間數據可以通過較低層來減少,計算開銷隨著層數的增加而迅速增加。
使用Python 2.7和networkx開發模擬器,在模擬中,將深度學習任務的數量設置為1 000。根據NVIDIA Tegra K1,每臺邊緣服務器的服務能力設置為290 Gflops,將網絡中的邊緣服務器數量從20增加到90。每個任務的輸入數據大小設置為從100 KB至1 MB,所有深度網絡的層數設置為5到10。每個邊緣服務器的帶寬均勻分布在10 Mbit/s到1 Mbit/s之間,所需的延遲時間為0.2 s。
將本文在線調度算法的性能與兩種流行的在線調度算法:先入先出(FIFO)和低帶寬優先部署(LBF)進行比較。向邊緣網絡輸入1 000個任務的隨機序列,這兩種算法將任務部署到邊緣服務器中,邊緣服務器的數量設置為50。圖4給出了本文在線方法與其他兩種方法的性能比較。

圖4 使用不同算法的部署任務的數量
如圖4所示,FIFO算法對每個任務進行部署,直到沒有足夠的能力和帶寬,因此,在部署360個任務之后,FIFO算法會彈出第一個部署的任務,用于附加以后的任務,部署的任務數量隨著輸入任務的增加不再增加,或者減少。當容量和帶寬不足時,LBF與FIFO類似,部署任務數不再隨著輸入任務數的增加而增加了,當沒有空間部署以后的任務時,LBF將刪除具有最大帶寬要求的任務。本文的在線算法決定是否將以后的任務部署到邊緣服務器中,當輸入任務的數量接近600時,在線算法比FIFO和LBF能夠部署更多的任務。因此,當容量和帶寬不足時,本文在線卸載調度算法部署的任務數量會隨著輸入任務的增加,且優于FIFO和LBF算法。
本文將物聯網的深度學習引入到邊緣計算環境中,以優化網絡性能并保護上傳數據時的用戶隱私。邊緣計算結構使得邊緣節點減少了上傳數據的中間數據,減少了從物聯網設備到云服務器的網絡流量。針對邊緣節點的有限服務能力,提出卸載調度算法來最大化邊緣計算環境中的任務數量。實驗結果表明,本文邊緣計算的物聯網深度學習應用及卸載調度算法可以在保證QoS要求的情況下增加邊緣服務器中部署的任務數量。未來將利用本文算法在真實世界的邊緣計算環境中部署深度學習應用。