王季喜 陳慶奎
(上海理工大學光電信息與計算機工程學院 上海 200093)
物聯(lián)網(wǎng)作為一種信息技術(shù),其目標就是通過傳感設備將現(xiàn)實世界中幾乎所有對象進行網(wǎng)絡連接,從而實現(xiàn)萬物互聯(lián)互通[1]。隨著人們對科學的不斷探究,大規(guī)模終端設備的感知系統(tǒng)產(chǎn)生規(guī)模龐大的數(shù)據(jù),物聯(lián)網(wǎng)進入大數(shù)據(jù)時代[2~3]。近年來,人工智能[4]技術(shù)加速落地,人們開始運用物聯(lián)網(wǎng)構(gòu)建新型智能感知系統(tǒng)。在“萬物智聯(lián)”時代,將智能計算任務向邊緣部署成為了人們的研究熱點。如在智能終端部署老人姿態(tài)識別的深度學習模型,對老人姿態(tài)進行識別。目前,基于視頻、圖像的AI 任務不僅需要傳輸大量的數(shù)據(jù),還需要較強的設備計算能力。為降低邊緣數(shù)據(jù)中心帶寬壓力,充分利用終端設備的計算能力,AI模型分層計算的方法被提出[5~6]。根據(jù)終端設備計算能力,將OpenPose 深度學習網(wǎng)絡模型[7]拆分為兩部分。其中,部署第一部分AI分層模型的智能終端對老人姿態(tài)視頻流預處理,提取視頻幀特征信息稱為AI 數(shù)據(jù)單元,同一前端設備基于時間序列上的AI 數(shù)據(jù)單元匯集成AI 數(shù)據(jù)流;GPU服務器利用第二部分AI分層模型對AI數(shù)據(jù)流進行深入特征提取,從而識別老人姿態(tài)變化,對異常姿態(tài)進行報警。
在老齡化日益嚴重的今天,對老人的異常姿態(tài)識別成為社會常態(tài),AI 分層模型將被大量部署在智能終端。大規(guī)模AI 數(shù)據(jù)流涌入遠端服務器集群將嚴重影響系統(tǒng)性能。為了充分發(fā)揮集群系統(tǒng)性能,提供可靠的并行AI 數(shù)據(jù)流接入服務,設計高效的AI數(shù)據(jù)流接入算法和調(diào)度機制變得格外重要。
隨著人工智能的邊緣化,用于“邊緣計算”[8]的智能終端設備規(guī)模增加,大規(guī)模AI 數(shù)據(jù)流并發(fā)接入系統(tǒng)面臨諸多挑戰(zhàn)。在分布式“云計算”[9]中,為了實現(xiàn)計算任務的快速可靠完成,往往會涉及到“云計算”服務器負載均衡和計算任務調(diào)度問題。而邊緣接入服務器集群作為終端數(shù)據(jù)流向遠端“云計算”服務中心匯集的中間通道,對數(shù)據(jù)流的響應時間和可靠接入有著更高的要求,同樣面臨著任務遷移調(diào)度問題。
在任務遷移調(diào)度方面,目前有許多優(yōu)秀的解決方案。Cloudlet作為向移動邊緣計算提供可持續(xù)性云服務的重要部分,其內(nèi)部任務的分配和調(diào)度是一項極具挑戰(zhàn)性的工作,文獻[10]設計一種啟發(fā)式負載均衡策略,考慮網(wǎng)絡帶寬和網(wǎng)絡延時的動態(tài)變化,最小化任務完成時間和最大完工時間,提高云服務效率。Wang等[11]將“云計算”任務總完成時間和懲罰因子量化為適應度函數(shù),提出基于災難性遺傳算法的任務調(diào)度算法,在滿足延遲的基礎(chǔ)上對云計算任務進行調(diào)度。文獻[12]針對資源需求在時間和長度上的時變特性及云資源的動態(tài)性和異構(gòu)性,提出一種在線強化學習的方法進行前瞻性任務分配,以減少提交任務的響應時間和最大完工時間,提高資源效率。文獻[13]將任務調(diào)度抽象為虛擬化技術(shù)下的虛擬機部署問題,通過三次指數(shù)平滑算法計算下一時期任務請求的資源需求,在此基礎(chǔ)上提出多目標約束功耗模型和基于概率匹配的低功耗資源分配算法,提高了系統(tǒng)的實時響應效率和穩(wěn)定性。文獻[14]通過度量到達特定機器的數(shù)據(jù)流包對CPU、內(nèi)存和網(wǎng)絡的利用率,同時考慮組成集群的主機的資源利用率,以降低數(shù)據(jù)流在線調(diào)度對流處理計算性能的影響。文獻[15]討論了一種具有響應時間約束的大數(shù)據(jù)流在線調(diào)度策略,對系統(tǒng)穩(wěn)定性、響應時間和資源利用進行建模,有效地權(quán)衡了系統(tǒng)接入高穩(wěn)定性和可接受響應時間之間的矛盾。童釗等[16]提出一種基于Q 學習的多目標任務調(diào)度算法,利用Q-learning 自學習算法對任務進行排序,對任務最早完成時間和計算成本進行綜合考慮,以產(chǎn)生最小成本為目標函數(shù)對任務進行調(diào)度。
在前人研究的基礎(chǔ)上,本文設計區(qū)域動態(tài)分組接入算法對AI 數(shù)據(jù)流進行分組快速接入。同時,針對邊緣接入場景中AI 數(shù)據(jù)單元的動態(tài)變化造成部分接入服務器資源“過負載”,進而導致AI 數(shù)據(jù)單元發(fā)生嚴重丟包現(xiàn)象,本文設計并實現(xiàn)基于資源預測的AI 數(shù)據(jù)流遷移調(diào)度機制,有效解決AI 數(shù)據(jù)單元動態(tài)變化帶來的系統(tǒng)問題,提高系統(tǒng)容錯能力。
考慮到規(guī)模性數(shù)據(jù)流通信占用大量網(wǎng)絡帶寬,引起控制類消息發(fā)生嚴重擁堵,本文采用旁路控制機制,通過專用物理端口將終端設備、接入服務器集群和GPU 計算集群進行旁路連接進行控制類消息通信。如圖1所示,針對不同的終端設備(用F1,F(xiàn)2,…,F(xiàn)n 標識),在接入服務器(用R1,R2,…,Rn標識)使用多端口實現(xiàn)并發(fā)數(shù)據(jù)流接入,并將并發(fā)數(shù)據(jù)流依照輪轉(zhuǎn)周期交給相應的GPU 計算服務器(用G1,G2,…,Gn標識)進行計算。
圖1 集群通信架構(gòu)
在邊緣接入場景中,AI 計算任務往往需要滿足較高的實時性要求,這種高實時性要求的AI 任務處理不僅需要接入服務器物理上靠近智能終端,還需要低延遲的數(shù)據(jù)通信協(xié)議。UDP 傳輸協(xié)議采用無連接的通信方式,在大規(guī)模并行接入中顯得更加輕量高效,本文設計了基于UDP 消息的AI 數(shù)據(jù)流輕量化通信協(xié)議,以支持大規(guī)模AI 數(shù)據(jù)流并行通信功能?;赨DP消息的AI數(shù)據(jù)流通信協(xié)議包括兩種協(xié)議類型,一種是進行AI 數(shù)據(jù)流傳輸?shù)南?,用于AI 數(shù)據(jù)單元的數(shù)據(jù)封裝和傳輸;另一種是與并行接入系統(tǒng)有關(guān)的控制類型數(shù)據(jù)包,該類數(shù)據(jù)包用于實現(xiàn)并行接入系統(tǒng)的服務器資源負載信息匯集、服務器數(shù)據(jù)流接入信息同步和AI 數(shù)據(jù)流丟包重傳等功能。
如圖2 為本文設計的消息包格式,該設計對數(shù)據(jù)包結(jié)構(gòu)進行自定義,保存了數(shù)據(jù)流的基本信息,便于系統(tǒng)進行丟失數(shù)據(jù)包的重傳,以實現(xiàn)AI 數(shù)據(jù)流的可靠交付。
圖2 數(shù)據(jù)包協(xié)議格式
本文設計的控制類數(shù)據(jù)包如圖3 所示,通過旁路控制機制實現(xiàn)智能終端系統(tǒng)和接入服務器集群之間的控制消息傳輸。集群內(nèi)接入服務器定期向集群管理者發(fā)送資源負載同步包和數(shù)據(jù)流接入信息同步包,管理者解析對應控制包,生成資源負載信息表和數(shù)據(jù)流接入信息表。其中,資源負載同步消息包括對應服務器提供的接入端口地址Ser_Ip,端口帶寬負載Net_Load,端口AI 數(shù)據(jù)流占用內(nèi)存負載Mem_Load,CPU 利用率CPU_Load。數(shù)據(jù)流接入同步消息包括接入服務器各端口接收AI 數(shù)據(jù)流的源地址Src_Ip,以及AI數(shù)據(jù)流源端控制機制采用控制端口Ctr_Port。對于數(shù)據(jù)包丟失重傳控制包,其DATA 域指明發(fā)生丟包AI 數(shù)據(jù)單元相關(guān)信息以及待重傳數(shù)據(jù)包數(shù)量Rtr_Pkt_N,對應Data 域中每兩個字節(jié)標識一個丟失數(shù)據(jù)包在對應AI 數(shù)據(jù)單元內(nèi)的分片編號,以使智能終端對丟失數(shù)據(jù)包進行選擇重傳。
這種種原因標明,利用Fizpatrick-Pathak皮膚分型來預測MED值是不可靠的,缺乏客觀依據(jù)。
圖3 控制包協(xié)議格式
3.3.1 AI數(shù)據(jù)流資源模型
3.3.2 接入服務器資源負載模型
根據(jù)服務器接入信息,可獲得接入服務器Ri接收端口Pj理論最大接收速率為Vmax_Pj_Ri,接入服務器最大接收端口數(shù)量為num_port_Ri,接入服務器Ri接收端口Pj接入AI 數(shù)據(jù)流數(shù)目為Nreceived_Pj_Ri,接入服務器Ri最大內(nèi)存容量Mmax_Ri,在t時刻,接入服務器Ri的CPU資源利用率φC_Ri(t)由系統(tǒng)得出。通過式(3)可以計算出接入服務器Ri端口Pj網(wǎng)絡帶寬占用量,考慮通信干擾因素,由式(4)對端口帶寬占用量進行平滑修正,修正因子δ為0.8。式(5)可以計算出接入服務器Ri全部接收端口總帶寬利用率。接入服務器Ri接收端口Pj接入AI 數(shù)據(jù)流內(nèi)存使用量由式(6)計算得出,由式(7)進行平滑修正,修正因子?取0.8,最后由式(8)計算出AI 數(shù)據(jù)流對接入服務器Ri總內(nèi)存占用率。
3.3.3 區(qū)域動態(tài)分組接入算法ADGA及其改進
在大規(guī)模AI 數(shù)據(jù)流接入工作中,采用輪詢方式將AI 數(shù)據(jù)流接入邊緣服務器集群,服務器資源的動態(tài)變化導致傳統(tǒng)輪詢方式較高延遲響應問題。本文針對大規(guī)模AI 數(shù)據(jù)流接入請求,通過對接入服務器資源進行分析,建立AI 數(shù)據(jù)流資源需求與接入服務器可用資源二分圖,尋找增廣路徑,設計區(qū)域分組動態(tài)接入策略,將AI 數(shù)據(jù)流進行分組接入。
采用常用圖表示方法表示二分圖為G={ }V1,V2,E,其中V1為集群接入服務器節(jié)點集,V2為請求進行AI 數(shù)據(jù)流接入的智能終端節(jié)點集,E為兩個節(jié)點集內(nèi)節(jié)點之間的邊集,最初E=?。當大量智能終端發(fā)送接入請求時,區(qū)域管理者解析接入請求包,獲得待接入AI 數(shù)據(jù)流數(shù)據(jù)單元Fk對接入服務器Ri端口帶寬占用量Buse_Fk_Ri及內(nèi)存占用量Muse_Fk_Ri。管理者查看集群資源負載信息表,獲得接入服務器Ri剩余端口帶寬Bleave_P_Ri和 內(nèi) 存 資 源Mleave_P_Ri。 若Buse_Fk_Ri 區(qū)域動態(tài)分組接入算法核心在于二分圖的構(gòu)建和最大匹配的求解。假設集群接入服務器節(jié)點共n 臺,請求接入的智能終端共有m 個。構(gòu)建二分圖時,需要將所有請求接入的AI 數(shù)據(jù)流占用資源與所有服務器節(jié)點剩余資源進行比較,建立終端與服務器之間的連接線,此過程時間復雜度最大為O(mn)。求解最大匹配過程中,對于每個接入服務器節(jié)點,都要查找其匹配邊,對于具有n 個接入節(jié)點的集群,匹配邊最壞查找情況即每次匹配都會查找一條增廣路徑,由二分圖構(gòu)建過程可知增廣路徑最大邊數(shù)為mn,則完成最大匹配求解最差時間復雜度為O(mn2)。根據(jù)算法最差時間復雜度可知,在大規(guī)模AI 數(shù)據(jù)流接入工作中,這種分配模式仍存在較大弊端。本文對請求AI 數(shù)據(jù)流接入的智能終端進行分組,分組大小為K(K 為單個分組內(nèi)AI數(shù)據(jù)流數(shù)目),通過如下公式計算K值。 經(jīng)過改進的區(qū)域動態(tài)分組接入算法,當接入服務器擁有較多可用資源時,將大規(guī)模AI 數(shù)據(jù)流接入請求進行分組,每個分組用二分圖中V2的一個頂點表示,每個匹配邊表示將一組數(shù)據(jù)流接入請求分配給一臺接入服務器節(jié)點。 3.3.4 基于資源預測的AI數(shù)據(jù)流遷移調(diào)度 前文已對接入服務器CPU利用率、內(nèi)存利用率和端口帶寬利用率進行分析建模,設φ_Rj(t)=(φC_Ri(t),φM_Ri(t),φN_Ri(t) )表示t時刻接入服務器Ri各資源利用率,定義接入服務器Ri資源總負載度為 在大規(guī)模AI 數(shù)據(jù)流并發(fā)接入模型中,當智能終端設備進行時間序列AI 數(shù)據(jù)流接入時,接入服務器的資源隨著數(shù)據(jù)流的接入發(fā)生波動,可能導致服務器“過負載”現(xiàn)象,大大降低集群接入性能。針對接入服務器資源負載變化問題,防止資源負載突變產(chǎn)生負載誤差,本文基于加權(quán)平均的思想,采用二階差分指數(shù)平滑法對接入服務器資源負載情況進行預測。使用二階差分指數(shù)平滑法進行預測的計算過程如下:當t 時刻資源負載標準差LSDt超過負載平衡閾值θ(θ取值0.1),觸發(fā)管理者數(shù)據(jù)流調(diào)度機制。由于對AI 數(shù)據(jù)流進行接入時,區(qū)域動態(tài)分組接入算法已經(jīng)基于服務器資源對數(shù)據(jù)流進行了初分配,此處管理者選擇“過負載”接入服務器中資源占用較少的數(shù)據(jù)流遷移至“欠負載”接入服務器??梢酝ㄟ^式(20)~(24)計算遷入節(jié)點的可接受遷入數(shù)據(jù)流數(shù)量。其中,式(20)可以計算出接入服務器Ri單端口剩余帶寬,通過式(21)進行平滑調(diào)整,調(diào)整因子u=0.8。式(22)可以計算出接入服務器Ri接收端口總剩余帶寬。式(23)計算出接入服務器Ri剩余內(nèi)存總量。最后,通過式(24)可以計算接入服務器Ri能接受遷移的AI數(shù)據(jù)流數(shù)目。 為驗證本文接入算法和流調(diào)度機制性能,我們使用4 臺不同主機搭建邊緣接入服務器集群,其中1臺兼?zhèn)鋮f(xié)調(diào)者功能,詳細配置如表1所示。 表1 接入服務器配置信息 針對本文研究環(huán)境,經(jīng)過Nano 開發(fā)板預先進行姿態(tài)行為視頻采集和預處理生成AI 數(shù)據(jù)流,每臺模擬機存儲300路不同的AI數(shù)據(jù)流,多線程進行不同AI 數(shù)據(jù)流發(fā)送任務。每臺模擬機詳細配置信息如表2所示。 表2 模擬機配置信息 經(jīng)前期實驗第一部分AI 分層模型采用27 層時,Nano 開發(fā)板可在輪轉(zhuǎn)周期為1s 內(nèi)完成圖像采集、AI 預處理和周期性發(fā)送任務。經(jīng)過分層模型預處理的AI 數(shù)據(jù)單元大小約為672KB,采用設計的AI 數(shù)據(jù)包大小,單個AI 數(shù)據(jù)單元將被封裝成945 個AI 數(shù)據(jù)包。假定發(fā)送數(shù)據(jù)單元周期數(shù)為T,單個周期數(shù)據(jù)單元并發(fā)量為N,通過對丟包率和各服務器資源負載度的分析,對本系統(tǒng)的調(diào)度機制性能進行評估。 丟包率DPR 指連續(xù)發(fā)送周期T 內(nèi)AI 數(shù)據(jù)流丟包總量占數(shù)據(jù)流包總數(shù)的比例;接入服務器資源負載度Li由式(13)計算得出。對比管理者被觸發(fā)數(shù)據(jù)流遷移調(diào)度前后各服務器資源總負載度和AI 數(shù)據(jù)流丟包率,可以反映系統(tǒng)數(shù)據(jù)流遷移調(diào)度算法性能。 4.3.1 數(shù)據(jù)流接入響應時間測試 在該實驗中,本文選擇傳統(tǒng)最少連接數(shù)法、本文的區(qū)域動態(tài)接入算法及其改進算法,對比各算法對不同規(guī)模請求接入的平均響應時間。如表3 為不同數(shù)據(jù)流接入請求時各算法平均響應時間對比。 表3 不同接入請求量下各算法響應時間對比 對比可以看出,在不同數(shù)量數(shù)據(jù)流并發(fā)請求接入時,采用最少連接數(shù)算法對數(shù)據(jù)流進行接入,數(shù)據(jù)流接入請求平均響應時間都遠遠大于本文的區(qū)域動態(tài)分組接入算法及其改進算法。在數(shù)據(jù)流接入請求數(shù)量為100 時,集群各接入服務器仍處于“欠負載”狀態(tài)。對于大量“欠負載”服務器,管理服務器執(zhí)行動態(tài)分組算法效果并不明顯,由于在分配數(shù)據(jù)流接入請求時需要先對數(shù)據(jù)流進行分組劃分,然后按分組進行動態(tài)接入,導致ADGA 改進算法平均響應時間略大于區(qū)域動態(tài)分組接入算法。在數(shù)據(jù)流接入請求數(shù)量大于200 時,ADGA 改進算法接入請求平均響應時間明顯小于算法改進前平均響應時間,這是因為ADGA 改進算法不僅考慮服務器負載情況,并將流平均分配思想用于分組大小的計算,提高了服務器負載均衡程度,從而降低集群對規(guī)模性數(shù)據(jù)流接入請求的平均響應時間。 4.3.2 數(shù)據(jù)流遷移調(diào)度實驗 本文利用服務器集群單端口進行數(shù)據(jù)流遷移調(diào)度實驗,發(fā)送周期T 選取100。模擬機向集群管理者發(fā)送不同規(guī)模AI 數(shù)據(jù)流接入請求,計算采用資源預測的數(shù)據(jù)流調(diào)度前后各服務器資源負載信息,將數(shù)據(jù)流調(diào)度前后各服務器丟包率進行對比。 如圖4和圖5所示,未采用數(shù)據(jù)流調(diào)度時,集群各服務器資源負載度存在明顯差異,特別是當集群數(shù)據(jù)流并發(fā)量達到400 時,部分服務器資源負載度達到0.6,開始出現(xiàn)“過負載”現(xiàn)象,丟包現(xiàn)象明顯;采用基于資源預測的數(shù)據(jù)流調(diào)度算法之后,各服務器相互分擔數(shù)據(jù)流接入工作,集群各服務器資源負載度相對均衡,并未出現(xiàn)個別服務器“過負載”現(xiàn)象,丟包率明顯下降。當集群數(shù)據(jù)流并發(fā)量達到500 時,基于資源預測的流調(diào)度方案可以使各服務器資源負載相對均衡,但AI 數(shù)據(jù)流總并發(fā)量超出了集群處理能力,部分服務器仍存在“過負載”現(xiàn)象。通過圖4 和圖5 可以看出,當AI 數(shù)據(jù)流總并發(fā)量在集群可處理能力范圍內(nèi)時,基于資源預測的流調(diào)度方案可以更好地對集群服務器資源進行均衡利用,避免單個服務器由于“過負載”出現(xiàn)集群性能瓶頸,從而提高系統(tǒng)AI數(shù)據(jù)流接入可靠性。 圖4 調(diào)度前各服務器資源負載度和數(shù)據(jù)流丟包率 圖5 調(diào)度后各服務器資源負載度和數(shù)據(jù)流丟包率 在大規(guī)模AI 數(shù)據(jù)流接入過程中,進行不同數(shù)量的數(shù)據(jù)流并發(fā)接入時,本文設計并實現(xiàn)的區(qū)域動態(tài)分組接入算法對數(shù)據(jù)流接入請求平均響應時間均低于傳統(tǒng)最少連接法。針對AI 數(shù)據(jù)單元動態(tài)變化,設計并實現(xiàn)基于動態(tài)資源預測的AI 數(shù)據(jù)流調(diào)度。在流動態(tài)變化過程中,采用動態(tài)資源預測的數(shù)據(jù)流調(diào)度機制可以有效解決接入服務器預期“過負載”現(xiàn)象,保證系統(tǒng)總并發(fā)量不變情況下,降低邊緣接入集群AI 數(shù)據(jù)單元丟包率,使系統(tǒng)資源得到高效利用。這對未來大規(guī)模智能終端數(shù)據(jù)進行匯集接入具有重大實際意義。未來本文將對接入服務器集群動態(tài)擴展進行研究,以使得集群規(guī)模自適應AI數(shù)據(jù)流并發(fā)接入總量。4 實驗測試
4.1 實驗環(huán)境
4.2 評估指標
4.3 實驗結(jié)果及分析
5 結(jié)語