史愛(ài)武 羅良杰 何 凱
(武漢紡織大學(xué)云計(jì)算與大數(shù)據(jù)研究中心 湖北 武漢 430200)
云計(jì)算作為一種新型計(jì)算模式,在過(guò)去十年得到了飛速的發(fā)展。它利用虛擬化技術(shù),將包括計(jì)算資源、存儲(chǔ)資源和網(wǎng)絡(luò)資源在內(nèi)的各種資源虛擬化,以按需使用、按量付費(fèi)的方式為用戶提供可擴(kuò)展的彈性計(jì)算服務(wù)[1]?;谔摂M機(jī)的虛擬化技術(shù)或容器虛擬化技術(shù)虛擬出來(lái)并提供給用戶使用的各種資源,統(tǒng)稱為云資源。同時(shí),云計(jì)算的發(fā)展還催生了眾多的大規(guī)模數(shù)據(jù)中心[2]。目前,數(shù)據(jù)中心的規(guī)模和復(fù)雜度仍處于動(dòng)態(tài)增長(zhǎng)中,各種形式的軟硬件資源還在不斷地被添加到云計(jì)算系統(tǒng)中。盡管這些數(shù)據(jù)中心的建立很好地滿足了社會(huì)的計(jì)算需求,但也帶來(lái)了一些問(wèn)題和挑戰(zhàn)。其中資源管理問(wèn)題最為突出。譬如,云廠商必須遵守與用戶簽訂的服務(wù)等級(jí)協(xié)議(Service-Level Agreement,SLA),保證提供給用戶的服務(wù)滿足要求。如果資源供應(yīng)不足就會(huì)造成SLA違約、服務(wù)質(zhì)量(Quality of Service,QoS)降低,進(jìn)而導(dǎo)致用戶流失。而資源供給過(guò)剩,雖不會(huì)給用戶造成影響,但會(huì)導(dǎo)致嚴(yán)重的資源浪費(fèi),間接造成經(jīng)濟(jì)損失。對(duì)于一個(gè)龐大且復(fù)雜的數(shù)據(jù)中心而言,要想實(shí)現(xiàn)靈活的資源配置和管理,保證一定程度上的供需平衡,必須要求數(shù)據(jù)中心能夠預(yù)知云資源的變化情況,即要建立一個(gè)精準(zhǔn)的云資源預(yù)測(cè)模型。因此,云資源的預(yù)測(cè)成為了云計(jì)算研究領(lǐng)域的一個(gè)研究熱點(diǎn)。
國(guó)內(nèi)外許多學(xué)者針對(duì)云資源的預(yù)測(cè)研究提出了多種預(yù)測(cè)方法。目前使用較廣泛的云資源預(yù)測(cè)模型主要可分為兩大類,一類是傳統(tǒng)的時(shí)間序列預(yù)測(cè)方法,包括差分自回歸滑動(dòng)平均模型(Autoregressive Integrated Moving Average,ARIMA)、指數(shù)平滑法(Exponential Smoothing,ES )等。文獻(xiàn)[3]使用ARIMA對(duì)云環(huán)境下的應(yīng)用負(fù)載進(jìn)行了預(yù)測(cè),取得了不錯(cuò)的預(yù)測(cè)效果,初步驗(yàn)證了傳統(tǒng)的時(shí)間序列方法在云資源負(fù)載預(yù)測(cè)中的可行性。但是該文中只對(duì)Web服務(wù)器的請(qǐng)求負(fù)載進(jìn)行了預(yù)測(cè)分析,對(duì)于該方法在CPU負(fù)載、內(nèi)存負(fù)載等一些系統(tǒng)關(guān)鍵指標(biāo)上的適用性還有待驗(yàn)證。同時(shí),傳統(tǒng)的時(shí)間序列預(yù)測(cè)方法大多只能捕捉線性趨勢(shì),而云資源負(fù)載序列往往都是非線性和非平穩(wěn)的,導(dǎo)致此類方法的預(yù)測(cè)精度較低,難以滿足大數(shù)據(jù)時(shí)代對(duì)預(yù)測(cè)精度的要求。另一類是機(jī)器學(xué)習(xí)算法。學(xué)者們?cè)缙谥饕褂弥С窒蛄繖C(jī)(Support Vector Machine,SVM)[4]、貝葉斯模型[5]和人工神經(jīng)網(wǎng)絡(luò)算法[6]。相比傳統(tǒng)的方法,這些算法的預(yù)測(cè)精度更高,但是也更為復(fù)雜,并且需要大量的歷史數(shù)據(jù)進(jìn)行訓(xùn)練。后來(lái)隨著循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和長(zhǎng)短時(shí)記憶(Long Short Term Memory,LSTM)網(wǎng)絡(luò)的出現(xiàn),它們一躍成為當(dāng)時(shí)最優(yōu)的時(shí)間序列預(yù)測(cè)算法[7]。直到近兩年,文獻(xiàn)[8]研究發(fā)現(xiàn),相比循環(huán)神經(jīng)網(wǎng)絡(luò),時(shí)間卷積網(wǎng)絡(luò)(Temporal Convolutional Network,TCN)在多個(gè)時(shí)間序列預(yù)測(cè)問(wèn)題上表現(xiàn)得更好,因而許多學(xué)者開(kāi)始使用TCN代替循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)序數(shù)據(jù)的建模研究。RNN和TCN等模型相比傳統(tǒng)模型雖有著更優(yōu)的預(yù)測(cè)效果,但是隨著研究的深入,一些研究者發(fā)現(xiàn)使用單一模型很難較好地?cái)M合非線性和非平穩(wěn)的云資源負(fù)載序列。于是開(kāi)始研究用單一模型進(jìn)行搭配,試圖設(shè)計(jì)出合理的組合預(yù)測(cè)模型。大量研究結(jié)果表明,相比單一模型,組合優(yōu)化模型可以更好地?cái)M合序列,顯著提高預(yù)測(cè)精度[9-11]。
除了從模型方面改進(jìn)預(yù)測(cè)精度外,還有學(xué)者試圖把信號(hào)分解方法應(yīng)用于時(shí)序數(shù)據(jù)預(yù)測(cè)的研究中來(lái)改進(jìn)預(yù)測(cè)精度。由于時(shí)間序列數(shù)據(jù)大多都具有高度的非線性非平穩(wěn)等特點(diǎn),現(xiàn)有方法建立的預(yù)測(cè)模型難以精準(zhǔn)預(yù)測(cè)。學(xué)者們從降低時(shí)間序列數(shù)據(jù)本身的復(fù)雜性出發(fā),提出了基于經(jīng)驗(yàn)?zāi)B(tài)分解(Empirical Mode Decomposition,EMD)和機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型的組合預(yù)測(cè)模型,并將其應(yīng)用在多個(gè)時(shí)間序列預(yù)測(cè)領(lǐng)域,均取得了精度上的提升。如文獻(xiàn)[12]將改進(jìn)的EMD-SVM模型應(yīng)用在了風(fēng)速預(yù)測(cè)領(lǐng)域,結(jié)果表明該模型在不同時(shí)間步長(zhǎng)上的預(yù)測(cè)效果都要優(yōu)于現(xiàn)有的方法。文獻(xiàn)[13]為了提高電力預(yù)測(cè)的精度,分別比較了RNN、LSTM、EMD-RNN、EMD-LSTM在電力預(yù)測(cè)中的效果,實(shí)驗(yàn)結(jié)果表明EMD-LSTM取得了最好的效果。目前,同屬時(shí)序數(shù)據(jù)預(yù)測(cè)研究的云資源預(yù)測(cè)領(lǐng)域有關(guān)EMD或TCN的研究還很少。因此,本文提出了基于經(jīng)驗(yàn)?zāi)B(tài)分解和時(shí)間卷積網(wǎng)絡(luò)(EMD-TCN)的云資源組合預(yù)測(cè)模型。
經(jīng)驗(yàn)?zāi)B(tài)分解,也被稱為希爾伯特-黃變換,是 Huang等[14]提出的一種高效且自適應(yīng)的信號(hào)分解方法,特別適合于非線性和非平穩(wěn)的時(shí)頻數(shù)據(jù)分析。它克服了小波分析中基函數(shù)無(wú)法自適應(yīng)性的缺點(diǎn),使用起來(lái)更加靈活和簡(jiǎn)單??蓪⒎蔷€性和非平穩(wěn)的時(shí)間序列分解為一組平均和為零的準(zhǔn)周期信號(hào),使信號(hào)變得平穩(wěn)化,減少信號(hào)間特征信息的干擾。這些信號(hào)被稱作本征模態(tài)分量(Intrinsic Mode Function,IMF)和殘余分量,可表示為:
(1)
式中:x(t)是數(shù)據(jù)的原始值,每個(gè)hi(t)表示第i個(gè)IMF分量,r(t)是殘差分量。下面簡(jiǎn)要說(shuō)明EMD的分解過(guò)程:
1) 根據(jù)信號(hào)x(t)的局部極值求出其上、下包絡(luò)線的均值mt。
2) 將原數(shù)據(jù)序列減去平均包絡(luò)線后,可得到一個(gè)去掉低頻的新數(shù)據(jù)序列ht=x(t)-mt。
3) 判斷ht是否滿足以下兩個(gè)條件:(1)極值數(shù)與過(guò)零點(diǎn)的數(shù)目相等或最多相差一個(gè);(2)在任意時(shí)刻,其上、下包絡(luò)線的均值必須是零。若不滿足條件,就將ht當(dāng)作新的x(t),重復(fù)以上步驟。最后得到的第一個(gè)滿足條件的ht即為第一個(gè)本征模態(tài)分量IMF1,記作c1t。
4) 將rt=x(t)-c1t作為新的x(t),重復(fù)步驟1)-步驟3),即可依次得到本征模態(tài)分量IMF2,IMF3,…,IMFs,直到滿足給定的終止條件時(shí)EMD分解才停止。
時(shí)間卷積網(wǎng)絡(luò)是融合了卷積神經(jīng)網(wǎng)絡(luò)研究中的一些優(yōu)秀成果而提出的一種簡(jiǎn)單而高效的網(wǎng)絡(luò)結(jié)構(gòu)。它和RNN一樣,能夠接受任意長(zhǎng)度的序列,并將其映射到相同長(zhǎng)度的輸出序列中,因而適合應(yīng)用在有時(shí)間依賴的序列任務(wù)中。時(shí)間卷積網(wǎng)絡(luò)的基本組成部分為因果卷積和空洞卷積。
因果卷積是保證時(shí)間卷積網(wǎng)絡(luò)能用于序列建模任務(wù)的根本原因。其與普通一維卷積不同之處在于,它通過(guò)在輸入序列前面補(bǔ)充長(zhǎng)度為k-1的零值向量,來(lái)使輸入與卷積計(jì)算輸出在維度上保持一致,從而保證在時(shí)刻t的輸出只與t和t之前的輸入有關(guān),即確保不會(huì)有未來(lái)的信息泄露到過(guò)去。
普通的因果卷積的接收域與網(wǎng)絡(luò)層數(shù)線性相關(guān),因此如果要提取距離較遠(yuǎn)的數(shù)據(jù),就需要非常深的網(wǎng)絡(luò)層次。為了解決因果卷積無(wú)法獲得長(zhǎng)期依賴的問(wèn)題,TCN中加入了空洞卷積,空洞卷積可以在不增加參數(shù)量的情況下,呈指數(shù)級(jí)的增大卷積的感受野。具體地,一個(gè)空洞因果卷積層如圖1所示,公式表示如下:
(2)
式中:d為擴(kuò)張因子,k為濾波器大小,s-d·i表示過(guò)去的方向。多個(gè)這樣的空洞因果卷積層堆疊起來(lái)就組成了TCN。通過(guò)調(diào)整不同的濾波器大小與網(wǎng)絡(luò)層數(shù),可以使感受野能覆蓋輸入序列中的所有值。為了防止增加網(wǎng)絡(luò)深度而導(dǎo)致梯度彌散或梯度爆炸,TCN中通過(guò)添加殘差連接和正則化層來(lái)解決該問(wèn)題,另外還加入了隨機(jī)失活(Dropout)來(lái)防止過(guò)擬合,TCN 的典型結(jié)構(gòu)如圖2所示。
圖2 TCN典型結(jié)構(gòu)
云資源負(fù)載序列大多數(shù)都具有非線性和非平穩(wěn)的特點(diǎn),導(dǎo)致直接進(jìn)行預(yù)測(cè)的效果往往較差。而EMD特別適合處理這類數(shù)據(jù),它可以把原負(fù)載序列按其內(nèi)在特性自適應(yīng)地分解為若干個(gè)不同頻率且相對(duì)平穩(wěn)的 本征模態(tài)分量IMF和一個(gè)殘余分量Res,分解后的每個(gè)分量相比原序列復(fù)雜度更低,使用模型對(duì)其擬合也更容易。學(xué)術(shù)界目前有不少使用EMD與機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型相結(jié)合的時(shí)序數(shù)據(jù)預(yù)測(cè)模型,常見(jiàn)的做法是為分解后得到的各個(gè)IMF和Res分量分別擬合一個(gè)預(yù)測(cè)模型,最后再將各分量的預(yù)測(cè)結(jié)果合并得到最終的預(yù)測(cè)結(jié)果。盡管這種將信號(hào)分解后分別預(yù)測(cè)再整合的方式得到了較準(zhǔn)確的預(yù)測(cè)結(jié)果,但是由于每有一個(gè)分量就要訓(xùn)練一個(gè)模型對(duì)其擬合,因而時(shí)間復(fù)雜度較高,更適合對(duì)于建模時(shí)間要求不高的時(shí)間序列進(jìn)行預(yù)測(cè)。
而云資源負(fù)載預(yù)測(cè)對(duì)訓(xùn)練時(shí)長(zhǎng)的要求相對(duì)較高,采用上述方式進(jìn)行預(yù)測(cè)是不太適合的。本文針對(duì)云資源預(yù)測(cè)的特點(diǎn),將此方法進(jìn)行了改進(jìn)。對(duì)于EMD分解得到的各個(gè)分量,不再單獨(dú)分別進(jìn)行擬合預(yù)測(cè),而是把它們當(dāng)作原時(shí)序數(shù)據(jù)提取出來(lái)的不同特征,經(jīng)過(guò)處理后輸入到一個(gè)TCN中進(jìn)行建模預(yù)測(cè),這樣只需訓(xùn)練一個(gè)模型即可,在不丟失信息的同時(shí)大大減少了建模所需要的時(shí)間。具體步驟如下:
(1) 對(duì)原序列進(jìn)行缺失值處理和歸一化操作,再采用EMD將原序列分解為多個(gè)IMF和一個(gè)殘差項(xiàng)Res。
(2) 選定時(shí)間步長(zhǎng),并據(jù)此構(gòu)造數(shù)據(jù)。首先將分解后得到的分量按時(shí)間順序排列,然后按照滑動(dòng)窗口截取的方式,把序列構(gòu)造成有監(jiān)督學(xué)習(xí)的形式。其中輸入數(shù)據(jù)的格式為(?,n,k),其中:n為時(shí)間步長(zhǎng),表示用多少個(gè)觀測(cè)數(shù)據(jù)來(lái)預(yù)測(cè)下一個(gè)值,k為原序列經(jīng)EMD分解后得到的分量數(shù)。具體地,當(dāng)滑動(dòng)窗口的時(shí)間步長(zhǎng)為3時(shí),構(gòu)造方式如圖3所示。
圖3 數(shù)據(jù)的構(gòu)造方案
(3) 把構(gòu)造完成后的訓(xùn)練集數(shù)據(jù)輸入到TCN中訓(xùn)練模型,使用建立好的TCN得到最終預(yù)測(cè)結(jié)果。
本文提出的EMD-TCN模型的流程見(jiàn)圖4。
圖4 基于EMD-TCN的云資源預(yù)測(cè)模型
本文提出的模型預(yù)測(cè)分析在Python 3.6環(huán)境下實(shí)現(xiàn),采用深度學(xué)習(xí)框架Keras搭建神經(jīng)網(wǎng)絡(luò)模型。數(shù)據(jù)集為Google Cluster Data(GCD)[15],GCD中記錄了一個(gè)包含12.5k臺(tái)機(jī)器的集群在29天運(yùn)行中的一些重要數(shù)據(jù),包括資源消耗、任務(wù)調(diào)度等。CPU利用率是工業(yè)界改善云計(jì)算數(shù)據(jù)中心的資源配置效率的一個(gè)關(guān)鍵指標(biāo)[16],本文就以機(jī)器的CPU資源負(fù)載為例來(lái)驗(yàn)證EMD-TCN組合模型對(duì)云資源的預(yù)測(cè)性能。但本文方法并不局限于預(yù)測(cè)CPU資源,也可用于預(yù)測(cè)其他云資源指標(biāo)。
GCD中CPU資源負(fù)載的采樣時(shí)間間隔為5 min,采用均值插補(bǔ)法對(duì)缺失值進(jìn)行處理,每臺(tái)機(jī)器每天有288條數(shù)據(jù)記錄,29天共包含8 352條數(shù)據(jù)記錄。選取其中前80%的數(shù)據(jù)作為訓(xùn)練集,后20%作為測(cè)試集。此外,為了加快模型收斂速度,本文對(duì)數(shù)據(jù)進(jìn)行了歸一化處理。
本文參照文獻(xiàn)[17]將GCD中的機(jī)器按照最高CPU負(fù)載量分成了三類,第一類是低負(fù)載型,最高負(fù)載為0.25,第二類是中等負(fù)載型,最高負(fù)載為0.5,第三類是高負(fù)載型,最高負(fù)載為1。從三類機(jī)器中分別隨機(jī)選出一臺(tái)機(jī)器來(lái)詳細(xì)分析模型效果,其他機(jī)器的處理方式完全類似,只對(duì)其進(jìn)行簡(jiǎn)要說(shuō)明。
本文采用均方誤差(Mean Square Error,MSE)、均方根誤差(Root Mean Square Error,RMSE)和平均絕對(duì)百分比誤差(Mean Absolute Percentage Error,MAPE)三個(gè)指標(biāo)來(lái)驗(yàn)證本文所建云計(jì)算資源預(yù)測(cè)模型的有效性。
(3)
(4)
(5)
本實(shí)驗(yàn)中的參數(shù)通過(guò)經(jīng)驗(yàn)和反復(fù)試驗(yàn)不同的參數(shù)組合后確定,采用選定的最優(yōu)參數(shù)進(jìn)行后續(xù)的對(duì)比實(shí)驗(yàn)。設(shè)置TCN層數(shù)為1層,TCN隱層節(jié)點(diǎn)數(shù)為32,激活函數(shù)為tanh,模型學(xué)習(xí)率為0.001,優(yōu)化算法為Adam,滑動(dòng)窗口的時(shí)間步長(zhǎng)為5,Dropout設(shè)置為0.3。文獻(xiàn)[18]研究發(fā)現(xiàn),LSTM相比ARIMA在云資源預(yù)測(cè)中有著更高的預(yù)測(cè)精度。為了檢驗(yàn)本文提出的云資源預(yù)測(cè)模型的性能,將本文模型與單一LSTM模型和單一TCN模型進(jìn)行對(duì)比。
采用上述參數(shù)在不同負(fù)載類型機(jī)器的訓(xùn)練集上進(jìn)行訓(xùn)練,分別建立LSTM、TCN和EMD-TCN的云資源預(yù)測(cè)模型,圖5-圖7展示了不同類型機(jī)器采用三種模型在測(cè)試集上同一天中的預(yù)測(cè)結(jié)果。
圖5 低負(fù)載型機(jī)器的預(yù)測(cè)結(jié)果
圖6 中等負(fù)載型機(jī)器的預(yù)測(cè)結(jié)果
圖7 高負(fù)載機(jī)器的預(yù)測(cè)結(jié)果
可以看到,在LSTM和TCN兩種模型上的預(yù)測(cè)值和實(shí)際值表現(xiàn)出了平移現(xiàn)象,說(shuō)明預(yù)測(cè)存在一定的滯后性,而EMD-TCN的預(yù)測(cè)效果要明顯優(yōu)于另外兩者的預(yù)測(cè)效果。在EMD-TCN模型上的預(yù)測(cè)值與實(shí)際值間并未出現(xiàn)明顯的平移現(xiàn)象,預(yù)測(cè)結(jié)果曲線與真實(shí)負(fù)載曲線之間更加貼合,說(shuō)明使用EMD分解后得到的IMFs分量和殘差分量進(jìn)行預(yù)測(cè)有效地提取出原CPU資源負(fù)載序列的趨勢(shì)和變化信息。為了更加客觀地評(píng)估本模型的效果,通過(guò)多次實(shí)驗(yàn)取平均值,得到各模型在三種類型機(jī)器上的預(yù)測(cè)客觀評(píng)價(jià)指標(biāo)如表1-表3所示。
表1 各類模型在低負(fù)載型上預(yù)測(cè)性能對(duì)比
從表1、表2和表3所展示出的結(jié)果可以更加清楚地發(fā)現(xiàn),在三種不同負(fù)載類型的機(jī)器上,與LSTM模型和TCN模型相比,本文提出的模型在MSE、RMSE、MAPE三個(gè)指標(biāo)上的值都有大幅減低,表示預(yù)測(cè)準(zhǔn)確性有了明顯提高。
表2 各類模型在中等負(fù)載型上預(yù)測(cè)性能對(duì)比
表3 各類模型在高負(fù)載型上預(yù)測(cè)性能對(duì)比
同時(shí),為了進(jìn)一步驗(yàn)證本模型的通用性,又隨機(jī)選取了多臺(tái)機(jī)器,分別測(cè)試了以上三個(gè)模型的預(yù)測(cè)效果。結(jié)果表明,LSTM、TCN和EMD-TCN三種模型在MAPE指標(biāo)上的取值范圍分別為14.452%~20.924%、14.273%~20.584%和7.987%~14.541%,相比于LSTM和TCN,本文提出的模型在MAPE指標(biāo)上平均降低了36.32%和35.37%。
以上結(jié)果證明了EMD-TCN模型具有更好的預(yù)測(cè)效果,其主要原因在于原始CPU資源負(fù)載序列具有高度的時(shí)變性、非線性和非平穩(wěn)性,僅靠單一預(yù)測(cè)方法建立的預(yù)測(cè)模型很難達(dá)到較好的擬合效果,而本文的組合模型結(jié)合了“分而治之”的思想,通過(guò)使用EMD將原始的云資源序列分解為多個(gè)較為平穩(wěn)的IMF后,再將各個(gè)IMF構(gòu)造特征向量矩陣后輸入到TCN進(jìn)行擬合,各個(gè)IMF相比原序列在復(fù)雜度上都有所下降,因而最終擬合的效果相比單一預(yù)測(cè)方法更好。本文理論分析和實(shí)驗(yàn)結(jié)果都證明,相較于LSTM和TCN,EMD-TCN有著更為強(qiáng)大的非線性時(shí)間序列擬合能力,能取得更準(zhǔn)確的預(yù)測(cè)結(jié)果。
實(shí)現(xiàn)云資源負(fù)載的精準(zhǔn)預(yù)測(cè),可以讓數(shù)據(jù)中心在進(jìn)行調(diào)度前,提前感知到機(jī)器的資源負(fù)載變化情況,從而能夠更加靈活地配置資源,提高資源的利用率。本文在現(xiàn)有的云資源負(fù)載預(yù)測(cè)算法的基礎(chǔ)上,提出了基于EMD-TCN的組合預(yù)測(cè)模型,并通過(guò)實(shí)驗(yàn)確定了最優(yōu)的模型參數(shù)。實(shí)驗(yàn)結(jié)果表明,相較于LSTM和TCN,本模型用于云資源負(fù)載預(yù)測(cè)的精度有了明顯提升。