林 濤,馮競凱,郝章肖,黃少群
(1.河北工業(yè)大學(xué)人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津 300401;2.哈爾濱商業(yè)大學(xué)管理學(xué)院,黑龍江 哈爾濱 150000)
隨著云計算技術(shù)的發(fā)展,虛擬化技術(shù)已經(jīng)成為云計算領(lǐng)域不可或缺的一部分,將應(yīng)用部署到云端已經(jīng)成為業(yè)界越來越普遍的做法[1]。如何使云計算環(huán)境提供良好的服務(wù)質(zhì)量QoS(Quality of Service)已經(jīng)成為云服務(wù)提供者必須考慮的一個問題[2]。近幾年,越來越多的云應(yīng)用呈現(xiàn)出高并發(fā)、大流量的特征,并且對于服務(wù)器來說應(yīng)用程序請求數(shù)量會隨著時間變化而變化。針對這一問題,云計算調(diào)度系統(tǒng)采用負(fù)載預(yù)測的方式進(jìn)行資源配置[3,4]。因此,負(fù)載預(yù)測技術(shù)在云計算資源彈性伸縮中至關(guān)重要。
目前,針對云計算環(huán)境中的資源負(fù)載預(yù)測問題,國內(nèi)外一些學(xué)者提出了多種解決方案和負(fù)載預(yù)測模型。這些預(yù)測模型一般將云計算資源負(fù)載看作一種時間序列,然后通過一定的建模方法對其進(jìn)行預(yù)估[5]。目前的負(fù)載預(yù)測模型可以分為2類:單一預(yù)測模型和基于集成學(xué)習(xí)的組合預(yù)測模型[6]。文獻(xiàn)[7]使用ARIMA(Auto-Regressive Integrated Moving Average)負(fù)載預(yù)測模型對虛擬機(jī)集群的負(fù)載進(jìn)行收集及預(yù)測。隨著人工神經(jīng)網(wǎng)絡(luò)的發(fā)展,越來越多的人工神經(jīng)網(wǎng)絡(luò)方法被應(yīng)用到時間序列預(yù)測當(dāng)中。文獻(xiàn)[8]對LSTM(Long Short-Term Memory)負(fù)載預(yù)測模型與ARIMA預(yù)測模型進(jìn)行了比較分析,從結(jié)果可以看出,LSTM負(fù)載預(yù)測模型優(yōu)于ARIMA負(fù)載預(yù)測模型。文獻(xiàn)[9]通過優(yōu)化支持向量機(jī)構(gòu)建負(fù)載預(yù)測模型,對單步與多步云計算資源負(fù)載進(jìn)行預(yù)測分析。文獻(xiàn)[10]使用遞歸神經(jīng)網(wǎng)絡(luò)RNN(Recursive Neural Network)來實現(xiàn)對云工作負(fù)荷的預(yù)測,通過Google Cloud Trace數(shù)據(jù)集上的實驗驗證了該方法的準(zhǔn)確性。以上負(fù)載預(yù)測模型均使用的是單一方法的負(fù)載預(yù)測形式。文獻(xiàn)[11]首先使用ARMA模型(Auto-Regressive and Moving Average model)進(jìn)行預(yù)測,再使用ENN模型(Elman Neural Network model)對ARMA誤差進(jìn)行預(yù)測,最終得到修正后的預(yù)測值。該文獻(xiàn)提出的組合預(yù)測模型有效地提升了云環(huán)境中工作負(fù)載預(yù)測的精度。文獻(xiàn)[6]采用多模型融合的方式進(jìn)行了云計算資源負(fù)載預(yù)測,將負(fù)載數(shù)據(jù)集分為訓(xùn)練集與測試集,利用ARIMA、指數(shù)平滑法、神經(jīng)網(wǎng)絡(luò)等預(yù)測模型根據(jù)訓(xùn)練集的平均均方誤差對測試集各預(yù)測結(jié)果進(jìn)行權(quán)重劃分,最后得到組合預(yù)測值。文獻(xiàn)[12]采用了ARIMA-ANN的組合預(yù)測模型,分別對時間序列數(shù)據(jù)進(jìn)行線性和非線性的預(yù)測,并將最終結(jié)果組合。實驗結(jié)果表明,混合模型均具有更高的預(yù)測精度。
當(dāng)前在云計算節(jié)點中運行的服務(wù)多種多樣,對資源的需求各不相同,因此在運行過程中負(fù)載時間序列數(shù)據(jù)通常具有線性與非線性的復(fù)合特征?,F(xiàn)有的預(yù)測模型通常使用單一預(yù)測模型,或者使用不同預(yù)測模型的預(yù)測結(jié)果進(jìn)行權(quán)重集成的方式得到最終預(yù)測值。雖然以上2種方式在預(yù)測精度上有所提升,但是并沒有從根本上解決較差模型對最終結(jié)果的影響。因此,本文將LSTM與ARIMA相結(jié)合提出一種新型預(yù)測模型LACL(LSTM-ARIMA-Critic-LSTM)。該模型首先分別通過LSTM預(yù)測模型與ARIMA預(yù)測模型對未來工作負(fù)載進(jìn)行預(yù)測;其次運用客觀賦權(quán)法中的CRITIC(CRiteria Importance Through Intercrieria Correlation)方法[13,14]將2個預(yù)測模型的預(yù)測結(jié)果進(jìn)行加權(quán)累加,得到組合預(yù)測結(jié)果,同時得到歷史負(fù)載數(shù)據(jù)預(yù)測誤差數(shù)據(jù)集;最后使用LSTM模型對組合預(yù)測模型的誤差進(jìn)行預(yù)測,最終得到一個誤差修正后的預(yù)測值。
本文主要解決的是云計算環(huán)境中主機(jī)負(fù)載預(yù)測問題。假設(shè)歷史負(fù)載數(shù)據(jù)L={l1,l2,…,lt},其中l(wèi)t為t時刻集群的負(fù)載情況。從L中選取m個時刻的數(shù)據(jù)作為預(yù)測模型的輸入向量M=(lt-m+1,…,lt-1,lt)。負(fù)載預(yù)測就是通過輸入向量M預(yù)測t+1時刻的集群負(fù)載。
隨著在云計算環(huán)境中部署的服務(wù)越來越復(fù)雜,負(fù)載時序序列既不是純線性的也不是非線性的,一般包含了2種結(jié)構(gòu)的組合。并且單一預(yù)測模型在捕獲復(fù)雜負(fù)載時序序列模式方面具有一定的局限性,相比之下組合預(yù)測模型具有更穩(wěn)定的預(yù)測性能。同時,對于較差單一預(yù)測模型對最終結(jié)果的影響,本文在組合預(yù)測的基礎(chǔ)上提出了一種誤差修正的思想,進(jìn)一步提升了負(fù)載預(yù)測的準(zhǔn)確性。
負(fù)載是對服務(wù)器工作狀態(tài)的一種描述,反映當(dāng)前服務(wù)器任務(wù)處理的壓力。本文主要考慮內(nèi)存使用率與CPU使用率2個因素對集群負(fù)載的影響。采用動態(tài)負(fù)載模型,充分考慮在不同資源需求情況下這2個因素對負(fù)載的影響。在單個節(jié)點中負(fù)載計算如式(1)和式(2)所示:
L=WmemLmem+WcpuLcpu
(1)
Wmem+Wcpu=1
(2)
其中,L指計算機(jī)集群中某臺虛擬主機(jī)的負(fù)載計算值,Lmem、Lcpu為內(nèi)存使用率與CPU使用率,Wmem、Wcpu分別為內(nèi)存使用率與CPU使用率的權(quán)重系數(shù)。
ARIMA可以用來對時間序列進(jìn)行預(yù)測,常被用于需求預(yù)測中。ARIMA(p,d,q)模型是一種綜合模型,它將自回歸AR(Auto Regressive)模型和移動平均MA(Moving Average)模型都包含在時間序列組合模型中。其中,d是差分階數(shù),是為得到平穩(wěn)時間序列所做的差分次數(shù);p是自回歸項;q為相應(yīng)的移動平均項數(shù)。ARIMA基本公式如式(3)所示:
(3)
其中,Lt為t時刻集群負(fù)載值;φ、θ分別為自回歸(AR)參數(shù)與移動平均(MA)參數(shù);p為自回歸模型的階數(shù);q為移動平均模型階數(shù);ε為殘差序列。
模型建立過程如圖1所示。
Figure 1 Modeling flow chart of ARIMA圖1 ARIMA模型建模流程圖
(1) 數(shù)據(jù)分析與平穩(wěn)性校驗。云計算負(fù)載在局部可能會呈現(xiàn)較大的波動或存在周期性規(guī)律,因此需要對原始數(shù)據(jù)進(jìn)行平滑處理和周期性分解處理。經(jīng)處理后的數(shù)據(jù)可能還會存在較大的波動,在預(yù)測前還需要反復(fù)進(jìn)行平穩(wěn)性處理。常使用差分的方式進(jìn)行平穩(wěn)化處理。本文使用ADF(Augmented Dickey-Fuller)來檢測數(shù)據(jù)是否具有平穩(wěn)性。
(2) 模型識別與參數(shù)估計。構(gòu)建自相關(guān)系數(shù)ACF(AutoCorrelation Function)與偏自相關(guān)系數(shù)PACF(Partial AutoCorrelation Function)圖形,根據(jù)自相關(guān)系數(shù)的拖尾特征、偏自相關(guān)系數(shù)的截尾特征確定ARIMA模型中的p與q值。若自相關(guān)系數(shù)曲線衰減的同時偏自相關(guān)系數(shù)曲線截斷,則使用AR模型;若自相關(guān)系數(shù)曲線截斷的同時偏自相關(guān)系數(shù)曲線衰減,則使用MA模型。
(3) 有效性驗證與模型獲取。當(dāng)參數(shù)確定后,便可以進(jìn)行ARIMA模型的構(gòu)建,此外,可以根據(jù)參數(shù)確定時得到的估計值,嘗試多種p,d,q參數(shù)的組合來改進(jìn)模型。最后通過最低貝葉斯信息準(zhǔn)則BIC(Bayesian Information Criterion)和最小赤池信息量準(zhǔn)則AIC(Akaike Information Criterion)確定最佳預(yù)測模型。
長短期記憶網(wǎng)絡(luò)(LSTM)是遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的變形。RNN存在梯度爆炸或消失問題,LSTM引入一個新的內(nèi)部狀態(tài)ct專門進(jìn)行線性的循環(huán)信息傳遞,同時引入門機(jī)制來控制信息傳遞的路徑,分別為輸入門it、遺忘門ft和輸出門ot。3個門、細(xì)胞記憶狀態(tài)、隱藏層的計算方式為:
it=σ(ωixt+uiht-1+bi)
(4)
ft=σ(ωfxt+ufht-1+bf)
(5)
ot=σ(ωoxt+uoht-1+bo)
(6)
ct=ft⊙ct-1+it⊙tanh(ωixt+ucht-1+bc)
(7)
ht=ot⊙tanh(ct)
(8)
其中,σ()為logistic函數(shù),其輸出區(qū)間為(0,1),⊙為向量元素乘積,tanh()為激活函數(shù),xt為當(dāng)前時刻的輸入,ht-1與ht分別為上一時刻與當(dāng)前時刻外部狀態(tài),ω*、u*和b*為學(xué)習(xí)的網(wǎng)絡(luò)參數(shù)。
LSTM循環(huán)單元計算過程為:首先,利用上一時刻的外部狀態(tài)ht-1和當(dāng)前時刻的輸入xt,根據(jù)式(5)~式(8)計算出3個門狀態(tài)以及候選狀態(tài)。之后,結(jié)合遺忘門ft和輸入門it來更新記憶單元ct。最后,結(jié)合輸出門ot,將內(nèi)部狀態(tài)的信息傳遞給外部狀態(tài)ht。
本文采用平均絕對誤差(MAE)、平均絕對值百分比誤差(MAPE)、平均均方誤差(MSE)、均方根誤差(RMASE)和決定系數(shù)(R2)來對預(yù)測結(jié)果進(jìn)行評價,其計算方式如式(9)~式(13)所示:
(9)
(10)
(11)
(12)
(13)
綜合考慮ARIMA預(yù)測模型對于非線性時間序列擬合不夠準(zhǔn)確,使用簡單神經(jīng)網(wǎng)絡(luò)對于線性與非線性的處理表現(xiàn)不夠充分等問題,本文提出一種基于ARIMA與LSTM的組合預(yù)測模型,具體模型如圖2所示。
Figure 2 Combined forecasting model圖2 組合預(yù)測模型
基于組合預(yù)測模型的預(yù)測步驟如下所示:
(1) 時序負(fù)載數(shù)據(jù)獲取。根據(jù)式(1)~式(3)考慮實際生產(chǎn)中集群服務(wù)從創(chuàng)建到部署完成時間在3~5 min,因此采集時間間隔為5 min、長度為n的云計算集群負(fù)載時間序列數(shù)據(jù)集LT={l1,l2,…,ln}(本文中所有下標(biāo)“T”或上標(biāo)“T”都是Ture的縮寫,表示實際負(fù)載數(shù)據(jù))。
為了驗證本文提出的云計算資源負(fù)載預(yù)測模型的有效性,使用The Grid Workloads Archive[15]網(wǎng)站提供的公開數(shù)據(jù)集,對其進(jìn)行實驗驗證。采用Materna提供的負(fù)載時序數(shù)據(jù),該數(shù)據(jù)集每隔5 min記錄一條網(wǎng)格工作負(fù)載。
本次仿真實驗的預(yù)測方法均采用Python編程,并在物理服務(wù)器下獨立運行,物理服務(wù)器相關(guān)配置信息如表1所示。
Table 1 Physical server configuration information
為了檢驗和評價本文提出的負(fù)載預(yù)測模型(LACL)的性能,本文將其與ARIMA、BP、SVM、LSTM單一模型進(jìn)行了對比,同時還與文獻(xiàn)[12]提出的ARIMA-ANN(A-ANN)組合預(yù)測模型以及本文沒有經(jīng)過誤差修正的預(yù)測模型(LAC)進(jìn)行了對比實驗。使用過去1小時的數(shù)據(jù)預(yù)測未來5分鐘的數(shù)據(jù)。結(jié)合經(jīng)驗與多次實驗對比設(shè)置的單步負(fù)載預(yù)測模型相關(guān)參數(shù)如表2所示。
Table 2 Forecasting model parameters
從數(shù)據(jù)集中選取2015年11月5日至2015年11月15日,10天的實測工作負(fù)載值,通過分析負(fù)載數(shù)據(jù)設(shè)置CPU利用率與內(nèi)存利用率的權(quán)重分別為0.4和0.6,每隔5 min獲取一條負(fù)載數(shù)據(jù),共計2 880條數(shù)據(jù)記錄。選取前70%的數(shù)據(jù)作為訓(xùn)練集,20%的數(shù)據(jù)作為單步測試集,剩余數(shù)據(jù)用于驗證模型的泛化能力。根據(jù)式(1)和式(2)計算的具體負(fù)載數(shù)據(jù)如圖3所示。
Figure 3 History data of cloud computing recource load圖3 云計算資源負(fù)載歷史數(shù)據(jù)
各模型負(fù)載預(yù)測結(jié)果如圖4所示,同時表3給出了各個預(yù)測模型的預(yù)測誤差指標(biāo)。
Figure 4 Cloud computing resource forecasting results with different models圖4 各模型云計算負(fù)載預(yù)測結(jié)果對比
表3 預(yù)測性能對比
從圖3和圖4來看,所有模型和原始序列的趨勢基本一致,但是單一負(fù)載預(yù)測模型預(yù)測精度明顯不如組合預(yù)測模型。本文提出的負(fù)載預(yù)測模型相比于傳統(tǒng)的負(fù)載預(yù)測模型具有更高的準(zhǔn)確性。同時,從實驗結(jié)果可以看出,本文提出的LACL預(yù)測模型預(yù)測精度高于LAC預(yù)測模型的,說明在組合預(yù)測模型基礎(chǔ)上進(jìn)行預(yù)測值的誤差修正可明顯提高負(fù)載預(yù)測數(shù)據(jù)的準(zhǔn)確性。
云計算資源負(fù)載預(yù)測主要是對未來一段時間的云計算資源負(fù)載變化趨勢進(jìn)行分析,單步預(yù)測結(jié)果只能描述下一時刻集群中的負(fù)載情況。為了進(jìn)一步驗證所提模型的泛化能力,將原始資源負(fù)載序列每隔6個點求取平均構(gòu)造30 min間隔的云計算資源負(fù)載數(shù)據(jù),同理構(gòu)建60 min間隔的云計算負(fù)載數(shù)據(jù),并重新構(gòu)建相應(yīng)的LACL模型,預(yù)測曲線分別如圖5和圖6所示。其中,圖5中每條負(fù)載數(shù)據(jù)之間的時間間隔是30 min,圖6中每條負(fù)載數(shù)據(jù)之間的時間間隔是60 min。
Figure 5 Workload forecasting with an interval of 30 minites圖5 30 min間隔負(fù)載預(yù)測
Figure 6 Workload forecasting with an interval of 60 minites圖6 60 min間隔負(fù)載預(yù)測
對于30 min與60 min間隔預(yù)測結(jié)果的詳細(xì)誤差結(jié)果如表4所示。
Table 4 Forecasting performance at different time intervals
通過預(yù)測結(jié)果可以看出,在不同時間間隔情況下,本文提出的模型均能較準(zhǔn)確地預(yù)測云計算資源負(fù)載值,可見所提預(yù)測模型具有一定的泛化能力。
針對復(fù)雜多變的云計算負(fù)載時序數(shù)據(jù),本文綜合考慮服務(wù)器CPU與內(nèi)存對負(fù)載的影響,提出了一種基于LSTM與ARIMA進(jìn)行誤差修正的組合預(yù)測模型(LACL)。該模型首先分別利用ARIMA與LSTM預(yù)測模型進(jìn)行負(fù)載預(yù)測。之后利用CRITIC客觀賦權(quán)法將兩模型的預(yù)測結(jié)果進(jìn)行加權(quán)組合。同時根據(jù)真實誤差對未來誤差進(jìn)行預(yù)測,通過對組合預(yù)測結(jié)果進(jìn)行誤差修正得到最終的預(yù)測結(jié)果。通過使用公開數(shù)據(jù)集進(jìn)行實驗的結(jié)果表明,本文所提的預(yù)測模型具有較好的預(yù)測精度,同時也具有一定的泛化能力,可以準(zhǔn)確預(yù)測云計算中心負(fù)載的變化趨勢,將所提模型運用到云計算中心負(fù)載預(yù)測與管理中可以有效提高云計算中心的網(wǎng)絡(luò)資源利用率。