陳 俊,李丹丹,席寧麗,田紅珍
(貴州師范大學 教育學院,貴州 貴陽 550025)
隨著云計算廉價資源池日益擴容,云計算能耗問題已成為急待解決的熱點問題。而云計算以虛擬機技術為核心技術,虛擬機技術的應用使云計算擁有集中計算屬性,從而實現將空置物理機置為等待狀態,進而節約電能。實現虛擬機技術層面能耗優化的前提是針對云計算實現虛擬機層次的能耗測量[1],只有在測準的情況下,方可進一步分析能耗組成從而優化云計算能效。但因云計算資源池資源的分布式屬性,不能采用電量儀直接獲取能耗數據,又因云計算采用的虛擬機在線遷移技術會導致虛擬資源與物理資源的非一致性,從而造成云計算能耗測量精度的較大誤差[2]。Hypervisor可監測虛擬機詳盡的運行狀態參數。因其直接針對虛擬機運行狀態參數進行檢測,故可用于虛擬機運行能耗測量從而避免因物理資源與虛擬資源的非一致性導致的虛擬機運行能耗測量精度下降。
近年,在能耗預測建模算法方面,相關研究熱點皆指向了機器學習領域。如有支持向量機(SVM)[3]、多層感知機(MLP)[4]、K近鄰[5]等。但相關研究用以測量云計算功率能耗,平均誤差為21%~15%之間,誤差較大,研究考慮云計算能耗數據帶有時間序列屬性,故更傾向于使用長短時記憶模型(long short term memory,LSTM)進行能耗建模,而注意力機制的加入能夠使模型有選擇性的關注數據的特征部分,以期獲得較高精度的云計算功率能耗值。
本文針對計算機能耗消耗中起決定因素的計算密集型(WordCount)125個Hypervisor監測運行狀態參數;I/O密集型(Sort)108個Hypervisor監測運行狀態參數構建建模算法,提出了一種改進注意力機制的LSTM云計算能耗建模方法。
注意力機制LSTM虛擬機能耗模型框架如圖1所示。

圖1 注意力機制LSTM虛擬機能耗模型框架
虛擬機在線遷移技術存在虛擬資源與物理資源非一致性屬性,故實驗建模采用Hypervisor采集虛擬資源運行狀態參數用以構建能耗數據。實驗可采用Apriori、FP-Growth、灰色關聯度分析等方法[6]對相關虛擬機資源運行狀態參數與能耗數據的關聯性進行分析。相比灰色關聯度分析,Apriori計算量大且所需存儲空間大,適用于布爾型數據處理;FP-Growth則受數據結構模型影響較大。運行任務的隨機特性變化將造成虛擬機能耗波動,導致能耗數值不服從特定的概率分布,且灰色關聯度分析對樣本數據量要求較小,故使用灰色關聯度分析效果較好。灰色關聯度分析步驟見下[7]:
據序列距離測度因素變化相似性形成x0=(x0(1),x0(2),……,x0(m)) 特征序列
(1)
注:x0為參考序列,此處定義為虛擬機能耗,x1~xn為各虛擬機運行參數影響比較序列。
對參考序列與比較序列進行無量綱化處理。下一步定義灰色關聯系數γ(x0(k),xi(k))

(2)

