王季喜 陳慶奎
(上海理工大學光電信息與計算機工程學院 上海 200093)
物聯網作為一種信息技術,其目標就是通過傳感設備將現實世界中幾乎所有對象進行網絡連接,從而實現萬物互聯互通[1]。隨著人們對科學的不斷探究,大規模終端設備的感知系統產生規模龐大的數據,物聯網進入大數據時代[2~3]。近年來,人工智能[4]技術加速落地,人們開始運用物聯網構建新型智能感知系統。在“萬物智聯”時代,將智能計算任務向邊緣部署成為了人們的研究熱點。如在智能終端部署老人姿態識別的深度學習模型,對老人姿態進行識別。目前,基于視頻、圖像的AI 任務不僅需要傳輸大量的數據,還需要較強的設備計算能力。為降低邊緣數據中心帶寬壓力,充分利用終端設備的計算能力,AI模型分層計算的方法被提出[5~6]。根據終端設備計算能力,將OpenPose 深度學習網絡模型[7]拆分為兩部分。其中,部署第一部分AI分層模型的智能終端對老人姿態視頻流預處理,提取視頻幀特征信息稱為AI 數據單元,同一前端設備基于時間序列上的AI 數據單元匯集成AI 數據流;GPU服務器利用第二部分AI分層模型對AI數據流進行深入特征提取,從而識別老人姿態變化,對異常姿態進行報警。
在老齡化日益嚴重的今天,對老人的異常姿態識別成為社會常態,AI 分層模型將被大量部署在智能終端。大規模AI 數據流涌入遠端服務器集群將嚴重影響系統性能。為了充分發揮集群系統性能,提供可靠的并行AI 數據流接入服務,設計高效的AI數據流接入算法和調度機制變得格外重要。
隨著人工智能的邊緣化,用于“邊緣計算”[8]的智能終端設備規模增加,大規模AI 數據流并發接入系統面臨諸多挑戰。在分布式“云計算”[9]中,為了實現計算任務的快速可靠完成,往往會涉及到“云計算”服務器負載均衡和計算任務調度問題。而邊緣接入服務器集群作為終端數據流向遠端“云計算”服務中心匯集的中間通道,對數據流的響應時間和可靠接入有著更高的要求,同樣面臨著任務遷移調度問題。
在任務遷移調度方面,目前有許多優秀的解決方案。Cloudlet作為向移動邊緣計算提供可持續性云服務的重要部分,其內部任務的分配和調度是一項極具挑戰性的工作,文獻[10]設計一種啟發式負載均衡策略,考慮網絡帶寬和網絡延時的動態變化,最小化任務完成時間和最大完工時間,提高云服務效率。Wang等[11]將“云計算”任務總完成時間和懲罰因子量化為適應度函數,提出基于災難性遺傳算法的任務調度算法,在滿足延遲的基礎上對云計算任務進行調度。文獻[12]針對資源需求在時間和長度上的時變特性及云資源的動態性和異構性,提出一種在線強化學習的方法進行前瞻性任務分配,以減少提交任務的響應時間和最大完工時間,提高資源效率。文獻[13]將任務調度抽象為虛擬化技術下的虛擬機部署問題,通過三次指數平滑算法計算下一時期任務請求的資源需求,在此基礎上提出多目標約束功耗模型和基于概率匹配的低功耗資源分配算法,提高了系統的實時響應效率和穩定性。文獻[14]通過度量到達特定機器的數據流包對CPU、內存和網絡的利用率,同時考慮組成集群的主機的資源利用率,以降低數據流在線調度對流處理計算性能的影響。文獻[15]討論了一種具有響應時間約束的大數據流在線調度策略,對系統穩定性、響應時間和資源利用進行建模,有效地權衡了系統接入高穩定性和可接受響應時間之間的矛盾。童釗等[16]提出一種基于Q 學習的多目標任務調度算法,利用Q-learning 自學習算法對任務進行排序,對任務最早完成時間和計算成本進行綜合考慮,以產生最小成本為目標函數對任務進行調度。
在前人研究的基礎上,本文設計區域動態分組接入算法對AI 數據流進行分組快速接入。同時,針對邊緣接入場景中AI 數據單元的動態變化造成部分接入服務器資源“過負載”,進而導致AI 數據單元發生嚴重丟包現象,本文設計并實現基于資源預測的AI 數據流遷移調度機制,有效解決AI 數據單元動態變化帶來的系統問題,提高系統容錯能力。
考慮到規模性數據流通信占用大量網絡帶寬,引起控制類消息發生嚴重擁堵,本文采用旁路控制機制,通過專用物理端口將終端設備、接入服務器集群和GPU 計算集群進行旁路連接進行控制類消息通信。如圖1所示,針對不同的終端設備(用F1,F2,…,Fn 標識),在接入服務器(用R1,R2,…,Rn標識)使用多端口實現并發數據流接入,并將并發數據流依照輪轉周期交給相應的GPU 計算服務器(用G1,G2,…,Gn標識)進行計算。

