謝同磊,鄧 莉,曹 振,梁晨君,李 超
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.湖北大學 信息建設與管理處,湖北 武漢 430062)
云數據中心按需為用戶提供服務,服務器主機規模龐大,資源利用率低、耗電量高。研究表明微軟Azure[1]有60%的虛擬機平均CPU利用率低于20%,有40%的虛擬機第95個百分數的最大CPU利用率低于50%;谷歌云平臺主機CPU利用率低且呈現出隨機的波動[2];低資源利用率主要是由云平臺缺乏有效的資源管理造成的。主機負載預測可以促進有效的調度和資源優化配置,關閉不必要的空閑機器,幫助云平臺進行有效的資源管理,降低數據中心成本。
在最近的研究工作中,一些深度學習的方法被應用到了主機負載預測。為了提前多步預測主機負載,Song等[3]使用長短期記憶網絡LSTM模型進行主機負載預測,并取得比以往統計學方法更好的效果,但是隨著隱藏層的增加會出現模型過擬合等問題。文獻[4]基于深度循環神經網絡編碼器-解碼器設計了一種主機負載在線預測模型,然而隨著模型復雜度的提升,仍然會出現過擬合現象。Nguyen等[5]使用遺傳算法和群智能算法代替神經網絡中的反向傳播過程,由于神經網絡模型的大量參數計算,會增大遺傳算法的計算復雜性。
云平臺資源利用率主要包括內存資源利用率和CPU資源利用率等,主機CPU資源利用率是反映云平臺能耗情況的重要指標。本文首先對云平臺CPU資源使用情況的特點進行分析,設計并實現了基于Zoneout的長短期記憶網絡主機負載預測方法(long short term memory with Zoneout,LSTM-Z)。該預測方法改變LSTM細胞狀態的保留機制,使得LSTM門控結構中的隱藏層神經元隨機地保持上一個時刻狀態的值,進一步提高預測模型的泛化能力。神經元的更新策略會因為主機負載的突變性和隨機波動性產生較大的性能擾動,而LSTM-Z基于隨機保留和更新的策略表現出更加穩定的性能,泛化性更好,能較好地適應主機負載的波動性特點。在云平臺主機的生命周期中,主機負載的不同歷史數據對預測值的影響大小各異。為了更好地學習到歷史窗口的數據依賴關系,本文基于遺傳算法來優化主機負載歷史窗口的權重向量,進一步提高模型的預測性能。遺傳算法能夠更好地收斂且能跳出局部最優,通過迭代進化探索歷史窗口的權重向量能夠較好學習歷史信息,使本文所提的方法能更準確地預測主機負載。
資源利用率低是云平臺面臨的主要挑戰之一,而主機資源負載預測有助于實施有效的主動資源調度,同時能夠滿足服務水平協議(service level agreements,SLA)。目前大多數主機負載預測的工作都與機器學習有關,特別是深度學習。主要的相關工作體現在以下幾個方面。
基于深度學習模型優化的方法在主機負載預測中的運用。Nguyen等[6]采用基于編碼器和解碼器的LSTM模型進行主機負載預測,并取得了比以往更好的效果。為了提高LSTM的記憶能力和非線性建模能力,Gupta等[7]提出了一種基于稀疏BLSTM的云數據中心資源使用預測方法。該方法是一種端到端模型,能雙向地提取時序特征,不需要額外的特征提取步驟,資源預測的準確性比以往的方法有所提升。文獻[8]基于概率預測(probabilistic forecast)和改進的多層長短期記憶網絡(LSTM)云資源預測模型(PF-LSTM)進行研究,引入主機網絡流量作為預測CPU利用率的額外協變量,使得模型的預測性能優于大部分傳統策略方法。為了緩解循環神經網絡梯度消失等問題,同時增強神經網絡模型學習長期依賴關系的能力,Li等[9]提出了改進的循環神經網絡模型(independently recurrent neural network,INDRNN)。此方法通過堆疊多個層來構建比一般RNN更深的深度網絡,IDNRNN能夠處理非常長的序列,可用于構建非常深的網絡,并且可以進行穩定的訓練。Billa等[10]探索了將Dropout技術應用到LSTM神經網絡的前饋連接中,提高了模型的泛化性能。Zoneout比以前的研究更有優勢,其最顯著的貢獻是不僅激活一個單元,而且保存它,使單元在語義上有意義,Zoneout旨在提高LSTM對隱藏狀態擾動的魯棒性,并使用隨機機制強制隱藏層神經單元保持其先前狀態的值,使梯度信息和狀態信息更容易通過時間傳播[11]。
結合遺傳算法(genetic algorithm,GA)的神經網絡模型研究。Nguyen等[5],使用遺傳算法代替功能鏈接神經網絡(functional link neural network,FLNN)的反向傳播過程,提出了GA-FLNN對云平臺作業實際使用主機資源進行預測,GA能夠避免陷入局部最優并克服反向傳播算法中收斂速度慢等問題,但此方法訓練的神經元的結點較少,無法學習數據中心復雜的數據分布特性。此外,還有研究基于遺傳算法優化BP神經網絡(back propagation,BP)的連接權重和閾值來預測老人的負性情緒[12]。使用遺傳算法取代神經網絡中大量神經元參數的計算過程會非常耗時,因為在迭代進化計算的過程中,種群大小以及迭代次數會嚴重影響訓練模型的時間,這影響了主機負載預測的實時性。
由于云平臺環境的復雜性和用戶作業提交的多變性,主機負載數據存在突變性和非線性等特點,這些方法難以有效捕獲主機負載中短期突變的信息和學習歷史數據的依賴關系。本文基于Zoneout的LSTM預測模型改變原來記憶細胞狀態的更新,提高LSTM對隱藏狀態中擾動的魯棒性,使得梯度信息和狀態信息更容易通過時間傳播。主機某一時間點的負載情況與其附近的負載具有較大的相關性,離時間點越近,其差距就越小。遺傳算法能夠較好地收斂且能跳出局部最優,通過迭代進化探索歷史窗口的權重向量能夠較好地表示歷史信息的依賴關系,使得提出的預測方法具有更好的性能。
目前有已發布的真實云平臺資源使用跟蹤數據,如谷歌trace[4]以及阿里云trace[13]等。本文以谷歌2011 trace和阿里云2018 trace為例進行分析。谷歌trace中記錄了谷歌云平臺超過1.2萬臺主機運行29天里的所有任務日志,其中有超過2500萬個任務的資源使用數據,每個作業至少包含一個任務。谷歌trace并沒有直接記錄主機負載的日志文件,因此需要把一臺主機中在同一個時間戳內所有任務的資源使用情況提取為當前時間戳內主機的負載信息。在阿里云trace中,記錄了大約4000臺主機運行8天的日志信息,其中直接包含了主機的負載數據表。
根據公布的云平臺跟蹤日志分析,云平臺的主機資源利用率不高、負載不均衡,使得云平臺維護成本高。圖1描述了分別在谷歌trace和阿里云trace隨機抽取的100臺主機CPU利用率的CDF圖。圖1表明,云平臺中主機CPU資源利用率大部分沒有超過60%。其中,在阿里云trace中這些主機的CPU資源利用率集中在30%~50%之間,谷歌trace中這些主機的CPU資源利用率集中在10%~40%之間。云平臺這種較低的資源利用率可能是由云平臺中用戶實際使用資源與云環境為用戶預留資源之間的巨大差距造成的[14]。雖然,通過設置閾值機制可以比較容易為云環境資源定義擴展規則,但是與應用程序的多變需求相比,設置閾值機制無法準確地為用戶提供資源[5]。
自相關性能夠描述時序數據在時間上的依賴,自相關系數可以衡量這種依賴。對于主機負載序列滯后k階的自相關系數計算如式(1)所示
(1)
式中:mi為第i個時間戳的主機負載值,u為負載的平均值。圖2描述了阿里云trace中隨機抽取的主機(ID:m_1307)CPU利用率的k階自相關系數分布。從圖2可以發現,主機CPU利用率數據具有局部相關性,一些觀測值與附近的一些觀測值相關,歷史數據離當前值越近,對當前時刻的值影響越大。其中,滯后為1階和2階的自相關系數分別為0.9013和0.8403,主機負載數據存在明顯的時間自相關性。這可以通過預測模型學習這種時間依賴關系,根據歷史負載推測未來的主機負載情況。

