史愛武 羅良杰 何 凱
(武漢紡織大學云計算與大數據研究中心 湖北 武漢 430200)
云計算作為一種新型計算模式,在過去十年得到了飛速的發展。它利用虛擬化技術,將包括計算資源、存儲資源和網絡資源在內的各種資源虛擬化,以按需使用、按量付費的方式為用戶提供可擴展的彈性計算服務[1]。基于虛擬機的虛擬化技術或容器虛擬化技術虛擬出來并提供給用戶使用的各種資源,統稱為云資源。同時,云計算的發展還催生了眾多的大規模數據中心[2]。目前,數據中心的規模和復雜度仍處于動態增長中,各種形式的軟硬件資源還在不斷地被添加到云計算系統中。盡管這些數據中心的建立很好地滿足了社會的計算需求,但也帶來了一些問題和挑戰。其中資源管理問題最為突出。譬如,云廠商必須遵守與用戶簽訂的服務等級協議(Service-Level Agreement,SLA),保證提供給用戶的服務滿足要求。如果資源供應不足就會造成SLA違約、服務質量(Quality of Service,QoS)降低,進而導致用戶流失。而資源供給過剩,雖不會給用戶造成影響,但會導致嚴重的資源浪費,間接造成經濟損失。對于一個龐大且復雜的數據中心而言,要想實現靈活的資源配置和管理,保證一定程度上的供需平衡,必須要求數據中心能夠預知云資源的變化情況,即要建立一個精準的云資源預測模型。因此,云資源的預測成為了云計算研究領域的一個研究熱點。
國內外許多學者針對云資源的預測研究提出了多種預測方法。目前使用較廣泛的云資源預測模型主要可分為兩大類,一類是傳統的時間序列預測方法,包括差分自回歸滑動平均模型(Autoregressive Integrated Moving Average,ARIMA)、指數平滑法(Exponential Smoothing,ES )等。文獻[3]使用ARIMA對云環境下的應用負載進行了預測,取得了不錯的預測效果,初步驗證了傳統的時間序列方法在云資源負載預測中的可行性。但是該文中只對Web服務器的請求負載進行了預測分析,對于該方法在CPU負載、內存負載等一些系統關鍵指標上的適用性還有待驗證。同時,傳統的時間序列預測方法大多只能捕捉線性趨勢,而云資源負載序列往往都是非線性和非平穩的,導致此類方法的預測精度較低,難以滿足大數據時代對預測精度的要求。另一類是機器學習算法。學者們早期主要使用支持向量機(Support Vector Machine,SVM)[4]、貝葉斯模型[5]和人工神經網絡算法[6]。相比傳統的方法,這些算法的預測精度更高,但是也更為復雜,并且需要大量的歷史數據進行訓練。后來隨著循環神經網絡(Recurrent Neural Network,RNN)和長短時記憶(Long Short Term Memory,LSTM)網絡的出現,它們一躍成為當時最優的時間序列預測算法[7]。直到近兩年,文獻[8]研究發現,相比循環神經網絡,時間卷積網絡(Temporal Convolutional Network,TCN)在多個時間序列預測問題上表現得更好,因而許多學者開始使用TCN代替循環神經網絡進行時序數據的建模研究。RNN和TCN等模型相比傳統模型雖有著更優的預測效果,但是隨著研究的深入,一些研究者發現使用單一模型很難較好地擬合非線性和非平穩的云資源負載序列。于是開始研究用單一模型進行搭配,試圖設計出合理的組合預測模型。大量研究結果表明,相比單一模型,組合優化模型可以更好地擬合序列,顯著提高預測精度[9-11]。
除了從模型方面改進預測精度外,還有學者試圖把信號分解方法應用于時序數據預測的研究中來改進預測精度。由于時間序列數據大多都具有高度的非線性非平穩等特點,現有方法建立的預測模型難以精準預測。學者們從降低時間序列數據本身的復雜性出發,提出了基于經驗模態分解(Empirical Mode Decomposition,EMD)和機器學習或深度學習模型的組合預測模型,并將其應用在多個時間序列預測領域,均取得了精度上的提升。如文獻[12]將改進的EMD-SVM模型應用在了風速預測領域,結果表明該模型在不同時間步長上的預測效果都要優于現有的方法。文獻[13]為了提高電力預測的精度,分別比較了RNN、LSTM、EMD-RNN、EMD-LSTM在電力預測中的效果,實驗結果表明EMD-LSTM取得了最好的效果。目前,同屬時序數據預測研究的云資源預測領域有關EMD或TCN的研究還很少。因此,本文提出了基于經驗模態分解和時間卷積網絡(EMD-TCN)的云資源組合預測模型。
經驗模態分解,也被稱為希爾伯特-黃變換,是 Huang等[14]提出的一種高效且自適應的信號分解方法,特別適合于非線性和非平穩的時頻數據分析。它克服了小波分析中基函數無法自適應性的缺點,使用起來更加靈活和簡單。可將非線性和非平穩的時間序列分解為一組平均和為零的準周期信號,使信號變得平穩化,減少信號間特征信息的干擾。這些信號被稱作本征模態分量(Intrinsic Mode Function,IMF)和殘余分量,可表示為:
(1)
式中:x(t)是數據的原始值,每個hi(t)表示第i個IMF分量,r(t)是殘差分量。下面簡要說明EMD的分解過程:
1) 根據信號x(t)的局部極值求出其上、下包絡線的均值mt。
2) 將原數據序列減去平均包絡線后,可得到一個去掉低頻的新數據序列ht=x(t)-mt。
3) 判斷ht是否滿足以下兩個條件:(1)極值數與過零點的數目相等或最多相差一個;(2)在任意時刻,其上、下包絡線的均值必須是零。若不滿足條件,就將ht當作新的x(t),重復以上步驟。最后得到的第一個滿足條件的ht即為第一個本征模態分量IMF1,記作c1t。
4) 將rt=x(t)-c1t作為新的x(t),重復步驟1)-步驟3),即可依次得到本征模態分量IMF2,IMF3,…,IMFs,直到滿足給定的終止條件時EMD分解才停止。
時間卷積網絡是融合了卷積神經網絡研究中的一些優秀成果而提出的一種簡單而高效的網絡結構。它和RNN一樣,能夠接受任意長度的序列,并將其映射到相同長度的輸出序列中,因而適合應用在有時間依賴的序列任務中。時間卷積網絡的基本組成部分為因果卷積和空洞卷積。
因果卷積是保證時間卷積網絡能用于序列建模任務的根本原因。其與普通一維卷積不同之處在于,它通過在輸入序列前面補充長度為k-1的零值向量,來使輸入與卷積計算輸出在維度上保持一致,從而保證在時刻t的輸出只與t和t之前的輸入有關,即確保不會有未來的信息泄露到過去。
普通的因果卷積的接收域與網絡層數線性相關,因此如果要提取距離較遠的數據,就需要非常深的網絡層次。為了解決因果卷積無法獲得長期依賴的問題,TCN中加入了空洞卷積,空洞卷積可以在不增加參數量的情況下,呈指數級的增大卷積的感受野。具體地,一個空洞因果卷積層如圖1所示,公式表示如下:
(2)
式中:d為擴張因子,k為濾波器大小,s-d·i表示過去的方向。多個這樣的空洞因果卷積層堆疊起來就組成了TCN。通過調整不同的濾波器大小與網絡層數,可以使感受野能覆蓋輸入序列中的所有值。為了防止增加網絡深度而導致梯度彌散或梯度爆炸,TCN中通過添加殘差連接和正則化層來解決該問題,另外還加入了隨機失活(Dropout)來防止過擬合,TCN 的典型結構如圖2所示。

