賀小偉,徐靖杰,王 賓,吳 昊,張博文
(1.西北大學 網(wǎng)絡和數(shù)據(jù)中心,西安 710127;2.西北大學 信息科學與技術學院,西安 710127)
云計算[1]是基于虛擬化技術和網(wǎng)格計算而發(fā)展起來的一種新興計算模式,與網(wǎng)格計算相比,云計算的任務更具復雜性,在這種模式中,應用、數(shù)據(jù)和IT資源以服務的形式經(jīng)過網(wǎng)絡提供給用戶使用,給用戶帶來諸多方便。近年來,越來越多的公司將應用部署在云端,這使得云數(shù)據(jù)中心的功耗波動更加劇烈,從而導致云數(shù)據(jù)中心資源利用率不平衡問題[2]。在負載快速增加時,從分配主機資源到使用主機資源的過程會產(chǎn)生時間延遲,在負載變化后分配資源時服務水平協(xié)議(Service Level Agreement,SLA)將遭到破壞。
為了給用戶提供高性能的云服務,在云分布式控制系統(tǒng)中進行資源管理非常重要[3],它可以降低云數(shù)據(jù)中心能耗成本和二氧化碳排放量[4-5]。負載預測技術[6]是對云分布式控制系統(tǒng)進行資源管理的關鍵技術,其可以在不破壞SLA 和不影響數(shù)據(jù)中心運行的前提下,通過對云數(shù)據(jù)中心的歷史數(shù)據(jù)進行分析,以掌握負載數(shù)據(jù)的變化規(guī)律并準確預測下一時期的負載值,從而通過合理地分配云數(shù)據(jù)中心的資源來提高其資源利用率。
目前,針對時間序列的負載預測大多基于深度學習中的循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)來進行建模,但是RNN 在預測時間序列時存在梯度消失和梯度爆炸的問題。本文針對負載預測模型中存在的預測精度低、預測時間長的問題,提出一種組合預測模型GRU-LSTM,該模型結合門控循環(huán)單元(Gate Recurrent Unit,GRU)預測時間短、長短期記憶(Long-Short Term Memory,LSTM)預測精度高的優(yōu)點,對云計算資源進行高效預測,從而提高云數(shù)據(jù)中心的資源利用率。
對云計算資源負載進行預測是一個典型的時間序列預測問題。目前,針對時間序列的預測方法主要分為基于機器學習的方法和基于深度學習的方法兩類。
在基于機器學習的方法中,KHAIRALLA[7]提出一種混合模型,其將自回歸移動平均模型(Auto-Regression and Moving Average Model,ARIMA)與支持向量機(Support Vector Machine,SVM)進行組合,然后對金融時間序列進行預測,并與人工神經(jīng)網(wǎng)絡(Artificial Neural Network,ANN)和SVM 進行對比。BI等[8]提出一種小波分解與ARIMA 的混合模型以對未來負荷進行預測,該模型通過SavitzkyGolay 濾波平滑任務時間序列,并通過小波分解將其分解為多個分量,通過小波分解重構它們的預測結果,以估計到達任務數(shù)。但是,該模型可以通過使用更好的數(shù)據(jù)平滑算法來進一步提高其預測精度。LIU[9]利用支持向量回歸(Support Vector Regression,SVR)建立0-1 整數(shù)規(guī)劃模型,將工作負載分類問題轉化為任務分配問題,并提供在線解決方案。ZHΟNG[10]提出一種基于WSVM 的預測算法,其利用小波分解對輸入信號進行分解然后使用SVM 完成預測,最后利用Google 提供的集群公開數(shù)據(jù)集進行實驗驗證。GUPTA[11]提出一種基于分數(shù)差分的方法來捕捉時間序列數(shù)據(jù)的長相關性,并在Google 提供的集群公開數(shù)據(jù)集上進行實驗驗證,結果表明,與非分數(shù)差分的方法相比,分數(shù)差分的方法具有更好的預測結果。
在基于深度學習的方法中,ZHANG[12]引入一種深度學習模型,利用規(guī)范多元分解來預測云負荷,并使用深度學習模型來學習虛擬機中復雜負載數(shù)據(jù)的重要特征,最后應用規(guī)范多元分解來壓縮模型參數(shù)以提高訓練效率。目前,針對時間序列的預測大多基于RNN 來建模。文獻[13]利用RNN 對云計算資源負載進行預測,并使用Google 提供的集群公開數(shù)據(jù)集進行實驗來驗證該方法的準確性,RNN 的循環(huán)自回歸結構能對時間序列進行很好地表示,但它在對時間序列進行預測時存在梯度消失和梯度爆炸的問題。因此,由RNN 衍生出的LSTM 網(wǎng)絡被廣泛應用于時間序列預測任務。SUDHAKAR[14]將LSTM與RNN 進行組合,以對服務器未來的工作負載進行預測,并與ARIMA 模型進行比較,結果表明,LSTMRNN 模型的預測精度高于ARIMA,同時也驗證了組合預測模型的預測精度高于單一預測模型,但由于LSTM 與RNN 都含有較多參數(shù),因此預測時間較長。文獻[15]提出一種改進的LSTM 預測模型GSΟLSTM,利用該模型對云主機負載進行預測,并通過實驗驗證了利用螢火蟲智能優(yōu)化(Glowworm Swarm Οptimization,GSΟ)算法對LSTM 進行優(yōu)化具有可行性。文獻[16]提出一種組合預測模型ARIMALSTM,以對云平臺資源進行預測,并利用CRITIC 數(shù)據(jù)融合對誤差值進行預測,實驗結果表明,該預測模型的預測精度優(yōu)于單一預測模型。CHEN[17]對LSTM 采用集成學習的思想,通過豐富模型的輸入維度來解決由于缺乏歷史數(shù)據(jù)而無法建模的問題,但是,由于模型的輸入維度增加,導致該方法訓練時間較長。在使用LSTM 對時間序列進行預測時,增加網(wǎng)絡層數(shù)也可以取得更好的預測結果。文獻[18-19]分別提出Refined LSTM 與Stacked LSTM預測模型(Refined LSTM、Stacked LSTM 均為多層網(wǎng)絡結構),對電荷數(shù)據(jù)進行預測后得出結論,Refined LSTM 與Stacked LSTM 預測精度都優(yōu)于LSTM。在對時間序列進行預測時,雖然LSTM 在預測精度上優(yōu)于其他單一預測模型,但是LSTM 參數(shù)過多,導致預測時間較長。
作為LSTM 的變體,GRU 在對時間序列進行預測時,由于減少了一個門而使得預測時間變短。GUΟ等[20]提出GRU 和自相關分析相結合的多步預測方法,仿真分析結果表明,所提GRU 預測模型在進行負載預測時預測時間得到優(yōu)化。對于一些特定的時間序列問題,采用時間卷積網(wǎng)絡(Temporal Convolutional Network,TCN)進行建模也可以取得很好的效果。文獻[21]利用TCN 對幾個真實世界的數(shù)據(jù)集進行實驗,結果表明,TCN 對于點預測和概率預測具有較好的效果,但是對于長時間預測的效果較差。
現(xiàn)有的預測模型通常是單一預測模型,或者是一些基于集成學習的組合預測模型[22]。單一預測模型雖然在預測時間上優(yōu)于組合預測模型,但預測精度明顯低于組合預測模型。而現(xiàn)有的一些組合預測模型預測精度雖然高于單一預測模型,但是預測精度相對也較低且沒有考慮預測時間的問題。為提高云平臺負載的預測精度和預測效率,本文結合GRU與LSTM 各自的預測優(yōu)勢,提出一種基于GRU 與LSTM 的組合預測模型,以對云平臺資源負載進行預測。
本文主要對云計算資源的負載情況進行預測。假設云計算原始資源負載序列值為xt={x1,x2,…,xn},其中,xt為t時刻集群的負載情況。將CPU 利用率和內(nèi)存(mem)利用率的負載值進行組合后作為新的輸入,原因是這2 個指標可以最直接地體現(xiàn)集群在某個時刻的負載情況,也是使用隨機森林算法[23]進行特征選擇后得分最高的2 個指標。設置步長為k,從原始資源負載序列值xt中選取前k個時刻的數(shù)據(jù)作為負載預測模型的輸入向量z={zn-k,…,zn-2,zn-1},通過負載預測模型訓練后得到k+1 時刻集群的負載情況。
云環(huán)境中工作負載存在一定的依賴關系,每個時刻的負載情況都和之前時刻的負載情況有著十分密切的聯(lián)系,當歷史值越接近當前時刻t的值,它們之間的關系就越密切。對于模型選擇而言,長距離的依賴信息可以提供趨勢信息,不能完全忽略掉,為了更好地利用過去的負載數(shù)據(jù),需要對歷史數(shù)據(jù)進行有選擇地保留和丟棄。LSTM 中的遺忘門可以控制進入當前時刻的歷史信息量以及需要被舍棄的信息量。因此,本文模型選擇LSTM 以及與LSTM 具有相似網(wǎng)絡結構的GRU。
LSTM 作為一種改進的RNN,其繼承了RNN 模型的優(yōu)點,并且利用獨特的門結構有效解決了RNN中的梯度爆炸和梯度消失問題,因此,LSTM 可以有效處理長時間序列問題,并已經(jīng)成功應用于語音識別、圖像描述、自然語言處理等領域。相較RNN 和GRU,LSTM 模型的擬合和預測精度總體較高,但是,由于LSTM 參數(shù)過多導致其訓練過程耗時較長。
LSTM 由多個循環(huán)單元組成,通過更新神經(jīng)元狀態(tài)信息,使用輸入門、輸出門、遺忘門來控制歷史信息的權重從而存儲過去的信息?;贚STM 的移動云主機t時刻負荷預測模型的單元結構如圖1 所示。
圖1 LSTM 單元結構Fig.1 Unit structure of LSTM
在圖1 中:Ct-1為前一時刻神經(jīng)元的狀態(tài);Yt-1為前一時刻神經(jīng)元的輸出;Zt為當前時刻的輸入。
遺忘門決定上一時刻的單元狀態(tài)Ct-1有多少可以保留到當前時刻Ct,遺忘門的輸入包括前一時刻的輸出Yt-1和當前時刻的負載Zt,最后通過最左邊的激活函數(shù)sigmoid 得到ft,計算如式(1)所示:
其中:Wf是遺忘門的權重矩陣;bf表示偏差向量;σ表示激活函數(shù)sigmoid;ft表示最后一層神經(jīng)元被遺忘的概率,取值范圍為[0,1],0 表示完全丟棄,1 表示完全保留。
輸入門決定Zt中哪些新的輸入可以存儲在神經(jīng)元中,神經(jīng)元主要分為it和νt,其計算方法分別如式(3)和式(4)所示:
其中:Wi和Wc是輸入門的權重矩陣;bi和bc為偏差向量。it和νt表示當前需要保留的負載信息的比例,其與前一時刻保留的神經(jīng)元狀態(tài)相加,生成更新后的神經(jīng)元狀態(tài)信息Ct,計算方法如式(6)所示:
輸出門控制神經(jīng)元狀態(tài)的輸出并將狀態(tài)轉移到下一個神經(jīng)元,輸出門οt的計算方法如式(7)所示:
其中:Wο為輸出門的權重矩陣;bο為偏差向量;Yt為當前時刻神經(jīng)元的輸出。通過最后一層的計算得到最終的負載預測值,如式(8)所示:
GRU 作為LSTM 的一種變體,也可以有效地解決RNN 中的梯度爆炸和梯度消失問題。與LSTM相比,GRU 的結構更為簡單,其將遺忘門和輸入門合并為一個更新門。由于GRU 減少了一個門,矩陣乘法變少,因此當訓練數(shù)據(jù)量很大時可以節(jié)省大量的時間,GRU 網(wǎng)絡結構如圖2 所示。
圖2 GRU 網(wǎng)絡結構Fig.2 GRU network structure
在圖2 中:Zt為當前時刻的輸入;Yt-1為上一時刻的輸出;Yt為當前時刻的輸出。GRU 有2 個門:
1)第一個門為更新門νt,其決定有多少歷史信息可以繼續(xù)傳遞給未來,即更新門νt決定是否將隱藏狀態(tài)更新為新狀態(tài)。從功能上看,GRU 的更新門νt類似于LSTM 的輸出門,更新門νt的計算方法如式(9)所示:
其中:Wν為更新門的權重矩陣;bν為偏差向量。
2)第二個門為重置門rt,其主要功能是確定有多少歷史信息不能傳遞到下一個狀態(tài),類似于LSTM中遺忘門和輸入門的組合。重置門rt的計算方法如式(10)所示:
其中:Wr為重置門的權重矩陣;br為偏差向量。
計算出更新門νt和重置門rt后,GRU 將計算候選隱藏狀態(tài)ht。候選隱藏狀態(tài)ht計算方法如式(11)所示:
其中:Wh為對應的權重參數(shù);bh為對應的偏差參數(shù)。從式(11)可以看出:當重置門rt的值接近0 時,重置門對應的候選隱藏狀態(tài)值也為0,即丟棄上一時刻的隱藏狀態(tài);當重置門rt的值接近1 時,表示保留上一時刻的隱藏狀態(tài)。因此,重置門的作用是有選擇地丟棄與預測無關的歷史信息。
最后,t時刻GRU 的輸出Yt的計算方法如式(12)所示:
綜合考慮預測精度和預測時間2 個方面的因素,本文建立一種基于GRU 與LSTM 的組合預測模型,以對云計算資源負載進行預測。組合預測模型網(wǎng)絡結構如圖3 所示。
圖3 組合預測模型網(wǎng)絡結構Fig.3 Network structure of combined forecasting model
本文組合預測模型的網(wǎng)絡結構包括3 層:第一層網(wǎng)絡結構采用GRU,由于GRU 的網(wǎng)絡結構簡單,參數(shù)少,更易收斂,因此在訓練數(shù)據(jù)時GRU 訓練速度快,可以減少訓練時間,但是,GRU 的預測精度低于LSTM;第二層和第三層網(wǎng)絡結構均采用LSTM,LSTM 參數(shù)較多,預測精度更高,并且雙層LSTM 的預測精度優(yōu)于單層LSTM。
本文采用平均絕對誤差(Mean Absolute Error,MAE)、平均絕對值百分比誤差(Mean Absolute Percentage Error,MAPE)、均方誤差(Mean Squared Error,MSE)、均方根誤差(Root Mean Square Error,RMSE)、決定系數(shù)(R2)作為模型的性能評估標準。預測時間主要以模型的訓練時間作為評價標準。在對模型進行泛化實驗時,采用可釋方差得分(explanied_variance_score,簡寫為S)對模型的擬合程度進行評價。各指標的計算方法如下:
其中:n為負載預測值個數(shù);yi為負載的實際值;為負載的預測值;為負載的平均值。
為了驗證本文負載預測模型的預測性能,使用阿里云2018 年發(fā)布的集群公開數(shù)據(jù)集Cluster-tracev2018[24]進行實 驗。Cluster-trace-v2018 包括大 約4 000 臺機器在8 天內(nèi)的資源使用情況,本文實驗使用其中1 臺機器在8 天內(nèi)的資源使用情況,共3 300 條數(shù)據(jù)記錄,選取前80%的數(shù)據(jù)作為訓練集,后20%的數(shù)據(jù)作為測試集。本文對數(shù)據(jù)集進行如下處理:
1)缺失值處理。利用均值填充法進行缺失值處理。
2)標準化處理[25]。為了提高神經(jīng)網(wǎng)絡的收斂速度、迭代求解速度以及預測精度,采用式(19)(Min-Max 歸一化)對訓練集的2 600 個數(shù)據(jù)進行標準化處理:
其中:X*t為歸一化處理后的值;Xt為原始數(shù)據(jù)在t時刻的值;Xmin為原始數(shù)據(jù)的最小值;Xmax為原始數(shù)據(jù)的最大值。
3)特征選擇。特征選擇可以從原始數(shù)據(jù)特征集中選出若干個具有代表性的特征子集,這不僅可以實現(xiàn)數(shù)據(jù)降維,還可以提升在該特征子集上所構建的回歸模型的性能。隨機森林算法通過特征隨機置換前后誤差分析,計算每個特征的重要性得分,得分越高,特征越重要,與其他特證選擇算法相比,隨機森林算法不僅能體現(xiàn)特征間的相互作用,而且還具有準確性高、魯棒性好等優(yōu)點[26]。因此,本文使用隨機森林算法進行特征選擇,特征選擇結果如圖4 所示,橫坐標為特征。
圖4 特征選擇結果Fig.4 Feature selection results
從圖4 可以看出,CPU 利用率和mem 利用率是除時間特征之外經(jīng)過特征選擇后得分最高的2 個特征,因此,本文實驗選擇CPU 利用率和mem 利用率的組合值作為云平臺資源的負載值。負載值的計算公式如下:
其中:W為組合后的原始負載值;W1和W2分別代表CPU 負載值和mem 負載值;L1和L2分別代表CPU 和mem 的權重參數(shù)。本文根據(jù)特征的得分指數(shù)比例,設置L1為0.6,L2為0.4。
本文實驗是一個單步預測過程,預測流程如圖5所示。
圖5 預測流程Fig.5 Procedure of prediction
在獲取數(shù)據(jù)后,首先對原始數(shù)據(jù)進行缺失值和標準化處理,當原始數(shù)據(jù)缺失率大于30%時,舍棄該條數(shù)據(jù),若缺失率小于等于30%,則使用均值填充法對缺失值進行填充,并將填充后的數(shù)據(jù)通過歸一化方法進行標準化處理,利用隨機森林算法對標準化后的數(shù)據(jù)進行特征選擇,根據(jù)特征的重要程度將特征選擇后得到的特征數(shù)據(jù)加入權重參數(shù)進行組合,將組合后的負載值輸入GRU-LSTM 組合預測模型進行訓練,設置步長為12(根據(jù)前12 個數(shù)據(jù)來預測第13 個數(shù)據(jù))。最后,使用5 個評價標準對模型性能進行評價,同時輸出模型預測結果。預測模型參數(shù)設置如表1 所示。
表1 參數(shù)設置Table 1 Parameters setting
模型預測結果(64 個樣本)如圖6 所示,從圖6 可以看出,本文所提GRU-LSTM 組合預測模型的預測結果與原始序列的趨勢基本一致。從圖7 可以看出(640 個樣本),本文GRU-LSTM 模型經(jīng)過訓練后得到的預測數(shù)據(jù)與真實數(shù)據(jù)的誤差大多集中在-5.0~5.0 之間,誤差較小,因此,該組合預測模型預測精度較高。
圖6 GRU-LSTM 模型的預測結果Fig.6 Prediction results of GRU-LSTM model
圖7 GRU-LSTM 預測誤差結果Fig.7 GRU-LSTM prediction error results
將本文模型與傳統(tǒng)的單一負載預測模型ARIMA、GRU、LSTM 進行對比,同時還與文獻[16]提出的ARIMA-LSTM 組合預測模型、文獻[18]提出的Refined LSTM 模型、文獻[19]提出的Stacked LSTM模型進行實驗對比。各模型的負載預測結果如圖8所示(64 個樣本),評價指標結果如表2 所示,最優(yōu)結果加粗表示。
圖8 各模型的負載預測結果Fig.8 Load prediction results of each model
表2 各模型的評價指標結果Table 2 Evaluation index results of each model
從圖8 和表2 可以看出:相較傳統(tǒng)的單一預測模型ARIMA、LSTM 以及GRU,本文GRU-LSTM 模型的預測精度較高,同時也驗證了組合預測模型的預測精度要優(yōu)于單一預測模型;相較組合預測模型ARIMA-LSTM、Refined LSTM 和Stacked LSTM,本文模型的預測精度同樣較高。雖然2 層網(wǎng)絡結構相比3 層網(wǎng)絡結構減少了參數(shù),但是這在一定程度上削弱了模型的學習能力。本文所提GRU-LSTM 模型結合GRU 訓練速度快、LSTM 預測性能好的優(yōu)點,在預測精度和預測時間上取得性能提升。
為了對模型的泛化能力進行驗證,設置不同的步長重復進行實驗,使用explanied_variance_score 作為評價標準,結果如圖9 所示。
圖9 不同步長下的可釋方差得分結果Fig.9 explanied_variance_score results under different steps
通過圖9 可以看出,GRU-LSTM 組合預測模型的可釋方差得分介于0.510~0.535 之間,即該組合模型在不同的步長情況下均可以有效地對云計算資源負載值進行預測,其具備一定的泛化能力。
針對目前負載預測模型預測精度低且預測時間長的問題,本文提出一種基于LSTM 與GRU 的組合預測模型GRU-LSTM,以對云計算資源負載情況進行預測。在阿里云平臺發(fā)布的集群公開數(shù)據(jù)集上進行實驗,結果表明,相較ARIMA、LSTM 等模型,該負載預測模型具有較高的預測精度以及較短的預測時間,同時具有一定的泛化能力,將該模型應用到實際的云平臺中,可以解決目前資源利用率不平衡的問題。下一步考慮通過優(yōu)化算法尋找模型的最優(yōu)參數(shù),或對數(shù)據(jù)進行降噪處理,以提升本文模型的預測精度。此外,探索多變量和長時間序列的內(nèi)在關聯(lián)性并解決深度神經(jīng)網(wǎng)絡對輸入變化不敏感的問題,也是今后的研究方向。