圖2 阿里云trace主機CPU利用率自相關系數
圖3描述了谷歌trace中隨機抽取的主機(ID:4478967491)在某一時間段內CPU的實際使用情況,CPU資源利用率被歸一化為0~1之間的數值。從圖中可以看出CPU的利用率在一定范圍內波動,呈現出非線性的特點,具有一定的突變性。在5月12日0時20分,CPU的利用率在局部范圍內達到了最高0.4412;在5月12日16時,CPU的利用率在局部范圍內突然降到了最低0.0752。云平臺負載較大的波動性以及在短期內的突變性使得現有的預測模型難以準確預測。

圖3 谷歌trace中主機CPU使用情況
歷史數據是預測未來的重要參考信息,基于歷史負載的變化情況預測主機未來的資源使用情況是提高其性能和工作效率的有效方法。本文將主機負載時間序列數據劃分為固定窗口大小的歷史序列數據,每個歷史序列數據對應一個預測序列數據,通過訓練模型來建立歷史與未來的映射關系。假設隨機抽取的一臺主機歷史序列數據為 (m1,m2,…,mn), 則預測模式為:(mi,…,mi+s-1)=f(mi-1,…,mi-k)。 其中,f為映射關系,s為預測步長,k為歷史窗口大小。
針對第2節云平臺跟蹤數據的資源使用特點,設計了如圖4所示的云平臺基于LSTM-Z的主機負載預測方法,用于主機CPU負載預測。主要由預處理器、訓練器和預測器3個部分組成。通過預處理器對原始跟蹤進行數據預處理,谷歌trace中任務資源使用數據被轉化為對應時間戳的主機負載數據。原始跟蹤數據較大且存在缺失值和異常值。因此,需要進行數據清洗和特征選擇等一系列的工作。歸一化消除量綱的影響,最后基于滑動窗口方法將數據進行轉化,存儲到數據庫中供模型訓練和預測。在訓練器模塊中,首先初始化滑動窗口權重參數,將時序數據輸入到LSTM-Z進行訓練,其結果用于計算初次的適應度。然后基于遺傳算法進行選擇、交叉、變異,計算適應度函數值。重復此過程至達到迭代終止條件時,保存最優的權重參數和模型,供預測器使用。在預測器中,使用訓練好的模型和歷史的數據對未來的主機負載進行預測。

