錢聲攀,于 洋,翟天一,張徐東,常彥博
(1.中國電力科學研究院有限公司信息通信研究所,北京 100192;2.中國科學院計算技術研究所,北京 100190;3.中國科學院大學 人工智能學院,北京 100049)
信息技術水平的提高使得計算模式由最初集中交付式發展為云計算模式[1],云計算[2]是新一輪IT革命的標志性成果,已經成為社會創新發展的戰略性關鍵技術和平臺。作為云計算物理承載基礎的數據中心,近年來其不論在規模還是數量上都得到了快速發展,并已被相關行業廣泛采用,但是,數據中心中的許多問題尚未得到完全解決,行業應用中仍面臨各種問題和挑戰[3-4],這些問題集中體現在2 個方面,一是數據中心給運營商帶來了日益龐大的電力開銷,相關統計結果表明[5],2014 年美國數據中心電能消耗總量占據全美全年總耗電量的1.8%,預計到2020 年,全球數據中心耗電量將占到當年全球總耗電量的8%[6];二是大型數據中心給社會帶來了沉重的環保壓力,全球環保組織(GeSI)估計,到2020 年數據中心溫室氣體排放總量將占到IT 領域總排放量的18%[7]。因此,在提供高質量服務的同時如何降低數據中心對資源的消耗以及對環境的負面影響,成為近年來學術界和工業界廣泛關注的焦點。
目前,常見的降低數據中心能耗的措施是根據數據中心當前負載情況進行硬件資源調度,使得數據中心在保證服務質量的前提下盡可能高效使用硬件資源,將空轉服務器進行休眠或者關機從而降低能耗。由于到達數據中心的任務量是一個隨機值,隨時都在發生變化,因此主機負載也在不斷變化,準確預測負載就成為降低數據中心硬件資源消耗的關鍵所在。
與傳統的網格系統或HPC 相比[8],承載云計算的數據中心任務提交頻率較高,且任務長度大約只有網格計算任務長度的。因此,云計算數據中心在任務調度和資源分配方面更加靈活,從而導致主機負載具有噪聲高和波動大的特點。另外,由于不同數據中心所承載的任務不同,其主機負載波動情況和影響主機負載的主要因素也都不同。研究結果表明[9-11],在網格系統中表現良好的主機負載預測方法很難在云計算數據中心中獲得較好的精度。文獻[12-13]中的模型雖然能夠在具體數據中心中獲得一個較高的準確度,但在不同數據中心中仍然需要對模型進程重新訓練。因此,設計一個能自適應具體數據中心特點的在線學習模型具有重要意義。
本文建立一種基于深度循環神經網絡編碼器-解碼器(GRU-ED)的多步在線預測模型。設計一個監控模塊,對在線模型輸出進行實時監控,從而及時調整學習速率并回滾到歷史狀態。利用實際數據中心所監控的數據進行實驗,以驗證多步在線預測模型的可行性。
準確預測主機負載在諸如動態資源分配、虛擬機調度和能耗管理等方面具有重要意義,因此,近年來很多學者對主機負載預測進行了研究。主機負載預測主要分為單步預測和多步預測,多步預測指通過一段給定的歷史信息一次性預測未來的多個主機負載值,從而避免使用多次迭代所造成的誤差累計。
針對傳統網格系統或HPC 系統,有很多有效的主機預測方法。文獻[9]提出一種在網格系統中基于馬爾科夫模型的單步主機負載預測方法。文獻[11]建立一種基于卡爾曼濾波和自回歸的多步預測模型,其能夠預測未來多步主機負載。文獻[10]將人工神經網絡(ANN)應用于主機負載預測任務,與線性模型和基于趨勢的模型相比,ANN 將主機負載預測的誤差和標準差分別降低了60%和70%。
與網格系統相比,數據中心的任務請求更加頻繁且任務長度更短,主機負載具有更大的波動,導致基于傳統網格系統的主機負載預測方法很難在數據中心環境中取得較好的預測性能。如文獻[14]提出的線性回歸模型、文獻[15]提出的差分整合移動平均自回歸模型(ARIMA)等,均無法從歷史負載數據中提取足夠的特征信息,導致預測精度較低。
近年來,數據中心中主機負載預測取得了很多成果。文獻[16]提出一種基于支持向量機(SVM)的預測模型,該模型利用混合遺傳算法和粒子群算法來選擇最優參數,從而訓練得到一個性能較好的預測模型。文獻[17]提出一種混合模型HARMA-E,其使用ARMA 模型實現預測,然后使用ENN 模型對ARMA 模型的誤差進行預測,最終得到一個修正誤差之后的預測值,但是在實際使用中,ENN 可能會出現梯度消失或梯度爆炸問題而導致算法性能不穩定。文獻[18]提出一種基于樸素貝葉斯的預測模型,為了能夠充分刻畫主機負載波動程度,該文設計9 個用來描繪主機負載波動的特征。但是,該模型并未充分考慮歷史信息對當前負載可能產生的影響,并且手動設計的特征很難真正刻畫主機負載的實際波動情況,因此,該模型實際中只使用了其中的2 個特征進行訓練。文獻[19]提出一種基于ESN(Echo State Network)的多步主機負載預測方法,ESN 的基本思想是使用隨機、大型且稀疏的動態矩陣作為非線性高維擴展并同時對輸入進行長期存儲。文獻[12]提出基于長短期記憶(LSTM)網絡的負載預測模型,其大幅提升了模型在多步預測中的性能。
以上研究都重點關注離線模型訓練,即已經存在足夠多的訓練數據,通過改變模型架構或設計新的預測方法來提升預測精度。然而,不同數據中心所承擔的任務特征不同,例如計算密集型和IO 密集型數據中心所采用的硬件存在區別,同時,位于不同地點的數據中心也會受到物理環境的影響,如氣候、海拔等。因此,不存在一種在所有數據中心中都通用的預測模型,同一個模型在不同數據中心中進行切換往往需要重新訓練。此外,離線模型所有訓練工作都在線下完成,需要事先采集到足夠多的歷史數據,但由于數據中心長時間運行,導致影響數據中心主機負載的因素有很多,如季節、年份、硬件損耗程度等,這些因素都需要模型具有一定的自適應性,自動調節模型參數以適應變化的環境。
為解決上述問題,本文設計一種基于深度循環神經網絡編碼器-解碼器的多步在線預測模型。使用編碼器來學習序列歷史信息,利用在線學習特性使得模型可以在進行簡單預訓練之后部署到數據中心,利用數據中心實時數據對模型進行快速調整以適應數據中心的特定環境。此外,模型使用解碼器對序列進行預測,利用GRU 降低計算復雜度,并設計一個實時監控模塊對模型預測結果進行評估,靈活調整模型學習率并在必要時使得模型回滾到歷史狀態。
如圖1 所示,在線預測模型主要包含歷史負載信息、預訓練模型、負載采集系統、在線模型和監控系統5 個相關模塊。歷史負載信息是用于預訓練的少量數據中心主機負載信息。預訓練模型是通過少量負載信息進行訓練的通用預測模型,預訓練在線部署后成為在線模型。負載采集系統是數據中心主機負載采集模塊,用來采集并存儲主機相關負載信息,并將處理后的信息實時傳遞給在線模型。監控模塊對在線模型輸出進行實時評估,并對在線模型做出相應調整。