則:xi(i=1,2,……,m) 與x0的灰色關聯度γi(x0,xi) 為
(3)
實驗對灰色關聯度取值γi≥0.6, 以此為閾值選擇虛擬機運行狀態參數進行能耗建模。經灰色關聯度分析最終選擇計算密集型125個Hypervisor監測運行狀態參數;I/O密集型108個Hypervisor監測運行狀態參數。
云計算可看作由多個同構節點構成的網絡計算平臺,而能耗則可視為對實時功率的時間累積。此處,實驗令第i節點第j個虛擬機在t時刻實時功率為Pij(t), 則定義能耗E(T) 為
(4)
式(4)中Pij(t) 為第i節點第j個虛擬機的實時功耗,在實驗中可令運行的物理機節點僅運行1個虛擬機從而通過電量儀直接測量獲得實時功耗數值。
式(4)中E(T) 數值的確定關鍵點在于Pij(t) 值的確定。因運行環境物理機眾多,且每一物理機皆可運行多個虛擬機,采用電量儀直接測量方法不適于獲取實際數據中心虛擬機實時功耗。Hypervisor可采集豐富的虛擬機運行狀態參數數據,故研究采用Hypervisor技術進行虛擬機運行狀態參數采樣用以建立虛擬機實時功耗模型,從而計算虛擬機實時功耗數值。
虛擬機的運行特征帶有綠色計算屬性,且支持單個虛擬機劃分物理機進行物理資源的獨立使用,但這一方式采用的物理資源映射技術又將帶來虛擬資源與物理資源的非一致性,從而造成基于物理資源運行能耗測量精度的下降。Hypervisor可監測虛擬機詳盡的運行狀態參數。因其直接針對虛擬機運行狀態參數進行檢測,故可用于虛擬機運行能耗測量從而避免因物理資源與虛擬資源的非一致性導致的虛擬機運行能耗測量精度下降[8]。
實驗將虛擬機運行狀態依據硬件調用特征劃分為計算密集型與I/O密集型,并使用Hypervisor進行虛擬機運行狀態參數采樣。實驗使用電量儀獲取對應于Hypervisor采樣的云計算平臺實時功率。
Hypervisor虛擬機運行狀態參數豐富,為驗證相關虛擬機運行狀態參數與計算機功率之間的數學關系,研究進行了實驗設計,令計算機系統運行在計算密集型狀態。此時,計算機系統功耗模型可看為CPU運行狀態的線性回歸模型[9],而除CPU外其它設備功耗可看作常數。項目組在研究CPU使用率、CPU頻率與虛擬機功率之間的關系實驗中,將ω設定在0、0.25、0.5、0.75、1這5個百分率上,并在Userspace模式設定CPU工作頻率為1.6 GHz、1.8 GHz、2.0 GHz、2.2 GHz、2.4 GHz、2.6 GHz、2.8 GHz,實驗數據如圖2所示。

圖2 CPU使用率、CPU頻率與虛擬機功率關系
由圖2可知,當CPU使用率為0時,功率基本保持常數值,而當CPU使用率非0時,頻率越大則功率越大。其與計算機功率呈現線性相關性,故可用虛擬機運行狀態參數描述計算機計算密集型時功率數值。
再令計算機系統運行在I/O密集型狀態。此時,可選用硬盤讀寫總字節數,令為drw與內存讀寫總字節數,令為mdr建立數學模型[10]。
文中設定drw與mdr皆與計算機實時功率P數值密切相關。為驗證硬盤讀寫總字節數與內存讀寫總字節數對計算機實時功率的數學關系,我們每間隔Δt時間(Δt取值為0.1 s)針對計算機硬盤讀寫總字節數與內存讀寫總字節數進行斷點采樣。為保證結果的精確性,以上采樣皆基于Sort運算任務環境進行。Sort運行環境為I/O密集型運算環境,可最大限度避免CPU運行所帶來的計算功率波動。我們引入式(5)
(5)

我們分別將Sort運算置為主硬盤讀寫方式與主內存讀寫方式,獲取采樣數據,部分數據表列見表1與表2。

表1 Sort運算節點P,drw配對取樣

表2 Sort運算節點P,mdr配對取樣
通過式(3),我們分別求取計算機實時功率P的相關系數,見表3。

表3 變量線性關系參數分析
P與drw、P與mdr調整后相關系數為
相關系數值均在0.75相鄰波動,可驗證其硬盤讀寫總字節數與內存總字節數皆與計算機實時功率P具備線性相關性。故可用虛擬機運行狀態參數描述計算機I/O密集型功率數值。
Hypervisor虛擬機運行狀態參數的選擇參照上文1.1節灰色關聯度分析過程。實驗選用Tensorflow平臺,學習率定義為0.0009,學習輪次為2000次[11]。
為避免因虛擬機運行機制導致的物理資源與虛擬資源的非一致性問題,實驗選擇Hypervisor直接采樣虛擬機運行狀態參數用以能耗建模。
采樣樣本數據集在實驗建模中被劃分為互不相容的訓練集、驗證集與測試集,每個數據集由5000個采樣數據構成。各數據按時間序列排序為x1,x2,……,xt, 并對其進行標準化處理
(6)

