朱金燦,鄧 莉,梁晨君,嚴 明,謝同磊,任正偉
1(武漢科技大學 計算機科學與技術學院,武漢 430065) 2(智能信息處理與實時工業系統湖北省重點實驗室,武漢 430065) 3(新加坡科技研究局,新加坡138632) E-mail:dengli@wust.edu.cn
在本文工作中,我們使用指數分段預測模式將未來連續區間內的主機平均負載預測轉換為單一區間的預測模式,實驗采用雙向卷積長短期記憶模型(Bidirectional Convolutional Long Short-Term Memory,,BC-LSTM)作為預測模型.與以往的方法不同的是,BC-LSTM模型可以做序列輸出,可以很好地完成主機實際負載多步預測,消除了累計誤差.并且BC-LSTM是一種端到端模型,不需要實驗中進行特征提取工作,模型可以自動學習到負載序列的雙向依賴信息.最后我們在兩個真實負載數據集驗證,結果表明本文方法比現有方法具有更好的性能.
主機負載預測能夠在滿足服務水平協議的前提下,提高資源的分配和利用率.因此受到研究人員的廣泛關注.通常情況下,研究人員基于歷史負載信息來預測未來負載信息,這是一個典型的時間序列預測問題.本文將現有的主機負載預測方法歸納為以下3類.
傳統統計學概率模型.此類方法在傳統網格或HPC系統中應用較多.研究人員將馬爾科夫鏈與季節性分析相結合,提前一個時間步預測網格系統中主機CPU和網絡負載信息[8].Ankita 等人[9]提出了一種改進的基于自回歸(AR)的主機負載預測模型,在網格系統中取得了良好的效果.該方法適用于負載穩定、較小的電網負載系統.Wu等人[10]提出了一種將自回歸模型與置信區間估計方法相結合進行預測和卡爾曼濾波消除噪聲的混合方法.與傳統的AR模型相比,很好地提高了預測精度,并且能夠進行多步預測.然而該模型在長期負載和平均負載預測方面表現不佳.
機器學習模型.Sheng等人[4]基于Google Trace數據集設計9個新的特征,使用樸素貝葉斯模型預測主機在未來連續區間內的平均負載.該方法提高了平均負載預測的準確性,但缺點是不能完全捕捉到主機負載隨著分段長度指數的增加而變化的情況,并且隨著指數的增加,區間過長會導致預測精度極速下降.Cortez等人[11]對Microsoft Azure負載數據進行特征分析,使用隨機森林模型對未來主機資源實際負載進行預測,表明對于云平臺主機實際負載預測的可預測性和重要性.Zhong等人設計了加權支持向量機進行自適應預測,并用粒子群算法尋找最優參數[6].它的性能優于傳統的支持向量機模型,但模型只適合小樣本數據,在云平臺大型數據集上的表現效果大大減弱.
神經網絡模型.Duy等[12]將前饋人工神經網絡(ANN)應用于主機負載預測任務,并且比傳統分布式系統中的先前方法具有更好的性能.與AR模型相比,ANN模型最顯著的優勢是非線性擬合能力,它可以捕獲輸入和輸出值之間的潛在關系,但是由于輸入固定且有限,因此無法預測長期主機負載.Yang等人[13]提出了相空間重構(PSR)和基于進化算法的分組數據處理方法(EA-GMDH).模型使用PSR重構時間序列,使用進化算法優化的前饋神經網絡進行預測.然而由于節點數量有限,該方法無法進行多步預測.研究人員使用自動編碼器從時間序列中提取特征,并使用回聲狀態網絡(ESN)執行多步提前主機負載預測[14].盡管該方法的性能優于以往的方法,但仍然存在人工選擇漏失率、對自動編碼器提取特征的依賴性很高,以及大型儲備層隨機初始化可能導致性能下降等缺點.在時間序列預測領域,為了提取到序列的更多特征,以便進行精確的多步提前負載預測,研究人員使用卷積長短期記憶(Convolutional Long Short-Term Memory,convLSTM)神經網絡進行預測[15].與以往的方法相比,convLSTM的優勢在于學習長期依賴關系的能力、自動特征提取能力、強大的非線性泛化能力以及同時提取時序空間依賴信息.
本文所提出方法思路是將時間序列回歸預測問題轉換為監督學習問題.通過模型訓練來建立歷史序列信息和預測序列信息的關系映射.主機負載時間序列被劃分為固定大小連續的歷史序列;每個歷史序列都對應著一個固定大小的預測序列.這兩個序列分別用作模型的輸入和輸出.在本文工作中,預測序列可以是未來某個時間段主機實際負載值,也可以是未來連續時間間隔內的主機平均負載值.
假設已有的歷史資源負載序列是X=(xt-1,xt-2,…,xt-n),其中xt=(at,bt)為t時刻主機的CPU、內存資源負載值.本文只考慮CPU利用率和內存利用率,因為這兩個指標最直接反應集群機器的資源能耗情況[4].假設需要預測的未來主機資源負載序列為O=(xt+1,xt+2,…,xt+m),O表示當前時刻t之后的m步的負載序列.利用監督學習的思想在歷史序列和未來序列之間初步建立映射函數f,如公式(1)所示.
(xt+1,xt+2,…,xt+m)=f(xt-1,xt-2,…,xt-n)
(1)
云環境中工作負載存在依賴關系,直觀地講,歷史值越接近當前時間t,它們之間的關系就越密切,而遠離現在的歷史負荷可以提供諸如趨勢之類的有用信息,保持依賴信息持久化傳輸,從而有助于預測.根據云環境中任務依賴關系,某一時刻的主機資源負載不僅受歷史資源負載的影響,而且和未來資源負載有關[16].對于模型而言,長距離的依賴信息可以提供趨勢信息,不能完全遺忘掉.為了更好地利用過去和未來的負載序列來建立函數關系,公式(1)進一步更改為如公式(2)所示:
O=f(g1(xt-1,…,xt-n),g2(xt-n,…,xt-1))
(2)
在公式(2)中函數g1是對負載序列信息的正序利用,而函數g2是對負載序列信息的逆序利用.在t時刻,模型既能夠利用t-1時刻以前的信息,又能夠利用到t+1時刻以后的信息.
CNN模型在處理一維時間序列數據有很好的非線性擬合能力,可以負責時間序列空間維度的特征學習[17].LSTM模型能夠保留學習過程中長距離依賴信息,可以負責時間序列時間維度的特征學習[18].綜合上述考慮,本文使用雙向卷積長短期記憶模型(Bidirectional Convolutional LSTM,BC-LSTM)作為預測模型,區別于經典的LSTM模型,BC-LSTM模型單元主要改動在于輸入層和隱藏層狀態傳播之前使用卷積操作代替全連接形式以及長期記憶的反饋調節,這使得模型不僅可以提取時間序列空間特征,還可以在模型訓練過程中保留長期依賴信息[19].本文在正反兩個方向疊加模型,使得預測模型能夠成功提取時間序列兩個方向的依賴信息.如圖1中預測模型框架所示,本文中使用的BC-LSTM體系結構由一組循環連接的子網組成,這些子網稱為存儲塊.BC-LSTM模型的核心思想是使用兩個獨立的隱藏層來處理來自前向和后向的序列數據,以分別模擬歷史和未來信息對當前隱藏狀態的影響.BC-LSTM模型單個的內部結構如圖1所示.