圖1 在線預測模型框架Fig.1 Framework of online prediction model
給定一段歷史負載信息,通過一個循環神經網絡(RNN)輸出下一個時間點或多個時間點的負載信息。其中,歷史負載信息被固定為相同大小,預測值可以是未來一個或多個時間點的負載值或未來一段時間的平均值。為了更好地刻畫主機負載的歷史信息,本文設計一個循環門單元-編碼器解碼器(GRUED)模型,其結構如圖2 所示。

圖2 GRU-ED 模型結構Fig.2 GRU-ED model structure
本文所使用的GRU 和文獻[12]所使用的LSTM同屬于循環神經網絡(RNN)。本質上而言,與主機負載相關的信息是一個多維時間序列,序列中每個點的維度與所使用的特征個數相關,如果僅使用歷史負載信息,則每個點的維度為1;如果在使用歷史負載信息的同時也使用CPU 和內存信息,則每個點的維度為3。假設一個長度為t的歷史信息為(xn-t+1,xn-t+2,…,xn),其中,xn表示當前時間點的負載信息,則經過GRU 神經網絡之后的m個預測值為傳統的 多層感 知機模 型(MLP)的目標是找到一個函數f,使得:

不同的歷史負載信息將影響負載預測結果,因此,使用MLP 對未來負載進行預測很難達到理想效果。RNN 在不同歷史節點之間使用共享參數,并使用一個隱藏層記錄歷史信息,使得模型可以通過優化算法針對不同歷史信息選擇不同權重。
圖3 所示 為RNN 結構,其中,xt指第t個 時間的負載信息,其作為模型輸入,ht是隱藏信息,可以通過模型傳遞給后面的輸入,ot指t時刻的輸出,W、U、V均為模型參數。