圖2 TCN典型結構
云資源負載序列大多數都具有非線性和非平穩的特點,導致直接進行預測的效果往往較差。而EMD特別適合處理這類數據,它可以把原負載序列按其內在特性自適應地分解為若干個不同頻率且相對平穩的 本征模態分量IMF和一個殘余分量Res,分解后的每個分量相比原序列復雜度更低,使用模型對其擬合也更容易。學術界目前有不少使用EMD與機器學習或深度學習模型相結合的時序數據預測模型,常見的做法是為分解后得到的各個IMF和Res分量分別擬合一個預測模型,最后再將各分量的預測結果合并得到最終的預測結果。盡管這種將信號分解后分別預測再整合的方式得到了較準確的預測結果,但是由于每有一個分量就要訓練一個模型對其擬合,因而時間復雜度較高,更適合對于建模時間要求不高的時間序列進行預測。
而云資源負載預測對訓練時長的要求相對較高,采用上述方式進行預測是不太適合的。本文針對云資源預測的特點,將此方法進行了改進。對于EMD分解得到的各個分量,不再單獨分別進行擬合預測,而是把它們當作原時序數據提取出來的不同特征,經過處理后輸入到一個TCN中進行建模預測,這樣只需訓練一個模型即可,在不丟失信息的同時大大減少了建模所需要的時間。具體步驟如下:
(1) 對原序列進行缺失值處理和歸一化操作,再采用EMD將原序列分解為多個IMF和一個殘差項Res。
(2) 選定時間步長,并據此構造數據。首先將分解后得到的分量按時間順序排列,然后按照滑動窗口截取的方式,把序列構造成有監督學習的形式。其中輸入數據的格式為(?,n,k),其中:n為時間步長,表示用多少個觀測數據來預測下一個值,k為原序列經EMD分解后得到的分量數。具體地,當滑動窗口的時間步長為3時,構造方式如圖3所示。

圖3 數據的構造方案
(3) 把構造完成后的訓練集數據輸入到TCN中訓練模型,使用建立好的TCN得到最終預測結果。
本文提出的EMD-TCN模型的流程見圖4。