圖1 convLSTM內部結構圖Fig.1 Internal structure of convLSTM
BC-LSTM模型使用單元狀態Ct來保存長期記憶,如公式(3)所示,單元狀態由遺忘門和輸入門共同作用.整個過程可分為3步.
(3)
第1步遺忘,對遺忘門輸入信息選擇性的遺忘,保存重要信息,舍棄無用信息.如公式(4)所示,改進后的模型單元遺忘門同時接受上一時刻的輸出Ht-1,上一時刻單元狀態Ct-1以及當前時刻的輸入Xt.模型可以根據自身權重學習來選擇性舍棄無用信息.
ft=σ(Wxf×Xt+Whf×Ht-1+Wcf°Ct-1+bf)
(4)
第2步選擇,通過輸入門和候選向量來將新的信息選擇性記錄到單元狀態中.如公式(5)所示,候選向量的作用是對接收到的序列信息做非線性轉換.
(5)
輸入門的計算如公式(6)所示,改后的輸入門由當前時刻的輸入Xt、上一時刻的輸出Ht-1以及上一時刻的單元狀態Ct-1所共同決定.
it=σ(Wxi×Xt+Whi×Ht-1+Wci°Ct-1+bi)
(6)
第3步輸出,由輸出門控制哪些信息需要被輸出,如公式(7)所示,它控制進入輸出向量和隱藏狀態的新單元狀態Ct的量.
ot=σ(Wxo×Xt+Who×Ht-1+Wco°Ct+bo)
(7)
最后,可以使用輸出門的結果和當前時間步的單元狀態更新隱藏狀態(或輸出),如公式(8)所示:
Ht=ot°tanh(Ct)
(8)
為了訓練BC-LSTM網絡,本文實驗中使用時間反向傳播(BPTT)算法,該算法包括重復應用鏈式規則[20].與先前使用LSTM進行主機負載預測工作類似,當參數變大以防止梯度爆炸時,我們會在參數更新之前削減梯度.另外,由于預測周期很長,本文還使用了基于時間的截斷反向傳播策略[21],以減少單個參數更新的成本.對于平均負載預測任務,截斷的長度保持為39.與傳統的LSTM工作不同,由于BC-LSTM方法具有更好的雙向長期依賴學習能力,因此對于實際值預測任務,此長度減少為26.表1總結了BC-LSTM方法在實驗過程中的重要參數值.

