楊 云,閆振國
(陜西科技大學 電子信息與人工智能學院,陜西 西安 710021)
云原生容器技術(shù)的生態(tài)系統(tǒng)正在快速發(fā)展,以Kubernetes為代表的容器云成為新的分布式架構(gòu)解決方案.容器云封裝整個軟件運行時環(huán)境,為開發(fā)者提供用于構(gòu)建、發(fā)布和運行分布式應用的平臺[1].云資源的調(diào)度管理與部署是影響系統(tǒng)性能的重要因素.資源供應不足會導致服務水平協(xié)議(Service-Level Agreement,SLA)違約和服務質(zhì)量(Quality of Service,Qos)下降,而過度供應又會帶來資源浪費,增加網(wǎng)絡、冷卻和維護成本[2].高效的資源管理需要與應用需求動態(tài)貼合.但是新資源從請求、調(diào)度、部署到啟動存在一定的時間延遲,這意味著,當系統(tǒng)達到某個負載閾值才請求新資源的反應性技術(shù),在業(yè)務繁忙期會增大系統(tǒng)運行壓力.而應對高流量的臨時系統(tǒng)擴容又是必不可少的,包括系統(tǒng)規(guī)格擴增、服務擴展以及后端擴容.所以在系統(tǒng)過載之前預測未來時間窗口的云資源請求,提前進行調(diào)度分配與編排部署是應對該問題的有效解決辦法.
云資源需求的波動不是一個隨機游走過程,而是前后關(guān)聯(lián)的.其相似的形態(tài)模式隨業(yè)務規(guī)律會差異性復現(xiàn).因為云資源序列與時間的高度相關(guān),現(xiàn)有研究將其作為時序問題開展分析.針對云資源預測,早期的方法有基于統(tǒng)計學的自回歸移動平均法(ARIMA)[3]、指數(shù)平滑法[4]等.ARIMA要求時序數(shù)據(jù)經(jīng)過差分化之后是穩(wěn)定的,本質(zhì)上只能捕捉線性關(guān)系.指數(shù)平滑法對數(shù)據(jù)進行非等權(quán)處理,給予近期數(shù)據(jù)較大權(quán)值,但對轉(zhuǎn)折點缺乏鑒別能力,長期效果較差.后來傳統(tǒng)機器學習方法得到了廣泛發(fā)展,Zia等[5]利用自回歸神經(jīng)網(wǎng)絡(AR-NN)組合模型預測實時資源使用情況;Jitendra Kumar等[6]提出神經(jīng)網(wǎng)絡與自適應差分進化的結(jié)合方法,在精度上優(yōu)于反向傳播網(wǎng)絡;Gopal等[7]利用貝葉斯模型預測內(nèi)存密集型應用的資源需求.趙莉[8]采用支持向量機(Support Vector Machine,SVM)結(jié)合混沌分析方法對云資源序列進行處理,仿真實驗對比神經(jīng)網(wǎng)絡大幅提高了預測精度;Wei等[9]將小波變換與支持向量機的優(yōu)點結(jié)合,提出一種基于加權(quán)小波支持向量機的云負載預測模型,為不同樣本賦予不同等級權(quán)重,同時利用改進的粒子群算法優(yōu)化參數(shù)組合,進一步提升了預測效率.以上模型中神經(jīng)網(wǎng)絡具備良好的非線性映射能力,但隨復雜度的提高閾值和權(quán)重參數(shù)成倍增加,訓練結(jié)果容易過擬合或陷入局部最優(yōu),貝葉斯模型只適合特定預測場景.而相比其他學習算法,支持向量機同時考慮經(jīng)驗風險和結(jié)構(gòu)風險最小化,使用核方法進行非線性學習,其作為二次凸優(yōu)化問題同時避免了神經(jīng)網(wǎng)絡的局部最優(yōu)缺陷,取得了更為理想的效果.
隨著深度學習在時序預測領(lǐng)域的發(fā)展[10],研究者開始利用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)、循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)及其變體長短時記憶網(wǎng)絡(Long Short-Term Memory,LSTM)等深度模型對序列進行處理.Yonghua Zhu等[11]使用循環(huán)神經(jīng)網(wǎng)絡提出基于注意力機制的LSTM云負載預測方法;Omer等[12]使用卷積神經(jīng)網(wǎng)絡(CNN)將時間序列轉(zhuǎn)換為二維圖像,根據(jù)原始時間序列起伏標注圖像特征;Alberto Mozo等[13]利用CNN預測本地數(shù)據(jù)中心網(wǎng)絡流量負載的短期變化,證實了CNN可以捕捉具有高度非線性規(guī)律的TCP連接數(shù)量;S Chan 等[14]使用CNN-SVM的混合建模技術(shù)對非平穩(wěn)的多元時間序列進行了短期負荷預測,相比傳統(tǒng)時序方法在精度上取得了顯著優(yōu)勢.
在云場景中,資源需求波動是一個逐漸演變的過程,存在時間維上局部相關(guān)性的同時,受到空間維拓撲結(jié)構(gòu)的影響,各結(jié)點的負載波動會鏈式帶動其他結(jié)點的計算資源管理彈性變化[15].例如Kubernetes云平臺依據(jù)服務發(fā)布Pod的負載情況動態(tài)調(diào)整外部存儲對于業(yè)務的擴縮容響應.卷積神經(jīng)網(wǎng)絡并行化效率高,結(jié)構(gòu)穩(wěn)定,能夠從局部特征關(guān)聯(lián)聚合得到整體,從各維度挖掘潛在模式,相比其他方法更能滿足云場景的時空維建模需求.現(xiàn)有方法中,通常使用單一預測模型或者是使用組合模型對不同預測結(jié)果進行權(quán)重集成,雖然有一定性能提升,但并未根本解決較差模型的短板影響.基于此,本文提出一種使用卷積網(wǎng)絡與支持向量機相結(jié)合的預測算法,將卷積網(wǎng)絡的特征學習能力與支持向量機的回歸擬合能力結(jié)合,利用圖卷積建模拓撲結(jié)構(gòu)的空間維特征,同時利用遺傳算法改善支持向量機的參數(shù)優(yōu)化.從特征建模與擬合回歸兩方面提升現(xiàn)有方法預測能力.
定義1(拓撲映射)容器云平臺應用集群的資源負載隨業(yè)務邏輯調(diào)用及時序演變呈非線性動態(tài)變化,將結(jié)點間的拓撲關(guān)聯(lián)映射為圖結(jié)構(gòu)數(shù)據(jù),用無向圖G=(V,E)表示,V是結(jié)點集,結(jié)點個數(shù)|V|=N,E為邊集,代表結(jié)點間拓撲連接.
定義2(時序數(shù)據(jù))結(jié)點監(jiān)測M個云資源指標(包含CPU、Memory等)的時間序列數(shù)據(jù),即結(jié)點在特定時間切片產(chǎn)生M維特征向量.用三元組
x(v,m,τ)表示結(jié)點v的m維指標在時刻τ的監(jiān)測記錄,其中v為結(jié)點標識,m∈M為特征標識,τ為時間標識.用t=[tstart,tend)表示某個時間區(qū)間,Δt=tend-tstart為區(qū)間長度,則在t時段內(nèi),所有結(jié)點的第m維指標監(jiān)測序列記錄表示為張量Xm=
|{x(v,m,τ)|x.v∈N∧x.m=m∧x.τ∈t}|.用
Xτ=|{x(v,m,τ)|x.v∈N∧x.m∈M∧x.τ=τ}|
表示所有結(jié)點的所有監(jiān)測指標在時刻τ的記錄值.
定義3(滑動窗口)利用滑動窗口采集歷史時間序列記錄,將moveGAP[tstart,Δt]=Xm(tstart為起始記錄,Δt為窗口長度)稱為m維指標的Δt滑動采集窗口.
定義4(問題定義)本文的預測任務為,依據(jù)應用集群歷史時序片段的資源使用記錄值,預測未來時間窗口TP的資源使用需求.記當前時刻為t0,用X=(Xt0-Th+1,Xt0-Th+2,…,Xt0)∈Th×N×M表示所有結(jié)點在歷史區(qū)間Th的記錄值,用Y=(Xt0+1,Xt0+2,…,Xt0+Tp)∈Tp×N×M表示所有結(jié)點在未來區(qū)間Tp的待預測值,則本文的目標是學習如公式(1)所示的映射模型f(·).
(Xt0+1,Xt0+2,…,Xt0+Tp)
(1)
數(shù)據(jù)準備:云資源時序數(shù)據(jù)的待預測時段隨集群業(yè)務負載變化而與其近期、日周期、周周期片段產(chǎn)生關(guān)聯(lián),滑動窗口依據(jù)規(guī)律特性從三個維度采集序列數(shù)據(jù).假設結(jié)點監(jiān)測的采樣頻率為每天l次,用χr表示從近期片段采集的時序數(shù)據(jù),即與預測窗口直接相鄰的時序片段,則有χr=moveGAP[tstart,Δt](tstart=t0-Tr),其中Δt=Tr為近期片段長度;用χd表示按日周期規(guī)律采集的時序數(shù)據(jù),即與預測窗口相鄰日期的同時段數(shù)據(jù),則有χd=moveGAP[tstart,Δt](tstart=t0-(Td/Tp)×l,t0-(Td/Tp-1)×l,…,t0-l),其中Δt=Tp,Td為日周期片段總長,采集步長為l;用χw表示按周周期規(guī)律采集的時序數(shù)據(jù),即在預測窗口相鄰周內(nèi)同星期且同時段屬性的數(shù)據(jù),則有χw=moveGAP[tstart,Δt](tstart=t0-(Tw/Tp)×7×l,t0-(Tw/Tp-1)×7×l,…,t0-7×l),其中Δt=Tp,Tw為周周期片段總長,采集步長為7×l.Tr、Td及Tw均為預測窗口Tp的整數(shù)倍.將三個維度的采集片段作為原始輸入,確保模型充分捕獲時間維特征.則模型的輸入數(shù)據(jù)X及歷史區(qū)間Th可由公式(2)、(3)表示.
Th=Tr+Td+Tw
(2)
X=[χr,χd,χw]∈Th×N×M
(3)
本文通過圖卷積建模云資源拓撲結(jié)構(gòu)的空間維特征,刻畫鄰近結(jié)點的信息聚合,再沿時間軸卷積,捕獲序列數(shù)據(jù)的時間維依賴,通過多個圖卷積與時間維卷積的堆疊網(wǎng)絡學習特征表示.
現(xiàn)有的圖卷積神經(jīng)網(wǎng)絡主要有兩類:譜圖方法和空間方法.本文通過譜圖方法在譜域定義圖卷積.譜圖方法概括說就是利用圖的拉普拉斯矩陣的特征值和特征向量研究圖的性質(zhì),通過對譜空間的信號做傅里葉變換實現(xiàn)卷積操作,而傅里葉變換的定義依賴于拉普拉斯矩陣[16].無向圖G的拉普拉斯矩陣的一般定義為L=D-A,其中D是頂點的度矩陣,為對角矩陣,對角線上的元素依次為各個頂點的度,A是鄰接矩陣.
gθ*Gx=gθ(L)x=gθ(UΛUT)x=
Ugθ(Λ)UTx
(4)
youtput=σ(Ugθ(Λ)UTx)
(5)
其中,gθ(Λ)=diag([Θ0,…,ΘN-1]),卷積核參數(shù)通過初始化賦值然后利用反向傳播進行調(diào)整.因為非線性變換在非歐空間數(shù)據(jù)的圖結(jié)構(gòu)中作用有限,使得圖卷積操作發(fā)揮作用的是每一層的特征傳播機制[18],所以本文放棄層之間的非線性變換,即將特征傳播融合到一個層內(nèi),進行維度變換后再由激活函數(shù)作用在聚合結(jié)果上.σ(·)是激活函數(shù),本文使用線性修正單元ReLU.youtput即為卷積層輸出,刻畫鄰近節(jié)點的信息聚合.但是由于每一次前向傳播都要進行譜分解及計算大規(guī)模的矩陣乘積,代價較高,所以本文采用切比雪夫多項式進行近似求解[17]:
(6)
gθ*Gx≈
θ0x+θ1(L-IN)x+θ2(2(L-IN)2-IN)x
(7)
簡化計算以K=2為例,卷積操作表示為:
gθ*Gx≈θ0x+θ1(L-IN)x=
(8)
(9)
經(jīng)過圖卷積建立結(jié)點數(shù)據(jù)間的空間相關(guān)性,再由標準卷積提取隱藏的時間維特征信息,組成一個時間圖卷積模塊,由多個時間圖卷積結(jié)構(gòu)堆疊形成卷積網(wǎng)絡層,如圖1所示.
圖1 時間圖卷積結(jié)構(gòu)
以x∈N×Hi×Ti代表一層時間圖卷積模塊的輸入,Hi代表結(jié)點的輸入特征維度,Ti為輸入時間維長度,用N×Ho×To表示該層時間圖卷積的輸出,也即為下一層的輸入,Ho與To分別為輸出特征維度與時間維長度,則一個時間圖卷積模塊的形式化定義為:
(10)
其中,σ(·)是時間維卷積單元的激活函數(shù),本文使用修正線性單元ReLU.Γ*為時間維卷積操作.gθ∈K×Hi×Ho為待學習的圖卷積核參數(shù).結(jié)點特征由Hi維轉(zhuǎn)化到Ho維.時間維卷積示意圖如圖2所示.使用訓練好的時間圖卷積模型對原始輸入數(shù)據(jù)進行特征提取,進行維度轉(zhuǎn)換后從全連接層提取特征數(shù)據(jù)輸入支持向量回歸機(Support Vector Regression,SVR)完成回歸訓練.
圖2 時間維卷積示意圖
將經(jīng)過多層時間圖卷積獲得的特征向量送入支持向量回歸機(SVR)訓練,在過擬合時利用主成分分析降低特征向量維數(shù).實驗中發(fā)現(xiàn)特征提取相比SVR調(diào)參對預測結(jié)果的影響更大,而時間圖卷積模塊確保了特征提取不會成為提高準確率的瓶頸.
(11)
s.t.ω·φ(xi)+bi-yi≤+ξi,
yi-(ω·φ(xi)+bi)≤
ω,b是待確定的目標模型參數(shù),分別為回歸模型中的權(quán)重向量與偏置量,φ(x)為映射函數(shù),C為正則化常數(shù),對結(jié)構(gòu)風險和經(jīng)驗風險進行折中,
ω·φ(xi)+bi為模型估計,yi為真實輸出.面對該類二次規(guī)劃問題,通過引入拉格朗日乘子求得上式對應拉格朗日函數(shù),繼而代入模型參數(shù)與松弛變量的偏導等式得其對偶問題,依據(jù)Karush-Kuhn-Tucker條件,解得拉格朗日乘子,即可通過下式解得模型偏置量b,可取多個樣本得其平均值:
b*=yi+
(12)
κ(x,xi)=μκRBF(x,xi)+(1-μ)κPOLY(x,xi)
(13)
(14)
κPOLY(x,xi)=(xTxi)d
(15)
其中,μ為權(quán)值系數(shù),d≥1為多項式次數(shù),ρ為帶寬.SVR的決策回歸函數(shù)為:
(16)
參數(shù)的選擇對模型的預測精準度與泛化能力有著重要影響,相對于文獻[8]的主觀取參方式,本文結(jié)合云資源序列的非線性與復雜性特點,利用遺傳算法(Genetic Algorithm,GA)進行參數(shù)尋優(yōu).
GA尋優(yōu)的SVR參數(shù)包括:懲罰參數(shù)C、核函數(shù)系數(shù)ρ、多項式核最高次項次數(shù)d、核函數(shù)組合權(quán)值系數(shù)μ.算法步驟描述如下:
(1)初始化種群.隨機生成初始群體,以C、ρ、d、μ參數(shù)作為基因構(gòu)建n個染色體,采用多參數(shù)級聯(lián)拼接方式,懲罰參數(shù)C和核函數(shù)帶寬ρ使用間接二進制編碼,去除小數(shù)點與符號位,避免交叉變異結(jié)果出現(xiàn)一串基因兩位符號位或小數(shù)點.次數(shù)d和權(quán)值系數(shù)μ采用格雷碼編碼.指定參數(shù)尋優(yōu)區(qū)間
C∈[2-8,28],ρ∈[2-8,28],d∈[1,3],μ∈
[0.1,0.9].當前迭代次數(shù)t←1,最大迭代次數(shù)
T=200.
(2)依據(jù)各條染色體基因編碼中的參數(shù)在訓練集上訓練SVR模型,采用式(17)的均方誤差作為適應度函數(shù)進行評估并排序,淘汰后10%個體,依據(jù)適應度大小按梯度選擇復制,保持個體總數(shù)不變.
(17)
式(17)中:S為評估樣本數(shù)目,fi為模型預測值,yi為真實值,γ為適應度.
(3)從種群隨機選擇2個染色體作為親代染色體,每個染色體的選擇概率依據(jù)式(18)計算.
(18)
式(18)中:p1(i)表示被選為親代染色體的概率,γi為適應度值.
(4)將親代染色體進行基因交叉重組,交叉算子如下:
(19)
(20)
(21)
(22)
式(22)中:γi為突變個體適應度值,β2為調(diào)節(jié)因子.
t←t+1,若t≤T,則執(zhí)行步驟2;否則執(zhí)行步驟6.
(6)將當前種群中最佳適應度染色體的基因編碼作為最優(yōu)解解碼輸出,即得C、ρ、d、μ的最優(yōu)參數(shù)值,依此在訓練集訓練最終的SVR預測模型.
遺傳算法具備自適應和自學習性,其從問題解域搜索的并行化實現(xiàn)使得在參數(shù)尋優(yōu)中避免了陷入局部最優(yōu)的風險.
為了驗證本文模型的有效性,本節(jié)介紹實驗設置以及與其他模型的對比分析.
本文使用Google云公開數(shù)據(jù)集,數(shù)據(jù)來自Google云計算中心Borg集群計算單元的工作負載.CusterData2019數(shù)據(jù)集提供了2019年5月8個cells跨度30天的資源請求、調(diào)度與任務記錄,單個cell包含12 500臺機器,672 000個作業(yè),去除了終端用戶對存儲系統(tǒng)的訪問模式等額外數(shù)據(jù).數(shù)據(jù)集中的CPU使用信息依據(jù)5 m一個周期的頻率采樣匯總,同時包含帶時間戳的內(nèi)存、帶寬等多維特征信息.本文篩選計算節(jié)點的數(shù)據(jù)子集作為需求序列信息,以前25天作為訓練集,后5天作為測試集.
對輸入數(shù)據(jù)進行預處理.利用線性插值法填補空缺值,為了使模型性能不受大規(guī)模輸入樣本影響,再通過中心化和歸一化得到均值為0的規(guī)范化輸入.模型的訓練和測試采用深度學習框架Pytorch.卷積網(wǎng)絡參數(shù)設置如表1所示.
表1 實驗參數(shù)
實驗中對切比雪夫多項式系數(shù)K∈{1,2,3}分別取值測試,預測誤差隨K值增大而減小,鄰居節(jié)點超過3階后卷積聚合不滿足局部性要求.圖卷積與時間維卷積均采用32個濾波器進行局部特征提取,以3個時間維周期采樣片段作為3個通道(channel),通過調(diào)整步長改變序列長度.學習率在對數(shù)尺度進行取樣.優(yōu)化算法采用小批量梯度下降(mini-batch gradient descent),實驗中批處理大小(batch_size)取值過小其損失值隨迭代會震蕩式下降,故取樣測試后在2的冪次方尺度以64為最佳.遺傳算法獲取的SVR最佳超參數(shù)分別為C=105.32,ρ=0.89,d=2,μ=0.6.尋優(yōu)過程中的適應度函數(shù)變化曲線如圖3所示.
圖3 遺傳算法優(yōu)化參數(shù)適應度曲線變化圖
圖中平均適應度在種群進化后期收斂到值域為[0.02,0.03]的小幅波動區(qū)間,最佳適應度在20代之后趨于穩(wěn)定.
本文針對云資源預測模型的改進主要立足于支持向量回歸與卷積網(wǎng)絡的結(jié)合,具體創(chuàng)新點為融合圖卷積的空間維建模以及對SVR的GA尋參優(yōu)化.因此,本文基于支持向量回歸和卷積神經(jīng)網(wǎng)絡分別選擇對比模型,包括:本文提出的新的預測模型;本文未融合圖卷積網(wǎng)絡結(jié)構(gòu)的(CNN-SVM);文獻[8]未進行GA尋優(yōu)的支持向量機(SVM)模型;以及進行泛化對比的經(jīng)典時序預測算法ARIMA、LSTM.
因為容器云平臺的計算資源管理主要針對CPU與Memory進行,超過使用閾值即進行擴縮容響應,所以對比試驗針對CPU利用率與Memory使用量序列進行預測研究.使用均方根誤差(RMSE)、平均絕對誤差(MAE)、平均絕對值百分比誤差(MAPE)、平均均方誤差(MSE)評估對比模型,計算式如下:
(23)
(24)
(25)
(26)
式(23)~(26)中:n為預測樣本數(shù),yi為實際值,fi為預測值.
各模型在測試數(shù)據(jù)集上對未來2 h每隔5 min的單步預測結(jié)果對比見圖4和圖5所示,以original表示原始數(shù)據(jù),ours為本文模型.
圖4 各模型CPU預測結(jié)果對比
圖5 各模型內(nèi)存預測結(jié)果對比
從圖4和圖5的實驗結(jié)果可以觀察到,所有算法與原始序列的趨勢基本一致,本文模型相比其他算法,取得了更加理想的擬合效果.同時也可以看到,CPU序列數(shù)據(jù)起伏波動較大,各算法相比內(nèi)存序列在轉(zhuǎn)折點處預測偏差更為明顯.為了進一步量化對比結(jié)果,各模型具體誤差統(tǒng)計見圖6和圖7所示.
圖6 CPU預測誤差對比
圖7 內(nèi)存預測誤差對比
從圖6和圖7可以更清楚地看到,在CPU和內(nèi)存序列的預測中,本文模型相比其他方法具有更低的預測誤差,且融合圖卷積與GA優(yōu)化的效果反映在圖中表現(xiàn)為對CNN-SVM和SVM的明顯精度優(yōu)勢,這說明本文的改進思路是有效的.但是也應當注意到,面對隨機性更強且波動劇烈的CPU序列,各模型的預測穩(wěn)定性顯著降低,本文模型也出現(xiàn)了較為明顯的精度波動,且相較于內(nèi)存序列優(yōu)勢減小,這說明面對弱平穩(wěn)的不規(guī)則波動,本文模型依然存在可優(yōu)化空間,這也是未來的工作方向.各模型的詳細誤差指標如表2和表3所示.
表2 預測性能對比(CPU)/10-2
表3 預測性能對比(內(nèi)存)
云資源預測主要針對未來一段時間的變化趨勢進行分析,單步預測結(jié)果只能描述下一時刻的資源變化情況,為了檢驗本文方法的泛化能力,每隔6、12、18個原始采集點分別求取平均,以此構(gòu)建30 min、60 min、90 min間隔的資源序列作為新的訓練樣本,在測試集的多步預測結(jié)果如表4和表5所示.
表4 不同間隔步長的預測性能(CPU)/10-2
表5 不同間隔步長的預測性能(內(nèi)存)
從表中可以看到,隨時間間隔增加,預測難度越來越大,但本文模型在不同步長依然保持較低的預測誤差,能夠穩(wěn)定地描述資源的多步變化趨勢,證明了模型的可靠性與穩(wěn)健性,且具備一定的泛化能力.這為實際云場景中通過多步需求預測為基礎平臺的彈性承載力賦能提供了重要指導意義.
本文提出一種基于卷積網(wǎng)絡與支持向量回歸的云資源預測模型,該模型結(jié)合圖卷積與標準卷積提取網(wǎng)絡拓撲下的時序數(shù)據(jù)特征,并利用遺傳算法優(yōu)化SVR預測性能.在谷歌云計算中心數(shù)據(jù)集上的實驗表明,本文模型相比傳統(tǒng)時序預測方法提高了預測精度與穩(wěn)定性,提升了容器云平臺的資源分配與調(diào)度效率.