針對神經網絡參數訓練,實驗采樣時間序列的前n個能耗數據與當前Hypervisor監測運行狀態參數(劃分為計算密集型與I/O密集型)用以預測時間序列第n+1個能耗數據。實驗中對誤差的計算使用均方根誤差(root mean squared error,RMSE)法作為損失函數
(7)
式中:P為前n個采樣能耗數據;H為Hypervisor監測運行狀態參數數據;yi與y′i分別為時間序列第n+1個測量值與計算預測值。
人工神經網絡(ANN)包括輸入層、隱藏層、輸出層,其輸出由當前輸入數值決定,與輸入時序無關。但虛擬機能耗數值是一個連續變量,數值變化與虛擬機運行狀態參數之間的關系存在較強的時序性。RNN(recurrent neural network)技術可以解決序列數據問題,故RNN在處理能耗數據建模方面具備應用價值,但RNN存在對長期依賴數據處理的缺陷。對于RNN技術而言,當較長階段能耗數據存在相互關聯關系時,如何度量能耗數據間的相互影響關系變得不可實現,故單純使用RNN建立能耗模型存在較大誤差。
LSTM是RNN的變體,用于處理較長時序差序列數據。
LSTM采用門機制消除梯度消失問題[12],其作用機制原理如圖3所示,其由3個控制門與1個存儲單元構成。門控制數據的篩選,存儲單元對數據進行保存和傳遞。控制門為input gate,it,forget gate,ft與output gate,ot;g,h為tanh() 的激活函數;σ為sigmoid()激活函數;zt為標準輸出[13]。故,此處選擇LSTM神經網絡,其可反應虛擬機能耗時間序列數據的時序特征。

圖3 LSTM虛擬機能耗模型架構
Tang等[14]學者對時序數據兩個方向使用LSTM,后對兩個LSTM的輸出進行連接完成數據建模。Song等[15]學者采用LSTM中的門限神經網絡對時序數據的具體物理意義及關聯信息進行數據建模。這些LSTM數據建模方法都取得了較好的分類結果。但由于LSTM傾向于分析近期輸入的自身特性,故僅基本的LSTM方法不能較好獲取復雜時間序列數據中相對時間差數據之間的潛在關系。故引入注意力機制可望解決該問題。
注意力機制的引入可使建模過程中對重要信息給予更多關注,盡可能獲取其細節信息,抑制無關信息。故,注意力機制引入可減輕計算機處理高維度數據的運算量,使其更關注輸入數據與輸出數據關聯性更強的信息,提高輸出質量。
1.4.1 注意力能耗因素編碼
能耗建模為獲取某一維度的能耗信息,對于注意力機制LSTM的輸出權重需做出以下計算
α=softmax(Wα2tanh(Wα1HT))
(8)
式中:α∈R1×n,HT∈Rd×n為對輸出矩陣的轉置,Wα1∈R1×dα則為權重矩陣,dα為調整參數。
式中HT狀態的計算見式(9)
(9)
為保證所有權重之和為1,需對權重做歸一化處理。并可由式(10)得出能耗向量Ei
Ei=α×H
(10)
式中:Ei∈R1×d。
上式中α表示對于隱藏層單元賦予的不同能耗關系權重,該能耗向量會直接關聯到相應Hypervisor監控的特殊虛擬機能耗運行狀態參數,如CPU使用率、內存讀寫字節數、硬盤讀寫字節數等。
注意力機制的引入可幫助能耗模型把握能耗數據的重點信息、略去次要信息,可以將運算能力更好放置在能耗的重要組成環節,故注意力機制的加入能進一步提高建模精度并減少加入建模運算的虛擬機運行狀態參數的數量從而縮短能耗模型訓練時間。如,有輸入維度為256,輸出維度為128的LSTM神經網絡,則對其3個門結構與候選值而言,權重維度為[256+128,128×4];而引入注意力機制后,其權重維度則變為[256+128,128×2]。綜上,權重參數由196 608變成98 304,顯著降低了參與能耗建模的虛擬機運行狀態數據規模。
1.4.2 注意力機制LSTM虛擬機能耗模型實現
實驗建模中激活函數選擇LeakRelu函數[16],其具備較好的收斂速度。函數形式為[17]