表1 BC-LSTM模型參數Table 1 Parameters of the BC-LSTM model
如圖2所示,通過指數分割模式,未來特定的預測區間被分割成一組連續的時間段,時間長度呈指數增長,總預測長度表示為s.第一個時間段s1稱為基線段,是從當前時間點t0開始,到t0+b結束,長度為b.每個后續區間段的長度為si=2i-2×b,其中i=2,3…n.本文的目標是預測每個時間段的主機平均負載,記作li.在圖2中,l1是基線段s1的平均負載.

圖2 指數分段預測模式Fig.2 Exponential segmented prediction model
根據指數分段模式可知,每個時間段的平均負載預測是整個過程的關鍵步驟.由于主機負載總是在相鄰的短期間隔之間具有較高的相關性,而不是在非相鄰的短期間隔之間,因此本文直接根據證據區間來預測連續間隔中的負載.如圖3所示,采用指數分段模式后,只需要預測一組從當前時間t0開始的不同長度的未來時間間隔平均主機負載ηi,預測的區間時間段表示[t0,ti].分段后預測區間的平均負荷水平表示為li,時間區間段為[ti-1,ti].

圖3 主機負載分段模式Fig.3 Host load segmentation mode
由此可得:li×(ti-ti-1)+ηi-1×(ti-1-t0)=ηi-1×(ti-t0).在本文中,t0=0,ti=2ti-1,可進一步將簡化計算得出:
li=2ηi-ηi-1
(9)
根據公式(9),我們可將預測連續時間段上的主機平均負載問題轉化為預測從當前時刻開始不同時間長度的主機平均負載.
為了評估BC-LSTM方法,本文在2個真實環境的數據集上開展實驗,預測了2個集群負載跟蹤的實際負載值和平均負載值.實驗在服務器上進行,機器具體配置為28核CPU(CPU的型號為Intel(R)Xeon(R)CPU E5-2620 v4 @ 2.10GHz),內存容量為126G,顯卡型號為NVIDIA Tesla P100.本文將BC-LSTM方法與以前的工作進行比較,分別進行了平均負載預測和實際負載預測.為了檢驗各種方法的有效性,本文考慮了3種不同的評估指標.
其中均方分段誤差(Mean Segment Squared Error,MSSE)用來度量平均負載預測,均方根百分比誤差(Root Mean Square Percentage Error,RMSPE)以及均方誤差(Mean Square Error,MSE)用來度量實際負載預測.
對于平均負載預測,實驗使用指數分段模式的指標來描述主機負載在長度呈指數增長的連續時間間隔內的波動.為了量化指數分段模式的平均負荷預測的準確性,采用MSSE來表示預測效果,其定義如公式(10)所示:
(10)

對于實際負載預測,指數分段預測模式無法完全捕捉主機隨時間的負載變化,因此本文還使用RMSPE和MSE來評估方法的準確性.二者定義如公式(11)-公式(12)所示,其中oi是預測值,yi是真實負載值,n是預測長度.RMSPE評價指標常見于數據科學競賽中用來評價回歸任務擬合效果,能夠很好地反映出預測值與真實值之間的偏離程度,同時把每個預測點的誤差歸一化,降低個別離群點帶來的誤差影響.MSE是回歸預測任務中最常見的評價標準,MSE可以評價數據的變化程度,MSE值越小,說明預測模型描述實驗數據具有更好的精確度.
(11)
(12)
Google集群工作負載跟蹤[23]包含了超過2500萬個任務,分布在12500多臺主機上,記錄了29天內約12500個計算節點的使用狀態.收集的信息包括CPU利用率、內存利用率、磁盤I/O時間、磁盤空間等.本文實驗將數據集劃分成3組,其中包括計算模型權重的訓練集(從開始到20天),用于選擇超參數和防止過度擬合的驗證集(從第21天-第26天),以及用于評估模型效果的測試集(從第27天到最后).在確定好超參數后,將訓練集和驗證集結合起來訓練最終模型,并在測試集上評估最終模型.
4.2.1 平均負載預測
在本節實驗中,我們將BC-LSTM方法與其他四種方法進行了比較,包括樸素貝葉斯模型[4]、PSR+EA-GMDH[13]、LSTM[5]、Autoencoder+ESN[14],這些方法都已平均負載預測方面表現出良好的性能.圖4示了不同方法之間MSSE結果的比較.如圖4(a)所示,Autoencoder+ESN,LSTM和BC-LSTM方法顯著優于Bayes和PSR+EA-GMDH,這得益于神經網絡優秀的非線性擬合能力,并且本文所提出的BC-LSTM方法達到了最好的預測精度.