圖4 云平臺主機負載預測方法LSTM-Z
主機負載數據存在突變性和非線性等特點,這使得傳統的預測模型無法達到較好的預測效果。雖然LSTM本身具有良好的非線性建模能力,但應用于主機負載預測建模時,仍然存在模型泛化能力低等問題。機器學習模型過擬合是長期存在的問題,過擬合的本質是模型適應噪聲,而不是捕捉數據中存在變化的關鍵因素,導致模型的泛化能力弱[15]。正則化可以提高神經網絡模型的泛化能力。
目前Dropout正則化技術被廣泛應用于深度學習模型的訓練中,由于時序信息在一定程度的丟失,Dropout的拋棄機制并不能有效提高主機負載的預測性能。一些學者對循環神經網絡正則化[11]技術有過研究并取得了不錯的效果,文獻[16]將Zoneout運用于跨尺度循環神經網絡中,從而實現對各個模塊的隨機更新。Zoneout本質上仍是一種正則化的技術,不像Dropout那樣刪除隱藏單元,Zoneout旨在提高LSTM對隱藏狀態擾動的魯棒性,并使用隨機機制強制一些隱藏層神經單元保持其先前狀態的值,使得梯度信息和狀態信息更容易通過時間傳播。為了提高LSTM模型主機負載預測的泛化能力,本文將Zoneout更新機制集成到LSTM的門控結構中,改變LSTM細胞狀態的保留機制,從而實現一種主機負載預測方法。
長短期記憶網絡LSTM是一種特殊的循環神經網絡,可以緩解逐漸消失的梯度問題,并且能夠學習長期依賴關系。LSTM通過門結構來控制信息的傳遞,分別是遺忘門、輸入門、輸出門。LSTM-Z通過將某些單元的激活隨機替換為它們在上一個時間步的激活,控制LSTM細胞形態和狀態特征的下一次輸出,其具體每一步的信息傳遞過程如圖5所示,圖5中的粗線部分是Zoneout技術引入的新操作,表示相應的狀態被對應的掩碼所屏蔽。其中ft、it、ot、ct、ht分別表示遺忘門、輸入門、輸出門、記憶單元、隱藏層的輸出值,Wf、Wi、Wg、Wo分別表示遺忘門、輸入門、細胞狀態、輸出門的權重矩陣,bf、bi、bg、bo分別表示相應的偏置,dt表示對應的掩碼信息,具體計算步驟如下:

圖5 LSTM-Z模型結構
(1)細胞狀態通過遺忘門的sigmoid計算單元對重要信息進行保留,選擇性丟掉不重要的信息。遺忘門通過查看ht-1和xt的數據信息計算得到一個0到1之間的向量值,向量中的值表示對上一個細胞狀態中對應信息的保留程度。具體計算過程如式(2)所示
ft=σ(Wf[ht-1,xt]+bf)
(2)
(2)通過遺忘掉不重要的信息以后,細胞狀態通過輸入門進行信息更新。將ht-1和xt送進輸入門來操作信息的更新,然后利用tanh單元計算ht-1和xt新的候選細胞信息gt,這個過程的計算如式(3)和式(4)所示
it=σ(Wi[ht-1,xt]+bi)
(3)
gt=tanh(Wg[ht-1,xt]+bg)
(4)
(3)通過前兩步的計算,在此步更新細胞信息ct-1為ct。在LSTM門控結構中,根據遺忘門的信息ft和輸入門更新后的候選信息gt得到新的細胞信息ct。原始LSTM的細胞狀態ct計算如式(5)。為提高模型的泛化能力,本文使用Zoneout來計算下一個細胞狀態。Zoneout在訓練中注入噪聲,這樣可以使隱藏狀態和存儲單元隨機保持先前的值。細胞狀態的計算為式(6)
ct=ft?ct-1+it?gt
(5)
(6)
(4)更新完細胞狀態后,在輸出門根據輸入的ht-1和xt使用sigmoid單元來判斷輸出哪些狀態特征,然后經過tanh層得到一個輸出值向量。原始LSTM在計算隱藏層狀態ht時,如式(8)所示。本文基于隨機機制強制LSTM中隱藏層神經單元保持其先前狀態的值,具體計算隱藏層狀態如式(9)所示
ot=σ(Wo[ht-1,xt]+bo)
(7)
ht=ot?tanh(ct)
(8)