圖4 基于EMD-TCN的云資源預測模型
本文提出的模型預測分析在Python 3.6環境下實現,采用深度學習框架Keras搭建神經網絡模型。數據集為Google Cluster Data(GCD)[15],GCD中記錄了一個包含12.5k臺機器的集群在29天運行中的一些重要數據,包括資源消耗、任務調度等。CPU利用率是工業界改善云計算數據中心的資源配置效率的一個關鍵指標[16],本文就以機器的CPU資源負載為例來驗證EMD-TCN組合模型對云資源的預測性能。但本文方法并不局限于預測CPU資源,也可用于預測其他云資源指標。
GCD中CPU資源負載的采樣時間間隔為5 min,采用均值插補法對缺失值進行處理,每臺機器每天有288條數據記錄,29天共包含8 352條數據記錄。選取其中前80%的數據作為訓練集,后20%作為測試集。此外,為了加快模型收斂速度,本文對數據進行了歸一化處理。
本文參照文獻[17]將GCD中的機器按照最高CPU負載量分成了三類,第一類是低負載型,最高負載為0.25,第二類是中等負載型,最高負載為0.5,第三類是高負載型,最高負載為1。從三類機器中分別隨機選出一臺機器來詳細分析模型效果,其他機器的處理方式完全類似,只對其進行簡要說明。
本文采用均方誤差(Mean Square Error,MSE)、均方根誤差(Root Mean Square Error,RMSE)和平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)三個指標來驗證本文所建云計算資源預測模型的有效性。
(3)
(4)
(5)

本實驗中的參數通過經驗和反復試驗不同的參數組合后確定,采用選定的最優參數進行后續的對比實驗。設置TCN層數為1層,TCN隱層節點數為32,激活函數為tanh,模型學習率為0.001,優化算法為Adam,滑動窗口的時間步長為5,Dropout設置為0.3。文獻[18]研究發現,LSTM相比ARIMA在云資源預測中有著更高的預測精度。為了檢驗本文提出的云資源預測模型的性能,將本文模型與單一LSTM模型和單一TCN模型進行對比。
采用上述參數在不同負載類型機器的訓練集上進行訓練,分別建立LSTM、TCN和EMD-TCN的云資源預測模型,圖5-圖7展示了不同類型機器采用三種模型在測試集上同一天中的預測結果。

圖5 低負載型機器的預測結果

圖6 中等負載型機器的預測結果

圖7 高負載機器的預測結果
可以看到,在LSTM和TCN兩種模型上的預測值和實際值表現出了平移現象,說明預測存在一定的滯后性,而EMD-TCN的預測效果要明顯優于另外兩者的預測效果。在EMD-TCN模型上的預測值與實際值間并未出現明顯的平移現象,預測結果曲線與真實負載曲線之間更加貼合,說明使用EMD分解后得到的IMFs分量和殘差分量進行預測有效地提取出原CPU資源負載序列的趨勢和變化信息。為了更加客觀地評估本模型的效果,通過多次實驗取平均值,得到各模型在三種類型機器上的預測客觀評價指標如表1-表3所示。

表1 各類模型在低負載型上預測性能對比
從表1、表2和表3所展示出的結果可以更加清楚地發現,在三種不同負載類型的機器上,與LSTM模型和TCN模型相比,本文提出的模型在MSE、RMSE、MAPE三個指標上的值都有大幅減低,表示預測準確性有了明顯提高。

表2 各類模型在中等負載型上預測性能對比

表3 各類模型在高負載型上預測性能對比
同時,為了進一步驗證本模型的通用性,又隨機選取了多臺機器,分別測試了以上三個模型的預測效果。結果表明,LSTM、TCN和EMD-TCN三種模型在MAPE指標上的取值范圍分別為14.452%~20.924%、14.273%~20.584%和7.987%~14.541%,相比于LSTM和TCN,本文提出的模型在MAPE指標上平均降低了36.32%和35.37%。
以上結果證明了EMD-TCN模型具有更好的預測效果,其主要原因在于原始CPU資源負載序列具有高度的時變性、非線性和非平穩性,僅靠單一預測方法建立的預測模型很難達到較好的擬合效果,而本文的組合模型結合了“分而治之”的思想,通過使用EMD將原始的云資源序列分解為多個較為平穩的IMF后,再將各個IMF構造特征向量矩陣后輸入到TCN進行擬合,各個IMF相比原序列在復雜度上都有所下降,因而最終擬合的效果相比單一預測方法更好。本文理論分析和實驗結果都證明,相較于LSTM和TCN,EMD-TCN有著更為強大的非線性時間序列擬合能力,能取得更準確的預測結果。
實現云資源負載的精準預測,可以讓數據中心在進行調度前,提前感知到機器的資源負載變化情況,從而能夠更加靈活地配置資源,提高資源的利用率。本文在現有的云資源負載預測算法的基礎上,提出了基于EMD-TCN的組合預測模型,并通過實驗確定了最優的模型參數。實驗結果表明,相較于LSTM和TCN,本模型用于云資源負載預測的精度有了明顯提升。