圖3 RNN 結構Fig.3 Structure of RNN
RNN 模型前向傳播的公式如下:

RNN在不同歷史節點之間使用共享參數(W,U,V),使得模型可以處理長度變化的輸入,此外,使用共享參數可以減少參數總數,使得模型具有更好的泛化能力。
在一般情況下,可以使用BPTT(Backpropagation Through Time)[20]算法對RNN 進行訓練。然而,傳統的RNN 在序列達到一定長度時會出現梯度消失或梯度爆炸問題,導致信息不能很好地向前傳遞。
本文選擇GRU 代替傳統RNN 作為訓練模型。與傳統RNN 模型相比,GRU 使用不同的Cell 替代tanh 函數,在GRU Cell 中使用門限機制避免長序依賴中的梯度消失問題。在增加門限機制之后,歷史信息能夠以類似線性組合的方式提供給當前節點,模型通過學習不同歷史節點之間的線性組合可以自動選擇要記住的歷史信息長度。因此,相較于傳統RNN,GRU 可以記住更長的信息,并且GRU Cell 與LSTM 相比少了一個門限結構,可以減少訓練所需的計算資源。圖4 所示為GRU Cell 結構。

圖4 GRU Cell 結構Fig.4 GRU Cell structure
與RNN 類似,GRU 當前節點的輸出是由輸入和蘊含歷史信息的隱藏狀態生成的。但是,由于增加了門限,因此歷史信息ht-1能夠更好地向前傳遞。GRU 前向傳播公式如下:

其中:rt被稱作復位門,用來控制歷史信息對當前節點信息的影響程度。由式(6)容易得到,當rt→0 時歷史信息ht-1對當前節點信息nt的影響可以忽略,而當rt→1 時歷史節點信息對當前節點信息nt的影響最大。zt被稱作更新門,用來控制歷史信息傳遞到未來節點的信息量,由式(7)容易得到,當zt→0 時歷史信息不能被傳遞到未來,而當zt→1 時會盡可能多地傳遞歷史信息。
圖5 所示為編碼器-解碼器模型結構,其中,Encoder 是編碼器,用來學習完整的歷史表示,通過訓練可以選擇要學習的歷史信息,編碼器的輸出ht代表了學到的完整的主機負載歷史信息;Decoder是解碼器,將過去一段完整的歷史信息ht作為輸入,通過解碼器來預測未來一段時間的主機負載信息。通過使用2 個RNN 層避免了文獻[12]中不能充分利用歷史信息的問題,在實驗中也驗證了這一結論。

圖5 編碼器-解碼器模型結構Fig.5 Encoder-Decoder model structure
本文設計一個在線模型監控系統,用以實時監控模型預測性能,根據預測模型的預測性能及時調整模型學習率,并對模型歷史快照進行定時存儲,在必要時將模型回滾到某個歷史快照。
本文采用滑動平均值作為判定模型當前預測性能的指標,滑動平均值表達式如下:

其中:vt是t時刻的滑動平均值;β?[0,1)是權重下降程度;θt是t時刻的實際值。式(8)所求是個時間點的均值,因此,β也可認為是監控的預測長度。式(8)中的θt取t時刻模型的預測值和真實值yt差的平方,則式(8)可以表示為:

