林 濤,馮競凱,郝章肖,黃少群
(1.河北工業(yè)大學人工智能與數(shù)據(jù)科學學院,天津 300401;2.哈爾濱商業(yè)大學管理學院,黑龍江 哈爾濱 150000)
隨著云計算技術的發(fā)展,虛擬化技術已經(jīng)成為云計算領域不可或缺的一部分,將應用部署到云端已經(jīng)成為業(yè)界越來越普遍的做法[1]。如何使云計算環(huán)境提供良好的服務質量QoS(Quality of Service)已經(jīng)成為云服務提供者必須考慮的一個問題[2]。近幾年,越來越多的云應用呈現(xiàn)出高并發(fā)、大流量的特征,并且對于服務器來說應用程序請求數(shù)量會隨著時間變化而變化。針對這一問題,云計算調(diào)度系統(tǒng)采用負載預測的方式進行資源配置[3,4]。因此,負載預測技術在云計算資源彈性伸縮中至關重要。
目前,針對云計算環(huán)境中的資源負載預測問題,國內(nèi)外一些學者提出了多種解決方案和負載預測模型。這些預測模型一般將云計算資源負載看作一種時間序列,然后通過一定的建模方法對其進行預估[5]。目前的負載預測模型可以分為2類:單一預測模型和基于集成學習的組合預測模型[6]。文獻[7]使用ARIMA(Auto-Regressive Integrated Moving Average)負載預測模型對虛擬機集群的負載進行收集及預測。隨著人工神經(jīng)網(wǎng)絡的發(fā)展,越來越多的人工神經(jīng)網(wǎng)絡方法被應用到時間序列預測當中。文獻[8]對LSTM(Long Short-Term Memory)負載預測模型與ARIMA預測模型進行了比較分析,從結果可以看出,LSTM負載預測模型優(yōu)于ARIMA負載預測模型。文獻[9]通過優(yōu)化支持向量機構建負載預測模型,對單步與多步云計算資源負載進行預測分析。文獻[10]使用遞歸神經(jīng)網(wǎng)絡RNN(Recursive Neural Network)來實現(xiàn)對云工作負荷的預測,通過Google Cloud Trace數(shù)據(jù)集上的實驗驗證了該方法的準確性。以上負載預測模型均使用的是單一方法的負載預測形式。文獻[11]首先使用ARMA模型(Auto-Regressive and Moving Average model)進行預測,再使用ENN模型(Elman Neural Network model)對ARMA誤差進行預測,最終得到修正后的預測值。該文獻提出的組合預測模型有效地提升了云環(huán)境中工作負載預測的精度。文獻[6]采用多模型融合的方式進行了云計算資源負載預測,將負載數(shù)據(jù)集分為訓練集與測試集,利用ARIMA、指數(shù)平滑法、神經(jīng)網(wǎng)絡等預測模型根據(jù)訓練集的平均均方誤差對測試集各預測結果進行權重劃分,最后得到組合預測值。文獻[12]采用了ARIMA-ANN的組合預測模型,分別對時間序列數(shù)據(jù)進行線性和非線性的預測,并將最終結果組合。實驗結果表明,混合模型均具有更高的預測精度。
當前在云計算節(jié)點中運行的服務多種多樣,對資源的需求各不相同,因此在運行過程中負載時間序列數(shù)據(jù)通常具有線性與非線性的復合特征。現(xiàn)有的預測模型通常使用單一預測模型,或者使用不同預測模型的預測結果進行權重集成的方式得到最終預測值。雖然以上2種方式在預測精度上有所提升,但是并沒有從根本上解決較差模型對最終結果的影響。因此,本文將LSTM與ARIMA相結合提出一種新型預測模型LACL(LSTM-ARIMA-Critic-LSTM)。該模型首先分別通過LSTM預測模型與ARIMA預測模型對未來工作負載進行預測;其次運用客觀賦權法中的CRITIC(CRiteria Importance Through Intercrieria Correlation)方法[13,14]將2個預測模型的預測結果進行加權累加,得到組合預測結果,同時得到歷史負載數(shù)據(jù)預測誤差數(shù)據(jù)集;最后使用LSTM模型對組合預測模型的誤差進行預測,最終得到一個誤差修正后的預測值。
本文主要解決的是云計算環(huán)境中主機負載預測問題。假設歷史負載數(shù)據(jù)L={l1,l2,…,lt},其中l(wèi)t為t時刻集群的負載情況。從L中選取m個時刻的數(shù)據(jù)作為預測模型的輸入向量M=(lt-m+1,…,lt-1,lt)。負載預測就是通過輸入向量M預測t+1時刻的集群負載。
隨著在云計算環(huán)境中部署的服務越來越復雜,負載時序序列既不是純線性的也不是非線性的,一般包含了2種結構的組合。并且單一預測模型在捕獲復雜負載時序序列模式方面具有一定的局限性,相比之下組合預測模型具有更穩(wěn)定的預測性能。同時,對于較差單一預測模型對最終結果的影響,本文在組合預測的基礎上提出了一種誤差修正的思想,進一步提升了負載預測的準確性。
負載是對服務器工作狀態(tài)的一種描述,反映當前服務器任務處理的壓力。本文主要考慮內(nèi)存使用率與CPU使用率2個因素對集群負載的影響。采用動態(tài)負載模型,充分考慮在不同資源需求情況下這2個因素對負載的影響。在單個節(jié)點中負載計算如式(1)和式(2)所示:
L=WmemLmem+WcpuLcpu
(1)
Wmem+Wcpu=1
(2)
其中,L指計算機集群中某臺虛擬主機的負載計算值,Lmem、Lcpu為內(nèi)存使用率與CPU使用率,Wmem、Wcpu分別為內(nèi)存使用率與CPU使用率的權重系數(shù)。
ARIMA可以用來對時間序列進行預測,常被用于需求預測中。ARIMA(p,d,q)模型是一種綜合模型,它將自回歸AR(Auto Regressive)模型和移動平均MA(Moving Average)模型都包含在時間序列組合模型中。其中,d是差分階數(shù),是為得到平穩(wěn)時間序列所做的差分次數(shù);p是自回歸項;q為相應的移動平均項數(shù)。ARIMA基本公式如式(3)所示:
(3)
其中,Lt為t時刻集群負載值;φ、θ分別為自回歸(AR)參數(shù)與移動平均(MA)參數(shù);p為自回歸模型的階數(shù);q為移動平均模型階數(shù);ε為殘差序列。
模型建立過程如圖1所示。