圖4 不同方法MSSE結果比較Fig.4 Comparison of MSSE results by different methods
如圖4(b)所示,將BC-LSTM、LSTM、ESN進行詳細的比較.在預測長度0.7h、1.3h和2.7h時3種方法精度差異不太顯著,但隨著預測長度增大,在長度達到5.3h和10.7h時,BC-LSTM方法表現出顯著的優越性.結果表明,本文的BC-LSTM方法的MSSE變化曲線比LSTM和ESN表現更加平滑,這表明BC-LSTM方法在處理主機負載的高方差和高噪聲時具有更好的非線性泛化能力.
4.2.2 實際負載預測
為了充分評估本文的BC-LSTM方法方法預測主機負載變化的能力,我們將其與AR[10]、ANN[12]、PSR+EA-GMDH[13]、Autoencoder+ESN[14],和LSTM[15]等方法進行比較.實驗分別使用RMSPE和MSE兩種評價標準來衡量預測效果.
與LSTM方法相同的是,BC-LSTM方法使用LSTM基礎單元作為模型組成單元,可提取更多有用的特征,二者都可以做向量輸出,不會產生累積誤差.與LSTM方法不同的是,BC-LSTM方法增加了卷積操作提取時間序列空間特征,并且使用了雙向特征學習,這使得它具有比LSTM方法擁有更好的非線性泛化能力.
如圖5所示,整體來看,BC-LSTM方法在預測實際負載值能保持較好的穩定性,能夠最長提前36步預測主機負載值仍然保持較好效果.如圖5(a)所示,從MSE值來看,隨著預測步長從6步(0.5h)增大到36步(3h),BC-LSTM方法的MSE從0.0032逐漸增大到0.0053.LSTM方法的MSE值從0.0036逐漸增大到0.0057.在6種預測長度上,BC-LSTM方法預測效果分別比LSTM方法提高了11.6%、12.5%、16.1%、10.0%、9%、8%.隨著預測步長的增大,所有方法的預測性能都有所下降,但BC-LSTM方法仍然能保持相對較好的預測效果.如圖5(b)所示,從RMSPE值來看,BC-LSTM方法能始終保持穩定,在前期預測長度不超過18步時,BC-LSTM方法的預測性能始終優于LSTM,其RMSPE值平均值能始終低0.02.隨著預測長度超過18步,BC-LSTM方法性能有所減弱,但也優于LSTM方法0.01.

圖5 主機負載預測的MSE和RMSPEFig.5 MSE and RMSPE of host load prediction
該數據集從真實在線云系統收集,收集了176臺機器在40天內的負載跟蹤數據,包含17個性能指標的數據[24].根據集群機器用途以及資源負載特征,我們將主機負載分為3類:(a)穩定負載,即部署了科學計算等批量作業的機器;(b)周期負載,部署有批處理作業的機器,如MapReduce;(c)抖動負載,使用web服務部署的機器,如nginx.將數據集劃分成3組,其中包括計算模型權重的訓練集(從開始到第30天),用于選擇超參數和防止過度擬合的驗證集(從第30天到第36天),以及用于評估模型效果的測試集(從第36天到最后).
4.3.1 穩定負載預測
如圖6所示,每一種方法在預測主機平均負載和實際負載都有很好的效果.預測效果不會隨著預測長度的遞增而減弱,始終保持在較為穩定的水平上.本文的BC-LSTM方法始終稍稍領先于其他方法的預測效果.原因是部署像科學計算這樣的批處理作業的機器往往具有穩定的負載,這些應用程序具有固定的工作模式,并且它們對資源的使用變化很小,穩定保持在一定的水平上.因此,模型很容易捕捉到主機負載序列的特性,并對主機負載做出準確的預測.