在系統中設置一個可接受的閾值h和表示監控長度的β,h和β會根據不同數據中心或不同應用場景設置不同值,可通過統計歷史負載數據結果選擇一個適合特定系統的h和β,例如,h可設置為與觀測值相差5%的一個值,β可以通過設定不同值來觀察得到一個較優值。在系統運行時,模型輸出和真實主機負載yt不斷傳遞給監控模塊,監控模塊在收到預測模塊數據之后,根據式(9)計算vt,如果vt≤h,認為模型性能良好,不做任何處理;如果vt>h,則對模型進行反饋,設置一個更大的學習率,使得模型可以盡快適應環境的變化;如果vt遠遠超過h,并且在經過多次反饋預測結果后仍然不能達到理想的預測精度,則可以將模型回滾到某個歷史快照或對模型參數進行重置以達到快速重置模型的目的。采用上述3 種不同的粒度反饋機制,可以對模型輸出進行實時監控,使模型具備一定的自適應能力。
本次實驗采用Google 于2011 年開源的數據中心監控數據集[13],該數據集記錄了超過12 000 臺服務器在一個月內的詳細使用情況,其中包含超過2.5×107個任務的提交時間和完成時間以及主機在此期間的詳細使用情況。和其他預測方法類似[12,18],本文實驗將第1 天~第20 天的數據作為訓練集,第21天~第26 天的數據作為驗證集,剩下的數據作為測試集。其中,訓練集用來訓練模型參數,驗證集用來選擇模型超參數和防止過擬合發生,當選擇好模型超參數之后,訓練集和驗證集一起訓練最終的模型,測試集用來檢驗模型性能。Google 所開源的數據中心數據包含CPU 利用率、內存利用率、磁盤利用率等在內的18 項監控數據。為了與其他模型作比較,本文只采用主機CPU 利用率歷史監控信息,并且只對主機負載進行預測。圖6 所示分別為Google 數據中心29 d 和12 h 的主機負載信息,通過圖6 能夠看出,相較于傳統網格系統,數據中心主機負載具有較大的方差和噪音。

圖6 主機負載的變化情況Fig.6 Changes of host load
本文使用Pytorch 構建模型,CPU 為Intel?Xeon?Silver 4110,GPU 為二路 NVIDIA GeForce GTX 1080Ti(11 GB),內存32 GB,在Ubuntu 16.04.10 環境下進行實驗,將本文所提模型與ESN 模型以及當前最優的LSTM 模型進行對比。
實驗對Google 數據中心中的12 000 臺機器進行隨機采樣,選取其中的1 024 臺機器進行實驗,對未來多步進行負載數值預測。與其他模型相同,本文模型采用MSE(Mean Square Error)評估預測結果,MSE 具體計算公式如下:

其中:N是樣本個數;oi和yi分別是模型預測結果和主機真實負載。圖7 所示為本文模型在不同隱藏層層數下的MSE 變化,可以看出,當隱藏層層數增加時模型性能下降,這是由于隨著模型隱藏層層數的增加,模型復雜度提升,導致出現過擬合現象。因此,本文后續實驗中設置隱藏層層數為1。

圖7 隱藏層層數對MSN 值的影響Fig.7 Influence of the number of hidden layers on MSN values
圖8 所示為GRU-ED、LSTM、ESN 3 種模型在不同預測步長下的MSE 情況。從圖8 可以看出,隨著預測步長的增加,模型性能有所下降,但本文GRUED 模型性能較傳統LSTM 和ESN 模型有一定提升,原因是本文所使用的編碼器-解碼器模型能夠更好地刻畫歷史數據的波動情況以及主機歷史負載情況。

圖8 3 種模型的預測性能對比Fig.8 Comparison of prediction performance of three models
本文構建一種基于深度循環神經網絡編碼器-解碼器的多步在線預測模型,該模型采用一定長度的主機負載歷史信息實時預測未來多步主機負載值,并通過真實數據中心主機負載數據驗證其可行性。實驗結果表明,該模型具備一定的自適應性,在對未來多個時間點的負載信息進行預測時,其預測準確性優于ESN 和LSTM 模型。但是,本文只考慮主機CPU 利用率這一個維度的歷史信息,影響主機負載的因素還包括內存和網絡等,因此,下一步將結合主機所監控的其他維度信息提升模型的預測性能。