(9)
LSTM-Z模型提高了預測性能,在預測主機負載時表現出了較好的效果。主機負載數據的預測值受鄰近歷史值的影響,不同歷史值其影響大小不同。不同歷史值以及預測長度的變化對模型都產生了一定的影響,于是本文基于遺傳算法對未來主機負載的LSTM-Z預測做進一步優化。
遺傳算法是一種典型的進化算法。其本質是一種高效、并行、全局搜索的方法,引入種群、父代、子代、染色體等基本概念,能夠在搜索的過程中自動獲取有關搜索空間的知識,并通過不斷的進化,探索一種最優的解[12]。遺傳算法能夠較好地處理時序數據的歷史窗口權重信息,這樣能更好地發揮模型對于云平臺具有多變性和波動性數據的預測。
遺傳算法的基本步驟包括編碼、初始化種群、選擇、交叉、變異從而不斷產生新的子代進行求解。編碼是將主機負載歷史信息權重的表現型結構數據轉換為遺傳空間的基因型結構數據。交叉和變異都是在個體間的基因段上進行的。此外,適應度函數和終止條件也是算法中兩個比較重要的概念。適應度函數關系到最優解的確定,而終止條件一般為最大迭代次數或達到解的條件。由于GA選擇個體是根據適應度函數來評估。平均絕對百分比誤差能夠描述預測性能的差異,因此基于式(10),根據式(11)計算適應度的評估值。其中oi和yi分別是預測值與真實值,n為預測樣本數,F為適應度函數
(10)
(11)
主要操作算子的計算過程如下:
(1)初始化:遺傳算法需要解決的是預測優化問題,由于不同歷史值對預測值的影響不同,需要調整歷史值的權重輸入。在初始化時,先隨機初始化滿足式(12)的多個個體,并在此基礎上進行遺傳迭代。假設每代種群有n個個體。每個權重表示占整個歷史信息輸入的比例,歷史值的輸入調整主要包括權重的組合和改變。因此,本文初始化種群,將窗口的參數扁平化為一個一維向量,并進行組編碼。圖6描述了任意一個個體染色體的編碼結構,染色體由多組基因片段組成。一個個體有唯一的一條染色體 (w1,w2,…,wk), 表示一種最優解的可能,其基因序列w表示一個權值所對應的基因片段,g表示相應的基因編碼。其中每個個體基因序列的表現型滿足