圖1 集群通信架構
在邊緣接入場景中,AI 計算任務往往需要滿足較高的實時性要求,這種高實時性要求的AI 任務處理不僅需要接入服務器物理上靠近智能終端,還需要低延遲的數據通信協議。UDP 傳輸協議采用無連接的通信方式,在大規模并行接入中顯得更加輕量高效,本文設計了基于UDP 消息的AI 數據流輕量化通信協議,以支持大規模AI 數據流并行通信功能。基于UDP消息的AI數據流通信協議包括兩種協議類型,一種是進行AI 數據流傳輸的消息包,用于AI 數據單元的數據封裝和傳輸;另一種是與并行接入系統有關的控制類型數據包,該類數據包用于實現并行接入系統的服務器資源負載信息匯集、服務器數據流接入信息同步和AI 數據流丟包重傳等功能。
如圖2 為本文設計的消息包格式,該設計對數據包結構進行自定義,保存了數據流的基本信息,便于系統進行丟失數據包的重傳,以實現AI 數據流的可靠交付。

圖2 數據包協議格式
本文設計的控制類數據包如圖3 所示,通過旁路控制機制實現智能終端系統和接入服務器集群之間的控制消息傳輸。集群內接入服務器定期向集群管理者發送資源負載同步包和數據流接入信息同步包,管理者解析對應控制包,生成資源負載信息表和數據流接入信息表。其中,資源負載同步消息包括對應服務器提供的接入端口地址Ser_Ip,端口帶寬負載Net_Load,端口AI 數據流占用內存負載Mem_Load,CPU 利用率CPU_Load。數據流接入同步消息包括接入服務器各端口接收AI 數據流的源地址Src_Ip,以及AI數據流源端控制機制采用控制端口Ctr_Port。對于數據包丟失重傳控制包,其DATA 域指明發生丟包AI 數據單元相關信息以及待重傳數據包數量Rtr_Pkt_N,對應Data 域中每兩個字節標識一個丟失數據包在對應AI 數據單元內的分片編號,以使智能終端對丟失數據包進行選擇重傳。
這種種原因標明,利用Fizpatrick-Pathak皮膚分型來預測MED值是不可靠的,缺乏客觀依據。

圖3 控制包協議格式
3.3.1 AI數據流資源模型