圖6 穩定負載預測的MSSE 和MSEFig.6 MSSE and MSE of stable load prediction
4.3.2 周期負載預測
如圖7(a)所示,與其他方法相比,BC-LSTM和LSTM的預測精度均有提高.偶爾或周期性負載峰值的機器在云計算中很常見.在數百神經元的幫助下,神經網絡具有強大的特征提取能力,能夠更好地檢測系統狀態,預測變化的到達時間.如圖7(a),在平均負載預測時,BC-LSTM稍稍優于LSTM,兩種方法都保持比較穩定的預測效果.如圖7(b),在預測實際負載時,相對于其他方法,短期內BC-LSTM能夠保持較大優勢,因為它可以從上面提到的數據中學到更多的信息.隨著預測長度增大,BC-LSTM方法與其他方法相比的優勢逐漸減弱.

圖7 周期負載預測的MSSE和MSEFig.7 MSSE and MSE of periodic load prediction
4.3.3 抖動負載預測
從圖8可以看出,在面對高變化的抖動負載序列時,所有方法預測效果都受到極大的影響,但BC-LSTM和LSTM始終保持著明顯的優勢.隨著網絡請求隨機到達,帶有web服務的機器的負載會有更劇烈的波動.由于負荷的工作模式是動態變化的,傳統的線性函數方法不再適合這種復雜的情況.利用非線性函數變換的神經網絡可以更好地處理高變化的主機負載.在預測平均負載時,BC-LSTM方法預測效果最好,貝葉斯方法表現最差的.在預測實際負載時,隨著預測長度增大,BC-LSTM方法的預測性能逐漸顯著.當預測長度超過18步(1.5h),只有BC-LSTM方法和LSTM方法能保持較為穩定的預測效果,其他方法的預測效果都發生極速減弱.并且本文的BC-LSTM方法始終能夠領先于LSTM的預測效果.原因是與LSTM相比,BC-LSTM對兩個方向的數據進行處理,發現更多的隱藏特征,獲得更低的預測誤差.

圖8 抖動負載預測的MSSE和MSEFig.8 MSSE and MSE of jitter load prediction
綜上所述,本文總結分析云平臺主機資源負載預測領域各個方面,綜合對比各方法,具體如表2所示.

表2 預測方法總結Table 2 Summary of prediction methods
我們對BC-LSTM方法進行時間開銷分析,同時將其與其他方法進行比較.理論上應該將模型執行時間分為3個部分,即準備階段、訓練階段以及預測階段.其中Bayes、AR模型運行在CPU環境,其他4種深度學習模型運行在GPU環境.在實際預測工作中,Bayes、PSR+EA-GMDH、Autoencoder+ESN等模型嚴重依賴于特征提取步驟,而LSTM和BC-LSTM都是典型的端到端模型,不需要額外的特征提取對于模型訓練階段,且Bayes、PSR+EA-GMDH、AR等模型無法直接進行多步預測,需要借助多次遞歸進行.因此無法客觀統一比較各個模型的前期準備時間和建模訓練時間.
在本文工作中,我們更關心模型預測過程中所消耗的時間,因為預測過程中所消耗的時間會對數據中心的資源調度和其他工作產生影響.表3中給出了各個模型在預測時出結果所花費時間,僅供參考.由此可得,非深度學習方法的預測速度相對較快但卻無法獲取更高的預測精度.在5種深度學習預測方法中,本文提出的BC-LSTM既保持了最好的預測精度,又保持相對較短的預測時間.

表3 不同算法的執行時間Table 3 Execution time of different algorithms
本文提出了一種基于雙向卷積長短期內存(BC-LSTM)的方法用于在云中預測主機負載.該方法能夠預測未來連續時間間隔上的平均負載,以及長期單個時間間隔上的實際負載.本文使用Google Trace和Hadoop集群兩個真實負載跟蹤來評估所提出的方法.根據實驗結果,BC-LSTM模型顯示出良好的自適應能力,并且在兩個數據集中都實現了最優的性能.對于未來的工作,我們將進行更多的研究,以進一步提高BC-LSTM的特征學習能力,將該方法改進為實時模型,將其應用于實際主機負載預測.本文所提出的預測方法主要是為了提高負載預測精度,所以在算法的預測時間上并沒有太大的優勢,這也是今后工作中需要改進的部分.