Figure 1 Modeling flow chart of ARIMA圖1 ARIMA模型建模流程圖
(1) 數(shù)據(jù)分析與平穩(wěn)性校驗。云計算負載在局部可能會呈現(xiàn)較大的波動或存在周期性規(guī)律,因此需要對原始數(shù)據(jù)進行平滑處理和周期性分解處理。經(jīng)處理后的數(shù)據(jù)可能還會存在較大的波動,在預測前還需要反復進行平穩(wěn)性處理。常使用差分的方式進行平穩(wěn)化處理。本文使用ADF(Augmented Dickey-Fuller)來檢測數(shù)據(jù)是否具有平穩(wěn)性。
(2) 模型識別與參數(shù)估計。構建自相關系數(shù)ACF(AutoCorrelation Function)與偏自相關系數(shù)PACF(Partial AutoCorrelation Function)圖形,根據(jù)自相關系數(shù)的拖尾特征、偏自相關系數(shù)的截尾特征確定ARIMA模型中的p與q值。若自相關系數(shù)曲線衰減的同時偏自相關系數(shù)曲線截斷,則使用AR模型;若自相關系數(shù)曲線截斷的同時偏自相關系數(shù)曲線衰減,則使用MA模型。
(3) 有效性驗證與模型獲取。當參數(shù)確定后,便可以進行ARIMA模型的構建,此外,可以根據(jù)參數(shù)確定時得到的估計值,嘗試多種p,d,q參數(shù)的組合來改進模型。最后通過最低貝葉斯信息準則BIC(Bayesian Information Criterion)和最小赤池信息量準則AIC(Akaike Information Criterion)確定最佳預測模型。
長短期記憶網(wǎng)絡(LSTM)是遞歸神經(jīng)網(wǎng)絡(RNN)的變形。RNN存在梯度爆炸或消失問題,LSTM引入一個新的內(nèi)部狀態(tài)ct專門進行線性的循環(huán)信息傳遞,同時引入門機制來控制信息傳遞的路徑,分別為輸入門it、遺忘門ft和輸出門ot。3個門、細胞記憶狀態(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為當前時刻的輸入,ht-1與ht分別為上一時刻與當前時刻外部狀態(tài),ω*、u*和b*為學習的網(wǎng)絡參數(shù)。
LSTM循環(huán)單元計算過程為:首先,利用上一時刻的外部狀態(tài)ht-1和當前時刻的輸入xt,根據(jù)式(5)~式(8)計算出3個門狀態(tài)以及候選狀態(tài)。之后,結合遺忘門ft和輸入門it來更新記憶單元ct。最后,結合輸出門ot,將內(nèi)部狀態(tài)的信息傳遞給外部狀態(tài)ht。
本文采用平均絕對誤差(MAE)、平均絕對值百分比誤差(MAPE)、平均均方誤差(MSE)、均方根誤差(RMASE)和決定系數(shù)(R2)來對預測結果進行評價,其計算方式如式(9)~式(13)所示:
(9)
(10)
(11)
(12)
(13)

綜合考慮ARIMA預測模型對于非線性時間序列擬合不夠準確,使用簡單神經(jīng)網(wǎng)絡對于線性與非線性的處理表現(xiàn)不夠充分等問題,本文提出一種基于ARIMA與LSTM的組合預測模型,具體模型如圖2所示。

Figure 2 Combined forecasting model圖2 組合預測模型
基于組合預測模型的預測步驟如下所示:
(1) 時序負載數(shù)據(jù)獲取。根據(jù)式(1)~式(3)考慮實際生產(chǎn)中集群服務從創(chuàng)建到部署完成時間在3~5 min,因此采集時間間隔為5 min、長度為n的云計算集群負載時間序列數(shù)據(jù)集LT={l1,l2,…,ln}(本文中所有下標“T”或上標“T”都是Ture的縮寫,表示實際負載數(shù)據(jù))。



為了驗證本文提出的云計算資源負載預測模型的有效性,使用The Grid Workloads Archive[15]網(wǎng)站提供的公開數(shù)據(jù)集,對其進行實驗驗證。采用Materna提供的負載時序數(shù)據(jù),該數(shù)據(jù)集每隔5 min記錄一條網(wǎng)格工作負載。
本次仿真實驗的預測方法均采用Python編程,并在物理服務器下獨立運行,物理服務器相關配置信息如表1所示。

Table 1 Physical server configuration information
為了檢驗和評價本文提出的負載預測模型(LACL)的性能,本文將其與ARIMA、BP、SVM、LSTM單一模型進行了對比,同時還與文獻[12]提出的ARIMA-ANN(A-ANN)組合預測模型以及本文沒有經(jīng)過誤差修正的預測模型(LAC)進行了對比實驗。使用過去1小時的數(shù)據(jù)預測未來5分鐘的數(shù)據(jù)。結合經(jīng)驗與多次實驗對比設置的單步負載預測模型相關參數(shù)如表2所示。

Table 2 Forecasting model parameters
從數(shù)據(jù)集中選取2015年11月5日至2015年11月15日,10天的實測工作負載值,通過分析負載數(shù)據(jù)設置CPU利用率與內(nèi)存利用率的權重分別為0.4和0.6,每隔5 min獲取一條負載數(shù)據(jù),共計2 880條數(shù)據(jù)記錄。選取前70%的數(shù)據(jù)作為訓練集,20%的數(shù)據(jù)作為單步測試集,剩余數(shù)據(jù)用于驗證模型的泛化能力。根據(jù)式(1)和式(2)計算的具體負載數(shù)據(jù)如圖3所示。

Figure 3 History data of cloud computing recource load圖3 云計算資源負載歷史數(shù)據(jù)
各模型負載預測結果如圖4所示,同時表3給出了各個預測模型的預測誤差指標。

Figure 4 Cloud computing resource forecasting results with different models圖4 各模型云計算負載預測結果對比

表3 預測性能對比
從圖3和圖4來看,所有模型和原始序列的趨勢基本一致,但是單一負載預測模型預測精度明顯不如組合預測模型。本文提出的負載預測模型相比于傳統(tǒng)的負載預測模型具有更高的準確性。同時,從實驗結果可以看出,本文提出的LACL預測模型預測精度高于LAC預測模型的,說明在組合預測模型基礎上進行預測值的誤差修正可明顯提高負載預測數(shù)據(jù)的準確性。
云計算資源負載預測主要是對未來一段時間的云計算資源負載變化趨勢進行分析,單步預測結果只能描述下一時刻集群中的負載情況。為了進一步驗證所提模型的泛化能力,將原始資源負載序列每隔6個點求取平均構造30 min間隔的云計算資源負載數(shù)據(jù),同理構建60 min間隔的云計算負載數(shù)據(jù),并重新構建相應的LACL模型,預測曲線分別如圖5和圖6所示。其中,圖5中每條負載數(shù)據(jù)之間的時間間隔是30 min,圖6中每條負載數(shù)據(jù)之間的時間間隔是60 min。

Figure 5 Workload forecasting with an interval of 30 minites圖5 30 min間隔負載預測

Figure 6 Workload forecasting with an interval of 60 minites圖6 60 min間隔負載預測
對于30 min與60 min間隔預測結果的詳細誤差結果如表4所示。

Table 4 Forecasting performance at different time intervals
通過預測結果可以看出,在不同時間間隔情況下,本文提出的模型均能較準確地預測云計算資源負載值,可見所提預測模型具有一定的泛化能力。
針對復雜多變的云計算負載時序數(shù)據(jù),本文綜合考慮服務器CPU與內(nèi)存對負載的影響,提出了一種基于LSTM與ARIMA進行誤差修正的組合預測模型(LACL)。該模型首先分別利用ARIMA與LSTM預測模型進行負載預測。之后利用CRITIC客觀賦權法將兩模型的預測結果進行加權組合。同時根據(jù)真實誤差對未來誤差進行預測,通過對組合預測結果進行誤差修正得到最終的預測結果。通過使用公開數(shù)據(jù)集進行實驗的結果表明,本文所提的預測模型具有較好的預測精度,同時也具有一定的泛化能力,可以準確預測云計算中心負載的變化趨勢,將所提模型運用到云計算中心負載預測與管理中可以有效提高云計算中心的網(wǎng)絡資源利用率。