3.3.2 接入服務器資源負載模型
根據服務器接入信息,可獲得接入服務器Ri接收端口Pj理論最大接收速率為Vmax_Pj_Ri,接入服務器最大接收端口數量為num_port_Ri,接入服務器Ri接收端口Pj接入AI 數據流數目為Nreceived_Pj_Ri,接入服務器Ri最大內存容量Mmax_Ri,在t時刻,接入服務器Ri的CPU資源利用率φC_Ri(t)由系統得出。通過式(3)可以計算出接入服務器Ri端口Pj網絡帶寬占用量,考慮通信干擾因素,由式(4)對端口帶寬占用量進行平滑修正,修正因子δ為0.8。式(5)可以計算出接入服務器Ri全部接收端口總帶寬利用率。接入服務器Ri接收端口Pj接入AI 數據流內存使用量由式(6)計算得出,由式(7)進行平滑修正,修正因子?取0.8,最后由式(8)計算出AI 數據流對接入服務器Ri總內存占用率。
3.3.3 區域動態分組接入算法ADGA及其改進
在大規模AI 數據流接入工作中,采用輪詢方式將AI 數據流接入邊緣服務器集群,服務器資源的動態變化導致傳統輪詢方式較高延遲響應問題。本文針對大規模AI 數據流接入請求,通過對接入服務器資源進行分析,建立AI 數據流資源需求與接入服務器可用資源二分圖,尋找增廣路徑,設計區域分組動態接入策略,將AI 數據流進行分組接入。
采用常用圖表示方法表示二分圖為G={ }V1,V2,E,其中V1為集群接入服務器節點集,V2為請求進行AI 數據流接入的智能終端節點集,E為兩個節點集內節點之間的邊集,最初E=?。當大量智能終端發送接入請求時,區域管理者解析接入請求包,獲得待接入AI 數據流數據單元Fk對接入服務器Ri端口帶寬占用量Buse_Fk_Ri及內存占用量Muse_Fk_Ri。管理者查看集群資源負載信息表,獲得接入服務器Ri剩余端口帶寬Bleave_P_Ri和 內 存 資 源Mleave_P_Ri。 若Buse_Fk_Ri 區域動態分組接入算法核心在于二分圖的構建和最大匹配的求解。假設集群接入服務器節點共n 臺,請求接入的智能終端共有m 個。構建二分圖時,需要將所有請求接入的AI 數據流占用資源與所有服務器節點剩余資源進行比較,建立終端與服務器之間的連接線,此過程時間復雜度最大為O(mn)。求解最大匹配過程中,對于每個接入服務器節點,都要查找其匹配邊,對于具有n 個接入節點的集群,匹配邊最壞查找情況即每次匹配都會查找一條增廣路徑,由二分圖構建過程可知增廣路徑最大邊數為mn,則完成最大匹配求解最差時間復雜度為O(mn2)。根據算法最差時間復雜度可知,在大規模AI 數據流接入工作中,這種分配模式仍存在較大弊端。本文對請求AI 數據流接入的智能終端進行分組,分組大小為K(K 為單個分組內AI數據流數目),通過如下公式計算K值。 經過改進的區域動態分組接入算法,當接入服務器擁有較多可用資源時,將大規模AI 數據流接入請求進行分組,每個分組用二分圖中V2的一個頂點表示,每個匹配邊表示將一組數據流接入請求分配給一臺接入服務器節點。 3.3.4 基于資源預測的AI數據流遷移調度 前文已對接入服務器CPU利用率、內存利用率和端口帶寬利用率進行分析建模,設φ_Rj(t)=(φC_Ri(t),φM_Ri(t),φN_Ri(t) )表示t時刻接入服務器Ri各資源利用率,定義接入服務器Ri資源總負載度為 在大規模AI 數據流并發接入模型中,當智能終端設備進行時間序列AI 數據流接入時,接入服務器的資源隨著數據流的接入發生波動,可能導致服務器“過負載”現象,大大降低集群接入性能。針對接入服務器資源負載變化問題,防止資源負載突變產生負載誤差,本文基于加權平均的思想,采用二階差分指數平滑法對接入服務器資源負載情況進行預測。使用二階差分指數平滑法進行預測的計算過程如下:當t 時刻資源負載標準差LSDt超過負載平衡閾值θ(θ取值0.1),觸發管理者數據流調度機制。由于對AI 數據流進行接入時,區域動態分組接入算法已經基于服務器資源對數據流進行了初分配,此處管理者選擇“過負載”接入服務器中資源占用較少的數據流遷移至“欠負載”接入服務器。可以通過式(20)~(24)計算遷入節點的可接受遷入數據流數量。其中,式(20)可以計算出接入服務器Ri單端口剩余帶寬,通過式(21)進行平滑調整,調整因子u=0.8。式(22)可以計算出接入服務器Ri接收端口總剩余帶寬。式(23)計算出接入服務器Ri剩余內存總量。最后,通過式(24)可以計算接入服務器Ri能接受遷移的AI數據流數目。 為驗證本文接入算法和流調度機制性能,我們使用4 臺不同主機搭建邊緣接入服務器集群,其中1臺兼備協調者功能,詳細配置如表1所示。 表1 接入服務器配置信息 針對本文研究環境,經過Nano 開發板預先進行姿態行為視頻采集和預處理生成AI 數據流,每臺模擬機存儲300路不同的AI數據流,多線程進行不同AI 數據流發送任務。每臺模擬機詳細配置信息如表2所示。 表2 模擬機配置信息 經前期實驗第一部分AI 分層模型采用27 層時,Nano 開發板可在輪轉周期為1s 內完成圖像采集、AI 預處理和周期性發送任務。經過分層模型預處理的AI 數據單元大小約為672KB,采用設計的AI 數據包大小,單個AI 數據單元將被封裝成945 個AI 數據包。假定發送數據單元周期數為T,單個周期數據單元并發量為N,通過對丟包率和各服務器資源負載度的分析,對本系統的調度機制性能進行評估。 丟包率DPR 指連續發送周期T 內AI 數據流丟包總量占數據流包總數的比例;接入服務器資源負載度Li由式(13)計算得出。對比管理者被觸發數據流遷移調度前后各服務器資源總負載度和AI 數據流丟包率,可以反映系統數據流遷移調度算法性能。 4.3.1 數據流接入響應時間測試 在該實驗中,本文選擇傳統最少連接數法、本文的區域動態接入算法及其改進算法,對比各算法對不同規模請求接入的平均響應時間。如表3 為不同數據流接入請求時各算法平均響應時間對比。 表3 不同接入請求量下各算法響應時間對比 對比可以看出,在不同數量數據流并發請求接入時,采用最少連接數算法對數據流進行接入,數據流接入請求平均響應時間都遠遠大于本文的區域動態分組接入算法及其改進算法。在數據流接入請求數量為100 時,集群各接入服務器仍處于“欠負載”狀態。對于大量“欠負載”服務器,管理服務器執行動態分組算法效果并不明顯,由于在分配數據流接入請求時需要先對數據流進行分組劃分,然后按分組進行動態接入,導致ADGA 改進算法平均響應時間略大于區域動態分組接入算法。在數據流接入請求數量大于200 時,ADGA 改進算法接入請求平均響應時間明顯小于算法改進前平均響應時間,這是因為ADGA 改進算法不僅考慮服務器負載情況,并將流平均分配思想用于分組大小的計算,提高了服務器負載均衡程度,從而降低集群對規模性數據流接入請求的平均響應時間。 4.3.2 數據流遷移調度實驗 本文利用服務器集群單端口進行數據流遷移調度實驗,發送周期T 選取100。模擬機向集群管理者發送不同規模AI 數據流接入請求,計算采用資源預測的數據流調度前后各服務器資源負載信息,將數據流調度前后各服務器丟包率進行對比。 如圖4和圖5所示,未采用數據流調度時,集群各服務器資源負載度存在明顯差異,特別是當集群數據流并發量達到400 時,部分服務器資源負載度達到0.6,開始出現“過負載”現象,丟包現象明顯;采用基于資源預測的數據流調度算法之后,各服務器相互分擔數據流接入工作,集群各服務器資源負載度相對均衡,并未出現個別服務器“過負載”現象,丟包率明顯下降。當集群數據流并發量達到500 時,基于資源預測的流調度方案可以使各服務器資源負載相對均衡,但AI 數據流總并發量超出了集群處理能力,部分服務器仍存在“過負載”現象。通過圖4 和圖5 可以看出,當AI 數據流總并發量在集群可處理能力范圍內時,基于資源預測的流調度方案可以更好地對集群服務器資源進行均衡利用,避免單個服務器由于“過負載”出現集群性能瓶頸,從而提高系統AI數據流接入可靠性。 圖4 調度前各服務器資源負載度和數據流丟包率 圖5 調度后各服務器資源負載度和數據流丟包率 在大規模AI 數據流接入過程中,進行不同數量的數據流并發接入時,本文設計并實現的區域動態分組接入算法對數據流接入請求平均響應時間均低于傳統最少連接法。針對AI 數據單元動態變化,設計并實現基于動態資源預測的AI 數據流調度。在流動態變化過程中,采用動態資源預測的數據流調度機制可以有效解決接入服務器預期“過負載”現象,保證系統總并發量不變情況下,降低邊緣接入集群AI 數據單元丟包率,使系統資源得到高效利用。這對未來大規模智能終端數據進行匯集接入具有重大實際意義。未來本文將對接入服務器集群動態擴展進行研究,以使得集群規模自適應AI數據流并發接入總量。
4 實驗測試
4.1 實驗環境


4.2 評估指標
4.3 實驗結果及分析



5 結語