(11)
為避免模型過擬合效應,在引入懲罰項的同時進一步采用Dropout方法(隨機剔除隱藏層中的某些隱藏單元)。
LSTM虛擬機能耗模型代碼基于keras實現,其對虛擬機運行狀態參數處理的核心代碼為[18]:
From keras.lavers import LSTM
model=Sequential()
modeladdEmbeddingVirtual machine,1000))
model.add(LSTM(1000))
model.add(Dense(1,activation=‘sigmoid’))
model.compile(optimizer=‘rmsprop’,loss=’binary_crossentropy’,metrics=[‘acc’]
history=model.fit(input_train,y_train,epochs=10,batch_size=128,validation split=0.2
能耗建模需針對大量具備特征行為的訓練數據對模型進行訓練,為保證云計算能耗任務特征行為的完備性,實驗設計選用Apache hadoop構造,選擇計算密集型(WordCount)任務與I/O密集型(Sort)任務進行虛擬資源運行狀態參數采樣。采樣每間隔Δts(Δts取值1 s)對全網進行一次電量儀功率同步采樣。采樣數據進行采樣分組后通過了正態分布性與方差齊性檢驗,并以設置較大Δts的方式保證樣本獨立性[19]。
實驗采樣值實時功耗誤差用測量功耗與計算實時功耗之差除以測量功耗度量。
實驗數據針對WordCount任務與Sort任務,并以間隔采樣值法呈現了200個采樣點數值,如圖4與圖5所示。

圖4 WordCount 任務注意力機制LSTM計算值與測量值比較

圖5 Sort任務注意力機制LSTM計算值與測量值比較
實驗針對多層感知機MLP(該機制算法簡單,訓練速度較快,但未考慮相近數據的依賴性)、支持向量機SVM(該機制算法的優點在于優秀的泛化效果,算法對數據樣本量較小的數據常能取得優于其它算法的效果)、K近鄰(該機制算法優點在于對訓練數據集中異常值的容忍度較高,但對于高維度數據的計算容易導致維度災難,在樣本數據不平衡時容易造成較大預測偏差)及未引入注意力機制的LSTM這4種機器算法對虛擬機能耗進行了能耗預測值計算,如圖6~圖9所示。

圖6 WordCount 任務MLP計算值與測量值比較

圖7 WordCount 任務SVM計算值與測量值比較

圖8 WordCount 任務K近鄰計算值與測量值比較

圖9 WordCount 任務LSTM計算值與測量值比較
圖6、圖7與圖8可知,在WordCount任務下MLP、SVM與K近鄰算法計算值與測量值存在明顯誤差,而使用LSTM算法后WordCount任務的計算值與測量值誤差明顯變小。在圖4中則顯示誤差進一步減小,表4數據驗證了這一現象。

表4 虛擬機能耗誤差比
實驗使用不相等系數T與平均絕對誤差M判別能耗模型質量。不相等系數T用以判別計算值與測量值的區間差異;絕對誤差M則可用于衡量計算值與測量值對比測量值的比例
(12)
[0,1]間取值,T為0表示完全擬合,T為1則完全不擬合
(13)
實驗結果見表4。
表4數據結果顯示,用LSTM進行能耗建模質量優于MLP、SVM及K近鄰算法。其原因為淺層機器學習算法易形成過擬合,且無法獲取能耗數據的時序特征。而引入注意力機制的LSTM能耗模型優于單純LSTM能耗模型,則是因其凸顯了相對時間距離較遠的關鍵因素間能耗相關性,從而提升了能耗模型精度。
研究提出了一種注意力機制的LSTM循環神經網絡建立虛擬機能耗模型的方法。方法以虛擬機為粒度,使用灰色關聯度分析選擇Hypervisor監控的虛擬機運行狀態參數,并引入了注意力機制進行LSTM虛擬機能耗建模,注意力機制的引入有助于獲取時間間隔序列較遠的關鍵因素的能耗相關性,從而獲得更好的建模精度。實驗數據顯示,引入注意力機制的LSTM能耗模型質量優于LSTM,且兩者建模質量皆高于MLP、SVM以及K近鄰算法。