圖6 個體染色體的編碼方式
(12)
(2)選擇:根據適應度對個體進行評價,采用輪盤賭算法選擇出優良的個體,每個個體被選擇的概率與其適應度成正比。這是模擬生物自然選擇的過程,如式(13)所示,其中qi為每個個體被選擇的概率,適應度大則表示個體較優,更容易遺傳給后代
(13)
(3)交叉:交叉是遺傳算法的重要操作,是從兩個父代產生后代從而把更多有益的信息遺傳給后代的過程。交叉算子是基于交叉率進行的,對于兩個父代,隨機交換兩個父代的一個基因片段。由于交換基因片段后可能不再滿足式(12),因此需要對個體基因進行調整。對于小于1的個體隨機選取一個基因段的表現型加上其差值,對于大于1的個體隨機選取一個或多個基因段的表現型減去其差值或上限值,直到滿足式(12)。這樣能夠在進行基因組合和調整的過程中保留父代較多的優良基因片段。在式(14)中,C表示交叉調整操作,交叉率為c,c∈[0,1], 當隨機概率小于c時,個體才進行交叉操作。x為第d代的pi和pj交叉后的個體
x(d)=C(pi(d),pj(d))
(14)
(4)變異:變異是遺傳算法的輔助性操作,可以豐富子代以增加新的信息、擴大搜索空間避免陷入局部最優。在滿足式(12)的前提下,在豐富子代的同時使父代的基因片段產生較少的改變,變異操作隨機選擇一個交叉后個體的兩個基因片段,并交換兩個基因片段的位置。在式(15)中,M表示變異操作函數,變異率為m,m∈[0,1]。 算法過程每次產生一個概率數,如果隨機概率數小于變異率,個體則進行變異,否則不進行。p是變異后的個體,用于計算下一代的適應度
p(d+1)=M(x(d))
(15)
為了評估本文的方法,使用第2節中分析的谷歌trace和阿里云trace進行實驗。對于谷歌trace,按照第3節中數據預處理器的方法預處理數據,提取一個月前20天的數據作為訓練集,第21天到26天的數據做驗證集,第27天到最后的數據做測試集。對于阿里云trace,提取第1天到第6天的數據作為訓練集,第7天的數據作為驗證集,第8天的數據作為測試集。本文先使用LSTM-Z預測方法對主機負載預測做了相關實驗,將LSTM-Z與LSTM[3]、INDRNN[9]以及文獻中的BC-LSTM[17]進行對比實驗。使用4.1節所述3個指標客觀評估本文的方法,得出實驗結果并進行對比,最后基于遺傳算法做了進一步的優化實驗。實驗部分本文采用了Keras2.1.5,Tensorflow1.15.0深度學習框架,使用Python3.7進行編程,IDE集成開發環境為PyCharm。硬件環境為6核CPU(Core i5-10400F @ 2.90 GHz),內存容量為16 G(威剛DDR4 2666 MHz)和Nvidia GeForce GTX 1050Ti(4 GB)。
為了客觀評價實驗結果,本文使用回歸任務評估指標均方根誤差(root mean square error,RMSE)、平均絕對誤差(mean absolute error,MAE)和平均絕對百分比誤差(mean absolute percentage error,MAPE)評估實驗方法的性能。RMSE的主要目標是衡量預測值與真實值之間的偏差,受異常值影響大,經常作為機器學習預測結果的評價標準,其計算過程如式(16)所示,其中,oi表示預測值,yi表示真實值,n為預測值數量。MAE具有較好的魯棒性,其計算原理如式(17)所示。MAPE跟MAE很相似,不同之處在于誤差還要與真實值做比較,能較為準確展現出預測值與真實值的相對誤差,其計算過程如式(10)所示
(16)
(17)
云平臺主機負載的準確預測對于提高資源利用率,降低數據中心成本和確保作業調度至關重要。主機負載預測首先要做的工作是短期預測,能較為準確地預測主機未來一步5分鐘的CPU平均負載具有非常重要的意義,因為主機CPU的平均負載水平是衡量云平臺主機集群能耗的一個非常重要的指標。在主機負載預測實驗中,通過控制變量觀察模型的收斂程度、誤差值和運行時間,分別確定出重要的超參數epochs=50,batch_size=130,hidden_size=128,LSTM-Z的方法中單獨設置了zone_out_c=0.8,zone_out_h=0.01,使用Adam做為優化器。實驗初步探索了滑動窗口的長度,一方面要考慮主機負載數據的時間相關性,另一方面也要考慮運行性能。由于負載數據具有的波動性和周期性,滑動窗口的大小對不同數據集預測結果也有影響。結合多次實驗綜合考慮后,對這部分實驗的滑動窗口大小設置為30。
從圖7可以看出,LSTM-Z在訓練集和驗證集上的收斂效果明顯優于其它對比方法且表現出更加穩定的性能,這主要是因為LSTM-Z在進行正則化機制時并沒有完全刪除隱藏單元,隨機地使一些隱藏層神經單元保持其先前狀態的值,提高LSTM對隱藏狀態中擾動的魯棒性,更好地適應主機負載這種具有較大波動性特點的預測。由表1可知,在多個對比實驗中LSTM-Z模型取得了最好的預測效果;與LSTM模型相比,在谷歌trace中MAE、MAPE和RMSE分別降低了8.31%、17.47%和4.51%,在阿里云trace中MAE、MAPE和RMSE分別降低了8.01%、5.24%和8.73%。

表1 測試集上實驗指標的比較

圖7 谷歌trace實驗中loss值的變化情況
在云平臺短期主機負載預測中,預測算法所需時間也是評估模型性能的一個重要指標,在線訓練和預測要求能對未來的主機負載變化做出及時的響應,算法所消耗的時間會影響云平臺資源的調度。結合表1和表2可以看出,基于LSTM和INDRNN的預測模型雖然耗時比較短,但是預測精度相對來說并不高。基于BC-LSTM的主機負載預測方法對之前的工作進行了進一步的改善,但在不同負載數據中表現出性能的不穩定性,同時也增加了時間的消耗。改進門控的LSTM-Z模型顯得更加輕量級并且預測誤差更小,預測時間較短,具有更好的適用性。

表2 算法執行時間對比/ms
為了驗證本文方法在多步預測的有效性,分別進行了時間步長為3和6的實驗,即預測未來15分鐘和30分鐘的主機負載變化情況。從圖8兩個數據集的實驗結果可以看出,隨著預測時間步的增長,實驗中預測模型的預測誤差都在逐漸增大,但是LSTM-Z的預測性能均優于前三者對比的模型。這是因為預測未來更長的時間,云平臺的不確定性因素更大,使得主機負載變化模式更加難以被學習。

