朱金燦,鄧 莉,梁晨君,嚴(yán) 明,謝同磊,任正偉
1(武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065) 2(智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430065) 3(新加坡科技研究局,新加坡138632) E-mail:dengli@wust.edu.cn
在本文工作中,我們使用指數(shù)分段預(yù)測(cè)模式將未來連續(xù)區(qū)間內(nèi)的主機(jī)平均負(fù)載預(yù)測(cè)轉(zhuǎn)換為單一區(qū)間的預(yù)測(cè)模式,實(shí)驗(yàn)采用雙向卷積長(zhǎng)短期記憶模型(Bidirectional Convolutional Long Short-Term Memory,,BC-LSTM)作為預(yù)測(cè)模型.與以往的方法不同的是,BC-LSTM模型可以做序列輸出,可以很好地完成主機(jī)實(shí)際負(fù)載多步預(yù)測(cè),消除了累計(jì)誤差.并且BC-LSTM是一種端到端模型,不需要實(shí)驗(yàn)中進(jìn)行特征提取工作,模型可以自動(dòng)學(xué)習(xí)到負(fù)載序列的雙向依賴信息.最后我們?cè)趦蓚€(gè)真實(shí)負(fù)載數(shù)據(jù)集驗(yàn)證,結(jié)果表明本文方法比現(xiàn)有方法具有更好的性能.
主機(jī)負(fù)載預(yù)測(cè)能夠在滿足服務(wù)水平協(xié)議的前提下,提高資源的分配和利用率.因此受到研究人員的廣泛關(guān)注.通常情況下,研究人員基于歷史負(fù)載信息來預(yù)測(cè)未來負(fù)載信息,這是一個(gè)典型的時(shí)間序列預(yù)測(cè)問題.本文將現(xiàn)有的主機(jī)負(fù)載預(yù)測(cè)方法歸納為以下3類.
傳統(tǒng)統(tǒng)計(jì)學(xué)概率模型.此類方法在傳統(tǒng)網(wǎng)格或HPC系統(tǒng)中應(yīng)用較多.研究人員將馬爾科夫鏈與季節(jié)性分析相結(jié)合,提前一個(gè)時(shí)間步預(yù)測(cè)網(wǎng)格系統(tǒng)中主機(jī)CPU和網(wǎng)絡(luò)負(fù)載信息[8].Ankita 等人[9]提出了一種改進(jìn)的基于自回歸(AR)的主機(jī)負(fù)載預(yù)測(cè)模型,在網(wǎng)格系統(tǒng)中取得了良好的效果.該方法適用于負(fù)載穩(wěn)定、較小的電網(wǎng)負(fù)載系統(tǒng).Wu等人[10]提出了一種將自回歸模型與置信區(qū)間估計(jì)方法相結(jié)合進(jìn)行預(yù)測(cè)和卡爾曼濾波消除噪聲的混合方法.與傳統(tǒng)的AR模型相比,很好地提高了預(yù)測(cè)精度,并且能夠進(jìn)行多步預(yù)測(cè).然而該模型在長(zhǎng)期負(fù)載和平均負(fù)載預(yù)測(cè)方面表現(xiàn)不佳.
機(jī)器學(xué)習(xí)模型.Sheng等人[4]基于Google Trace數(shù)據(jù)集設(shè)計(jì)9個(gè)新的特征,使用樸素貝葉斯模型預(yù)測(cè)主機(jī)在未來連續(xù)區(qū)間內(nèi)的平均負(fù)載.該方法提高了平均負(fù)載預(yù)測(cè)的準(zhǔn)確性,但缺點(diǎn)是不能完全捕捉到主機(jī)負(fù)載隨著分段長(zhǎng)度指數(shù)的增加而變化的情況,并且隨著指數(shù)的增加,區(qū)間過長(zhǎng)會(huì)導(dǎo)致預(yù)測(cè)精度極速下降.Cortez等人[11]對(duì)Microsoft Azure負(fù)載數(shù)據(jù)進(jìn)行特征分析,使用隨機(jī)森林模型對(duì)未來主機(jī)資源實(shí)際負(fù)載進(jìn)行預(yù)測(cè),表明對(duì)于云平臺(tái)主機(jī)實(shí)際負(fù)載預(yù)測(cè)的可預(yù)測(cè)性和重要性.Zhong等人設(shè)計(jì)了加權(quán)支持向量機(jī)進(jìn)行自適應(yīng)預(yù)測(cè),并用粒子群算法尋找最優(yōu)參數(shù)[6].它的性能優(yōu)于傳統(tǒng)的支持向量機(jī)模型,但模型只適合小樣本數(shù)據(jù),在云平臺(tái)大型數(shù)據(jù)集上的表現(xiàn)效果大大減弱.
神經(jīng)網(wǎng)絡(luò)模型.Duy等[12]將前饋人工神經(jīng)網(wǎng)絡(luò)(ANN)應(yīng)用于主機(jī)負(fù)載預(yù)測(cè)任務(wù),并且比傳統(tǒng)分布式系統(tǒng)中的先前方法具有更好的性能.與AR模型相比,ANN模型最顯著的優(yōu)勢(shì)是非線性擬合能力,它可以捕獲輸入和輸出值之間的潛在關(guān)系,但是由于輸入固定且有限,因此無法預(yù)測(cè)長(zhǎng)期主機(jī)負(fù)載.Yang等人[13]提出了相空間重構(gòu)(PSR)和基于進(jìn)化算法的分組數(shù)據(jù)處理方法(EA-GMDH).模型使用PSR重構(gòu)時(shí)間序列,使用進(jìn)化算法優(yōu)化的前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè).然而由于節(jié)點(diǎn)數(shù)量有限,該方法無法進(jìn)行多步預(yù)測(cè).研究人員使用自動(dòng)編碼器從時(shí)間序列中提取特征,并使用回聲狀態(tài)網(wǎng)絡(luò)(ESN)執(zhí)行多步提前主機(jī)負(fù)載預(yù)測(cè)[14].盡管該方法的性能優(yōu)于以往的方法,但仍然存在人工選擇漏失率、對(duì)自動(dòng)編碼器提取特征的依賴性很高,以及大型儲(chǔ)備層隨機(jī)初始化可能導(dǎo)致性能下降等缺點(diǎn).在時(shí)間序列預(yù)測(cè)領(lǐng)域,為了提取到序列的更多特征,以便進(jìn)行精確的多步提前負(fù)載預(yù)測(cè),研究人員使用卷積長(zhǎng)短期記憶(Convolutional Long Short-Term Memory,convLSTM)神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)[15].與以往的方法相比,convLSTM的優(yōu)勢(shì)在于學(xué)習(xí)長(zhǎng)期依賴關(guān)系的能力、自動(dòng)特征提取能力、強(qiáng)大的非線性泛化能力以及同時(shí)提取時(shí)序空間依賴信息.
本文所提出方法思路是將時(shí)間序列回歸預(yù)測(cè)問題轉(zhuǎn)換為監(jiān)督學(xué)習(xí)問題.通過模型訓(xùn)練來建立歷史序列信息和預(yù)測(cè)序列信息的關(guān)系映射.主機(jī)負(fù)載時(shí)間序列被劃分為固定大小連續(xù)的歷史序列;每個(gè)歷史序列都對(duì)應(yīng)著一個(gè)固定大小的預(yù)測(cè)序列.這兩個(gè)序列分別用作模型的輸入和輸出.在本文工作中,預(yù)測(cè)序列可以是未來某個(gè)時(shí)間段主機(jī)實(shí)際負(fù)載值,也可以是未來連續(xù)時(shí)間間隔內(nèi)的主機(jī)平均負(fù)載值.
假設(shè)已有的歷史資源負(fù)載序列是X=(xt-1,xt-2,…,xt-n),其中xt=(at,bt)為t時(shí)刻主機(jī)的CPU、內(nèi)存資源負(fù)載值.本文只考慮CPU利用率和內(nèi)存利用率,因?yàn)檫@兩個(gè)指標(biāo)最直接反應(yīng)集群機(jī)器的資源能耗情況[4].假設(shè)需要預(yù)測(cè)的未來主機(jī)資源負(fù)載序列為O=(xt+1,xt+2,…,xt+m),O表示當(dāng)前時(shí)刻t之后的m步的負(fù)載序列.利用監(jiān)督學(xué)習(xí)的思想在歷史序列和未來序列之間初步建立映射函數(shù)f,如公式(1)所示.
(xt+1,xt+2,…,xt+m)=f(xt-1,xt-2,…,xt-n)
(1)
云環(huán)境中工作負(fù)載存在依賴關(guān)系,直觀地講,歷史值越接近當(dāng)前時(shí)間t,它們之間的關(guān)系就越密切,而遠(yuǎn)離現(xiàn)在的歷史負(fù)荷可以提供諸如趨勢(shì)之類的有用信息,保持依賴信息持久化傳輸,從而有助于預(yù)測(cè).根據(jù)云環(huán)境中任務(wù)依賴關(guān)系,某一時(shí)刻的主機(jī)資源負(fù)載不僅受歷史資源負(fù)載的影響,而且和未來資源負(fù)載有關(guān)[16].對(duì)于模型而言,長(zhǎng)距離的依賴信息可以提供趨勢(shì)信息,不能完全遺忘掉.為了更好地利用過去和未來的負(fù)載序列來建立函數(shù)關(guān)系,公式(1)進(jìn)一步更改為如公式(2)所示:
O=f(g1(xt-1,…,xt-n),g2(xt-n,…,xt-1))
(2)
在公式(2)中函數(shù)g1是對(duì)負(fù)載序列信息的正序利用,而函數(shù)g2是對(duì)負(fù)載序列信息的逆序利用.在t時(shí)刻,模型既能夠利用t-1時(shí)刻以前的信息,又能夠利用到t+1時(shí)刻以后的信息.
CNN模型在處理一維時(shí)間序列數(shù)據(jù)有很好的非線性擬合能力,可以負(fù)責(zé)時(shí)間序列空間維度的特征學(xué)習(xí)[17].LSTM模型能夠保留學(xué)習(xí)過程中長(zhǎng)距離依賴信息,可以負(fù)責(zé)時(shí)間序列時(shí)間維度的特征學(xué)習(xí)[18].綜合上述考慮,本文使用雙向卷積長(zhǎng)短期記憶模型(Bidirectional Convolutional LSTM,BC-LSTM)作為預(yù)測(cè)模型,區(qū)別于經(jīng)典的LSTM模型,BC-LSTM模型單元主要改動(dòng)在于輸入層和隱藏層狀態(tài)傳播之前使用卷積操作代替全連接形式以及長(zhǎng)期記憶的反饋調(diào)節(jié),這使得模型不僅可以提取時(shí)間序列空間特征,還可以在模型訓(xùn)練過程中保留長(zhǎng)期依賴信息[19].本文在正反兩個(gè)方向疊加模型,使得預(yù)測(cè)模型能夠成功提取時(shí)間序列兩個(gè)方向的依賴信息.如圖1中預(yù)測(cè)模型框架所示,本文中使用的BC-LSTM體系結(jié)構(gòu)由一組循環(huán)連接的子網(wǎng)組成,這些子網(wǎng)稱為存儲(chǔ)塊.BC-LSTM模型的核心思想是使用兩個(gè)獨(dú)立的隱藏層來處理來自前向和后向的序列數(shù)據(jù),以分別模擬歷史和未來信息對(duì)當(dāng)前隱藏狀態(tài)的影響.BC-LSTM模型單個(gè)的內(nèi)部結(jié)構(gòu)如圖1所示.
圖1 convLSTM內(nèi)部結(jié)構(gòu)圖Fig.1 Internal structure of convLSTM
BC-LSTM模型使用單元狀態(tài)Ct來保存長(zhǎng)期記憶,如公式(3)所示,單元狀態(tài)由遺忘門和輸入門共同作用.整個(gè)過程可分為3步.
(3)
第1步遺忘,對(duì)遺忘門輸入信息選擇性的遺忘,保存重要信息,舍棄無用信息.如公式(4)所示,改進(jìn)后的模型單元遺忘門同時(shí)接受上一時(shí)刻的輸出Ht-1,上一時(shí)刻單元狀態(tài)Ct-1以及當(dāng)前時(shí)刻的輸入Xt.模型可以根據(jù)自身權(quán)重學(xué)習(xí)來選擇性舍棄無用信息.
ft=σ(Wxf×Xt+Whf×Ht-1+Wcf°Ct-1+bf)
(4)
第2步選擇,通過輸入門和候選向量來將新的信息選擇性記錄到單元狀態(tài)中.如公式(5)所示,候選向量的作用是對(duì)接收到的序列信息做非線性轉(zhuǎn)換.
(5)
輸入門的計(jì)算如公式(6)所示,改后的輸入門由當(dāng)前時(shí)刻的輸入Xt、上一時(shí)刻的輸出Ht-1以及上一時(shí)刻的單元狀態(tài)Ct-1所共同決定.
it=σ(Wxi×Xt+Whi×Ht-1+Wci°Ct-1+bi)
(6)
第3步輸出,由輸出門控制哪些信息需要被輸出,如公式(7)所示,它控制進(jìn)入輸出向量和隱藏狀態(tài)的新單元狀態(tài)Ct的量.
ot=σ(Wxo×Xt+Who×Ht-1+Wco°Ct+bo)
(7)
最后,可以使用輸出門的結(jié)果和當(dāng)前時(shí)間步的單元狀態(tài)更新隱藏狀態(tài)(或輸出),如公式(8)所示:
Ht=ot°tanh(Ct)
(8)
為了訓(xùn)練BC-LSTM網(wǎng)絡(luò),本文實(shí)驗(yàn)中使用時(shí)間反向傳播(BPTT)算法,該算法包括重復(fù)應(yīng)用鏈?zhǔn)揭?guī)則[20].與先前使用LSTM進(jìn)行主機(jī)負(fù)載預(yù)測(cè)工作類似,當(dāng)參數(shù)變大以防止梯度爆炸時(shí),我們會(huì)在參數(shù)更新之前削減梯度.另外,由于預(yù)測(cè)周期很長(zhǎng),本文還使用了基于時(shí)間的截?cái)喾聪騻鞑ゲ呗訹21],以減少單個(gè)參數(shù)更新的成本.對(duì)于平均負(fù)載預(yù)測(cè)任務(wù),截?cái)嗟拈L(zhǎng)度保持為39.與傳統(tǒng)的LSTM工作不同,由于BC-LSTM方法具有更好的雙向長(zhǎng)期依賴學(xué)習(xí)能力,因此對(duì)于實(shí)際值預(yù)測(cè)任務(wù),此長(zhǎng)度減少為26.表1總結(jié)了BC-LSTM方法在實(shí)驗(yàn)過程中的重要參數(shù)值.
表1 BC-LSTM模型參數(shù)Table 1 Parameters of the BC-LSTM model
如圖2所示,通過指數(shù)分割模式,未來特定的預(yù)測(cè)區(qū)間被分割成一組連續(xù)的時(shí)間段,時(shí)間長(zhǎng)度呈指數(shù)增長(zhǎng),總預(yù)測(cè)長(zhǎng)度表示為s.第一個(gè)時(shí)間段s1稱為基線段,是從當(dāng)前時(shí)間點(diǎn)t0開始,到t0+b結(jié)束,長(zhǎng)度為b.每個(gè)后續(xù)區(qū)間段的長(zhǎng)度為si=2i-2×b,其中i=2,3…n.本文的目標(biāo)是預(yù)測(cè)每個(gè)時(shí)間段的主機(jī)平均負(fù)載,記作li.在圖2中,l1是基線段s1的平均負(fù)載.
圖2 指數(shù)分段預(yù)測(cè)模式Fig.2 Exponential segmented prediction model
根據(jù)指數(shù)分段模式可知,每個(gè)時(shí)間段的平均負(fù)載預(yù)測(cè)是整個(gè)過程的關(guān)鍵步驟.由于主機(jī)負(fù)載總是在相鄰的短期間隔之間具有較高的相關(guān)性,而不是在非相鄰的短期間隔之間,因此本文直接根據(jù)證據(jù)區(qū)間來預(yù)測(cè)連續(xù)間隔中的負(fù)載.如圖3所示,采用指數(shù)分段模式后,只需要預(yù)測(cè)一組從當(dāng)前時(shí)間t0開始的不同長(zhǎng)度的未來時(shí)間間隔平均主機(jī)負(fù)載ηi,預(yù)測(cè)的區(qū)間時(shí)間段表示[t0,ti].分段后預(yù)測(cè)區(qū)間的平均負(fù)荷水平表示為li,時(shí)間區(qū)間段為[ti-1,ti].
圖3 主機(jī)負(fù)載分段模式Fig.3 Host load segmentation mode
由此可得:li×(ti-ti-1)+ηi-1×(ti-1-t0)=ηi-1×(ti-t0).在本文中,t0=0,ti=2ti-1,可進(jìn)一步將簡(jiǎn)化計(jì)算得出:
li=2ηi-ηi-1
(9)
根據(jù)公式(9),我們可將預(yù)測(cè)連續(xù)時(shí)間段上的主機(jī)平均負(fù)載問題轉(zhuǎn)化為預(yù)測(cè)從當(dāng)前時(shí)刻開始不同時(shí)間長(zhǎng)度的主機(jī)平均負(fù)載.
為了評(píng)估BC-LSTM方法,本文在2個(gè)真實(shí)環(huán)境的數(shù)據(jù)集上開展實(shí)驗(yàn),預(yù)測(cè)了2個(gè)集群負(fù)載跟蹤的實(shí)際負(fù)載值和平均負(fù)載值.實(shí)驗(yàn)在服務(wù)器上進(jìn)行,機(jī)器具體配置為28核CPU(CPU的型號(hào)為Intel(R)Xeon(R)CPU E5-2620 v4 @ 2.10GHz),內(nèi)存容量為126G,顯卡型號(hào)為NVIDIA Tesla P100.本文將BC-LSTM方法與以前的工作進(jìn)行比較,分別進(jìn)行了平均負(fù)載預(yù)測(cè)和實(shí)際負(fù)載預(yù)測(cè).為了檢驗(yàn)各種方法的有效性,本文考慮了3種不同的評(píng)估指標(biāo).
其中均方分段誤差(Mean Segment Squared Error,MSSE)用來度量平均負(fù)載預(yù)測(cè),均方根百分比誤差(Root Mean Square Percentage Error,RMSPE)以及均方誤差(Mean Square Error,MSE)用來度量實(shí)際負(fù)載預(yù)測(cè).
對(duì)于平均負(fù)載預(yù)測(cè),實(shí)驗(yàn)使用指數(shù)分段模式的指標(biāo)來描述主機(jī)負(fù)載在長(zhǎng)度呈指數(shù)增長(zhǎng)的連續(xù)時(shí)間間隔內(nèi)的波動(dòng).為了量化指數(shù)分段模式的平均負(fù)荷預(yù)測(cè)的準(zhǔn)確性,采用MSSE來表示預(yù)測(cè)效果,其定義如公式(10)所示:
(10)
對(duì)于實(shí)際負(fù)載預(yù)測(cè),指數(shù)分段預(yù)測(cè)模式無法完全捕捉主機(jī)隨時(shí)間的負(fù)載變化,因此本文還使用RMSPE和MSE來評(píng)估方法的準(zhǔn)確性.二者定義如公式(11)-公式(12)所示,其中oi是預(yù)測(cè)值,yi是真實(shí)負(fù)載值,n是預(yù)測(cè)長(zhǎng)度.RMSPE評(píng)價(jià)指標(biāo)常見于數(shù)據(jù)科學(xué)競(jìng)賽中用來評(píng)價(jià)回歸任務(wù)擬合效果,能夠很好地反映出預(yù)測(cè)值與真實(shí)值之間的偏離程度,同時(shí)把每個(gè)預(yù)測(cè)點(diǎn)的誤差歸一化,降低個(gè)別離群點(diǎn)帶來的誤差影響.MSE是回歸預(yù)測(cè)任務(wù)中最常見的評(píng)價(jià)標(biāo)準(zhǔn),MSE可以評(píng)價(jià)數(shù)據(jù)的變化程度,MSE值越小,說明預(yù)測(cè)模型描述實(shí)驗(yàn)數(shù)據(jù)具有更好的精確度.
(11)
(12)
Google集群工作負(fù)載跟蹤[23]包含了超過2500萬個(gè)任務(wù),分布在12500多臺(tái)主機(jī)上,記錄了29天內(nèi)約12500個(gè)計(jì)算節(jié)點(diǎn)的使用狀態(tài).收集的信息包括CPU利用率、內(nèi)存利用率、磁盤I/O時(shí)間、磁盤空間等.本文實(shí)驗(yàn)將數(shù)據(jù)集劃分成3組,其中包括計(jì)算模型權(quán)重的訓(xùn)練集(從開始到20天),用于選擇超參數(shù)和防止過度擬合的驗(yàn)證集(從第21天-第26天),以及用于評(píng)估模型效果的測(cè)試集(從第27天到最后).在確定好超參數(shù)后,將訓(xùn)練集和驗(yàn)證集結(jié)合起來訓(xùn)練最終模型,并在測(cè)試集上評(píng)估最終模型.
4.2.1 平均負(fù)載預(yù)測(cè)
在本節(jié)實(shí)驗(yàn)中,我們將BC-LSTM方法與其他四種方法進(jìn)行了比較,包括樸素貝葉斯模型[4]、PSR+EA-GMDH[13]、LSTM[5]、Autoencoder+ESN[14],這些方法都已平均負(fù)載預(yù)測(cè)方面表現(xiàn)出良好的性能.圖4示了不同方法之間MSSE結(jié)果的比較.如圖4(a)所示,Autoencoder+ESN,LSTM和BC-LSTM方法顯著優(yōu)于Bayes和PSR+EA-GMDH,這得益于神經(jīng)網(wǎng)絡(luò)優(yōu)秀的非線性擬合能力,并且本文所提出的BC-LSTM方法達(dá)到了最好的預(yù)測(cè)精度.
圖4 不同方法MSSE結(jié)果比較Fig.4 Comparison of MSSE results by different methods
如圖4(b)所示,將BC-LSTM、LSTM、ESN進(jìn)行詳細(xì)的比較.在預(yù)測(cè)長(zhǎng)度0.7h、1.3h和2.7h時(shí)3種方法精度差異不太顯著,但隨著預(yù)測(cè)長(zhǎng)度增大,在長(zhǎng)度達(dá)到5.3h和10.7h時(shí),BC-LSTM方法表現(xiàn)出顯著的優(yōu)越性.結(jié)果表明,本文的BC-LSTM方法的MSSE變化曲線比LSTM和ESN表現(xiàn)更加平滑,這表明BC-LSTM方法在處理主機(jī)負(fù)載的高方差和高噪聲時(shí)具有更好的非線性泛化能力.
4.2.2 實(shí)際負(fù)載預(yù)測(cè)
為了充分評(píng)估本文的BC-LSTM方法方法預(yù)測(cè)主機(jī)負(fù)載變化的能力,我們將其與AR[10]、ANN[12]、PSR+EA-GMDH[13]、Autoencoder+ESN[14],和LSTM[15]等方法進(jìn)行比較.實(shí)驗(yàn)分別使用RMSPE和MSE兩種評(píng)價(jià)標(biāo)準(zhǔn)來衡量預(yù)測(cè)效果.
與LSTM方法相同的是,BC-LSTM方法使用LSTM基礎(chǔ)單元作為模型組成單元,可提取更多有用的特征,二者都可以做向量輸出,不會(huì)產(chǎn)生累積誤差.與LSTM方法不同的是,BC-LSTM方法增加了卷積操作提取時(shí)間序列空間特征,并且使用了雙向特征學(xué)習(xí),這使得它具有比LSTM方法擁有更好的非線性泛化能力.
如圖5所示,整體來看,BC-LSTM方法在預(yù)測(cè)實(shí)際負(fù)載值能保持較好的穩(wěn)定性,能夠最長(zhǎng)提前36步預(yù)測(cè)主機(jī)負(fù)載值仍然保持較好效果.如圖5(a)所示,從MSE值來看,隨著預(yù)測(cè)步長(zhǎng)從6步(0.5h)增大到36步(3h),BC-LSTM方法的MSE從0.0032逐漸增大到0.0053.LSTM方法的MSE值從0.0036逐漸增大到0.0057.在6種預(yù)測(cè)長(zhǎng)度上,BC-LSTM方法預(yù)測(cè)效果分別比LSTM方法提高了11.6%、12.5%、16.1%、10.0%、9%、8%.隨著預(yù)測(cè)步長(zhǎng)的增大,所有方法的預(yù)測(cè)性能都有所下降,但BC-LSTM方法仍然能保持相對(duì)較好的預(yù)測(cè)效果.如圖5(b)所示,從RMSPE值來看,BC-LSTM方法能始終保持穩(wěn)定,在前期預(yù)測(cè)長(zhǎng)度不超過18步時(shí),BC-LSTM方法的預(yù)測(cè)性能始終優(yōu)于LSTM,其RMSPE值平均值能始終低0.02.隨著預(yù)測(cè)長(zhǎng)度超過18步,BC-LSTM方法性能有所減弱,但也優(yōu)于LSTM方法0.01.
圖5 主機(jī)負(fù)載預(yù)測(cè)的MSE和RMSPEFig.5 MSE and RMSPE of host load prediction
該數(shù)據(jù)集從真實(shí)在線云系統(tǒng)收集,收集了176臺(tái)機(jī)器在40天內(nèi)的負(fù)載跟蹤數(shù)據(jù),包含17個(gè)性能指標(biāo)的數(shù)據(jù)[24].根據(jù)集群機(jī)器用途以及資源負(fù)載特征,我們將主機(jī)負(fù)載分為3類:(a)穩(wěn)定負(fù)載,即部署了科學(xué)計(jì)算等批量作業(yè)的機(jī)器;(b)周期負(fù)載,部署有批處理作業(yè)的機(jī)器,如MapReduce;(c)抖動(dòng)負(fù)載,使用web服務(wù)部署的機(jī)器,如nginx.將數(shù)據(jù)集劃分成3組,其中包括計(jì)算模型權(quán)重的訓(xùn)練集(從開始到第30天),用于選擇超參數(shù)和防止過度擬合的驗(yàn)證集(從第30天到第36天),以及用于評(píng)估模型效果的測(cè)試集(從第36天到最后).
4.3.1 穩(wěn)定負(fù)載預(yù)測(cè)
如圖6所示,每一種方法在預(yù)測(cè)主機(jī)平均負(fù)載和實(shí)際負(fù)載都有很好的效果.預(yù)測(cè)效果不會(huì)隨著預(yù)測(cè)長(zhǎng)度的遞增而減弱,始終保持在較為穩(wěn)定的水平上.本文的BC-LSTM方法始終稍稍領(lǐng)先于其他方法的預(yù)測(cè)效果.原因是部署像科學(xué)計(jì)算這樣的批處理作業(yè)的機(jī)器往往具有穩(wěn)定的負(fù)載,這些應(yīng)用程序具有固定的工作模式,并且它們對(duì)資源的使用變化很小,穩(wěn)定保持在一定的水平上.因此,模型很容易捕捉到主機(jī)負(fù)載序列的特性,并對(duì)主機(jī)負(fù)載做出準(zhǔn)確的預(yù)測(cè).
圖6 穩(wěn)定負(fù)載預(yù)測(cè)的MSSE 和MSEFig.6 MSSE and MSE of stable load prediction
4.3.2 周期負(fù)載預(yù)測(cè)
如圖7(a)所示,與其他方法相比,BC-LSTM和LSTM的預(yù)測(cè)精度均有提高.偶爾或周期性負(fù)載峰值的機(jī)器在云計(jì)算中很常見.在數(shù)百神經(jīng)元的幫助下,神經(jīng)網(wǎng)絡(luò)具有強(qiáng)大的特征提取能力,能夠更好地檢測(cè)系統(tǒng)狀態(tài),預(yù)測(cè)變化的到達(dá)時(shí)間.如圖7(a),在平均負(fù)載預(yù)測(cè)時(shí),BC-LSTM稍稍優(yōu)于LSTM,兩種方法都保持比較穩(wěn)定的預(yù)測(cè)效果.如圖7(b),在預(yù)測(cè)實(shí)際負(fù)載時(shí),相對(duì)于其他方法,短期內(nèi)BC-LSTM能夠保持較大優(yōu)勢(shì),因?yàn)樗梢詮纳厦嫣岬降臄?shù)據(jù)中學(xué)到更多的信息.隨著預(yù)測(cè)長(zhǎng)度增大,BC-LSTM方法與其他方法相比的優(yōu)勢(shì)逐漸減弱.
圖7 周期負(fù)載預(yù)測(cè)的MSSE和MSEFig.7 MSSE and MSE of periodic load prediction
4.3.3 抖動(dòng)負(fù)載預(yù)測(cè)
從圖8可以看出,在面對(duì)高變化的抖動(dòng)負(fù)載序列時(shí),所有方法預(yù)測(cè)效果都受到極大的影響,但BC-LSTM和LSTM始終保持著明顯的優(yōu)勢(shì).隨著網(wǎng)絡(luò)請(qǐng)求隨機(jī)到達(dá),帶有web服務(wù)的機(jī)器的負(fù)載會(huì)有更劇烈的波動(dòng).由于負(fù)荷的工作模式是動(dòng)態(tài)變化的,傳統(tǒng)的線性函數(shù)方法不再適合這種復(fù)雜的情況.利用非線性函數(shù)變換的神經(jīng)網(wǎng)絡(luò)可以更好地處理高變化的主機(jī)負(fù)載.在預(yù)測(cè)平均負(fù)載時(shí),BC-LSTM方法預(yù)測(cè)效果最好,貝葉斯方法表現(xiàn)最差的.在預(yù)測(cè)實(shí)際負(fù)載時(shí),隨著預(yù)測(cè)長(zhǎng)度增大,BC-LSTM方法的預(yù)測(cè)性能逐漸顯著.當(dāng)預(yù)測(cè)長(zhǎng)度超過18步(1.5h),只有BC-LSTM方法和LSTM方法能保持較為穩(wěn)定的預(yù)測(cè)效果,其他方法的預(yù)測(cè)效果都發(fā)生極速減弱.并且本文的BC-LSTM方法始終能夠領(lǐng)先于LSTM的預(yù)測(cè)效果.原因是與LSTM相比,BC-LSTM對(duì)兩個(gè)方向的數(shù)據(jù)進(jìn)行處理,發(fā)現(xiàn)更多的隱藏特征,獲得更低的預(yù)測(cè)誤差.
圖8 抖動(dòng)負(fù)載預(yù)測(cè)的MSSE和MSEFig.8 MSSE and MSE of jitter load prediction
綜上所述,本文總結(jié)分析云平臺(tái)主機(jī)資源負(fù)載預(yù)測(cè)領(lǐng)域各個(gè)方面,綜合對(duì)比各方法,具體如表2所示.
表2 預(yù)測(cè)方法總結(jié)Table 2 Summary of prediction methods
我們對(duì)BC-LSTM方法進(jìn)行時(shí)間開銷分析,同時(shí)將其與其他方法進(jìn)行比較.理論上應(yīng)該將模型執(zhí)行時(shí)間分為3個(gè)部分,即準(zhǔn)備階段、訓(xùn)練階段以及預(yù)測(cè)階段.其中Bayes、AR模型運(yùn)行在CPU環(huán)境,其他4種深度學(xué)習(xí)模型運(yùn)行在GPU環(huán)境.在實(shí)際預(yù)測(cè)工作中,Bayes、PSR+EA-GMDH、Autoencoder+ESN等模型嚴(yán)重依賴于特征提取步驟,而LSTM和BC-LSTM都是典型的端到端模型,不需要額外的特征提取對(duì)于模型訓(xùn)練階段,且Bayes、PSR+EA-GMDH、AR等模型無法直接進(jìn)行多步預(yù)測(cè),需要借助多次遞歸進(jìn)行.因此無法客觀統(tǒng)一比較各個(gè)模型的前期準(zhǔn)備時(shí)間和建模訓(xùn)練時(shí)間.
在本文工作中,我們更關(guān)心模型預(yù)測(cè)過程中所消耗的時(shí)間,因?yàn)轭A(yù)測(cè)過程中所消耗的時(shí)間會(huì)對(duì)數(shù)據(jù)中心的資源調(diào)度和其他工作產(chǎn)生影響.表3中給出了各個(gè)模型在預(yù)測(cè)時(shí)出結(jié)果所花費(fèi)時(shí)間,僅供參考.由此可得,非深度學(xué)習(xí)方法的預(yù)測(cè)速度相對(duì)較快但卻無法獲取更高的預(yù)測(cè)精度.在5種深度學(xué)習(xí)預(yù)測(cè)方法中,本文提出的BC-LSTM既保持了最好的預(yù)測(cè)精度,又保持相對(duì)較短的預(yù)測(cè)時(shí)間.
表3 不同算法的執(zhí)行時(shí)間Table 3 Execution time of different algorithms
本文提出了一種基于雙向卷積長(zhǎng)短期內(nèi)存(BC-LSTM)的方法用于在云中預(yù)測(cè)主機(jī)負(fù)載.該方法能夠預(yù)測(cè)未來連續(xù)時(shí)間間隔上的平均負(fù)載,以及長(zhǎng)期單個(gè)時(shí)間間隔上的實(shí)際負(fù)載.本文使用Google Trace和Hadoop集群兩個(gè)真實(shí)負(fù)載跟蹤來評(píng)估所提出的方法.根據(jù)實(shí)驗(yàn)結(jié)果,BC-LSTM模型顯示出良好的自適應(yīng)能力,并且在兩個(gè)數(shù)據(jù)集中都實(shí)現(xiàn)了最優(yōu)的性能.對(duì)于未來的工作,我們將進(jìn)行更多的研究,以進(jìn)一步提高BC-LSTM的特征學(xué)習(xí)能力,將該方法改進(jìn)為實(shí)時(shí)模型,將其應(yīng)用于實(shí)際主機(jī)負(fù)載預(yù)測(cè).本文所提出的預(yù)測(cè)方法主要是為了提高負(fù)載預(yù)測(cè)精度,所以在算法的預(yù)測(cè)時(shí)間上并沒有太大的優(yōu)勢(shì),這也是今后工作中需要改進(jìn)的部分.