圖8 云平臺多步預測的MAPE對比
LSTM-Z使用隨機機制強制一些隱藏單元保持其先前狀態的值,提高了對隱藏狀態擾動的魯棒性和增強了模型的泛化能力。在谷歌trace的多步預測實驗中,與LSTM、INDRNN和BC-LSTM相比,預測未來3步時,MAPE分別降低了8.95%、16.56%、12.83%,預測未來6步時,MAPE分別降低了4.72%、10.42%、9.64%。在阿里云trace的多步預測實驗中,與LSTM、INDRNN和BC-LSTM相比,預測未來3步時,MAPE分別降低了11.66%、14.38%、5.13%,預測未來6步時,MAPE分別降低了9.06%、12.80%、2.33%。
在實驗中,歷史窗口的大小對預測結果產生了一定的影響,主機負載數據的預測值受鄰近歷史值的影響,不同歷史值其影響大小不同。本文基于歷史窗口使用遺傳算法對模型做了進一步優化以達到較好的預測性能。在進一步改進的模型方法中,本文在單步預測的基礎上做了進一步實驗。在實驗中,設置種群大小為48,交叉率為0.5,變異率為0.05。在阿里云trace的預測實驗中MAPE為0.1221,在LSTM-Z實驗模型(MAPE=0.1265)和LSTM實驗模型(MAPE=0.1335)的基礎上,MAPE降低了3.48%和8.54%;在谷歌trace的預測實驗中MAPE為0.1798,在LSTM-Z實驗模型(MAPE=0.1852)和LSTM實驗模型(MAPE=0.2244)的基礎上,MAPE降低了2.92%和19.88%。在實驗結果的前200個時間戳中,真實值與預測值隨著時間的變化如圖9所示,其中橫坐標表示觀測的時間戳,縱坐標表示該時間戳下主機CPU的利用率。從圖中可以看出,不管是CPU利用率序列的波峰還是波谷的預測情況,本文方法都能都能保持較優的預測性能,預測值曲線與真實值曲線都能較好的匹配。與本文方法相比,基于LSTM的預測在CPU負載序列波動性更大的點上存在較大的偏差,特別是對峰值的預測效果稍差。

圖9 谷歌trace實驗中預測結果對比
綜上所述,本文提出的方法比以往的方法在主機負載預測方面性能有所改善,能夠更好地適應主機負載這種具有非線性和突變性的數據特點。這主要因為基于Zoneout技術改進的方法應用到了LSTM的門控結構,在一定程度上保留了通過神經元前向和后向的信息流,這有助于提高模型的泛化能力,增強捕獲主機負載中短期突變信息的能力。將遺傳算法和滑動窗口結合能夠更好地表示歷史窗口的數據依賴關系,然后作為預測模型的輸入從而降低了預測誤差,進一步優化了預測模型。
本文對云平臺數據進行了分析,闡述了現在主流云平臺需要進行主機負載的迫切需要,并分析了云平臺主機負載CPU利用率的一些特性。為了使預測模型能夠更好地適應主機負載數據突變性和短期波動性的特點,本文設計并實現了基于Zoneout技術的LSTM主機負載預測方法,增強預測模型捕獲主機負載中短期突變的能力。為了更好地學習到歷史窗口的數據依賴關系,本文基于遺傳算法,通過迭代進化探索歷史數據窗口的權重向量,從而進一步提高模型的預測性能。實驗結果表明,本文提出的方法比起以往的方法在主機負載預測性能方面有所改善。
隨著深度學習模型提取特征能力的不斷增強,多源數據的挖掘與研究可作為下一步的研究工作。遺傳算法的搜索空間還可以考慮應用在神經網絡的超參數上,由于迭代次數和種群大小限制了遺傳算法的時間性能,在考慮基于遺傳算法改進預測模型時,應該要基于預測的實際情況進行。