鄒偉東 夏元清
伴隨著虛擬化技術的日趨成熟,物理機的硬件資源利用率獲得了進一步的提升[1].與此同時,基于混合云的數據中心也獲得了許多企業與高校的青睞.與物理機相比較而言,虛擬機具有更多的優勢,如良好的可擴展性與遷移性、低廉的采購成本與維護成本,故其也獲得了眾多用戶的青睞[2-3].然而如何對云環境下的虛擬機進行合理分配與高效利用是當前云服務提供商與用戶關注的焦點問題.
當前云服務提供商為廣大用戶提供了一種基于粗粒度的虛擬機資源配置策略,即為用戶提供有限度的硬件資源與計算單元,并且根據用戶所選擇的不同種類的資源進行收費.該策略致使云服務提供商難以為用戶提供最優的性能體驗,同時也降低了配置資源的利用率和企業利潤[4].因此對云環境下的虛擬機性能進行精確的預測建模不僅可使用戶獲得較優的虛擬機資源配置方案,同時也為云服務提供商開發新的收費模型標準.
虛擬機性能模型具有非線性、強耦合和時變性的特征,CPU 微架構與主頻、I/O (Input/output)帶寬和虛擬CPU 的個數都會對虛擬機性能預測產生重要影響.當前對虛擬機性能預測主要從兩個方面進行相關研究:1)通過分層次或多粒度性能組合的方法來整體預測評估虛擬機性能.呂慶翰[5]提出基于模糊層次分析與離差最大化的虛擬機性能預測建模方法,將虛擬機的綜合性能劃分為指標層和綜合層,利用模糊層次分析法分析影響功能層各要素的權重,利用離差最大化方法計算指標層各要素的權重,最后根據各要素的權重計算虛擬機的性能.車建華[6]提出基于多粒度的虛擬機性能預測方法,將虛擬機性能劃分為宏觀粒度與微觀粒度,應用黑盒方式對虛擬機的宏觀性能與微觀性能進行測試,應用白盒方式分析其相應的性能特征,通過關聯不同粒度下的性能特征實現虛擬機性能預測.黎豐澤等[7]在深入分析影響虛擬機性能關鍵參數的基礎上,提出了基于特征值分解的特征拓展方法,通過結合非線性模型對云環境中的虛擬機性能進行預測建模.2)利用機器學習算法進行虛擬機性能預測.在虛擬網絡環境下,Xu等[8]提出了基于模糊邏輯的虛擬機性能預測方法.Rao等[9]提出基于強化學習與神經網絡的虛擬機性能建模方法,通過動態地調整模型的內存資源與CPU 使虛擬機性能達到最優.貝振東等[10]提出了一種基于支持向量機的虛擬機性能預測方法,根據預先設置的資源配置標準,隨機改變虛擬機的資源配置,以當前虛擬機配置的資源集合與云計算系統的響應時間構成樣本數據對支持向量機進行訓練,根據虛擬機性能預測模型預測任一資源配置下的云計算系統的響應時間.王娟等[11]根據待預測的虛擬環境的資源特點,提出了基于隨機森林回歸的虛擬機性能預測方法,利用隨機森林回歸模型描述虛擬機性能指標和相應的性能特征之間的內在聯系,從而實現特定配置下的虛擬機性能精準預測.然而傳統的統計方法難以精確描述不同的虛擬機性能特征值之間的復雜關系,也難以推廣應用.但支持向量機(Support vector machine,SVM)、隨機森林回歸等傳統機器學習算法需人為設定許多的訓練參數,以迭代的方式更新參數,容易陷入局部優化,導致訓練誤差較大.
雖然深度學習網絡結構強大,但網絡訓練時間長,其根本原因在于深度學習網絡結構復雜且包含了許多超參數,難以從對其進行理論分析.為了提高深度學習在實際應用中的精度,必須增加深度學習的網絡層數或調整網絡參數.當前深度學習適用于處理高維度且數據量大的問題,若處理小樣本數據,因其樣本量少致使深度學習出現 “過擬合”,影響深度學習的泛化性能.
近年來,寬度學習系統(Broad learning system,BLS)[12]在機器學習中備受青睞,其原因在于寬度學習系統的算法步驟少,不需要迭代更新一些神經網絡參數,學習速度非常快,并且不會產生局部最優解,具有良好的泛化性能,有效地克服了傳統神經網絡所存在的諸多缺陷,充分發揮了其在機器學習中的巨大優勢,也促進了人工智能的進一步發展[13-14].BLS 是基于隨機向量函數連接型網絡(Random vector functional link neural network)[15],通過稀疏自編碼方式[16]或隨機方式產生特征節點和增強節點的輸入權值,利用嶺回歸[17]廣義逆計算其所對應的輸出權值.盡管算法實現簡單,但是BLS 中存在輸出權值較小的特征節點和增強節點,導致許多特征節點和增強節點對最終網絡輸出起到的作用很小.大量冗余的特征節點和增強節點只能增加網絡結構的復雜性,降低學習效率,因此研究高效的預測方法對虛擬機性能預測具有十分重要的意義.
針對上述問題,本文對寬度學習系統進行改進,通過計算每一個特征節點和增強節點的網絡輸出誤差,構造合適的壓縮因子,構建基于壓縮因子的寬度學習系統,實現對虛擬機性能的精確預測,能夠有效提高預測精度和效率.
BLS 通過稀疏自編碼方式或隨機方式產生特征節點和增強節點的輸入權值,對輸入樣本進行線性變換后形成特征節點,再對特征節點經過激勵函數非線性變換后獲得增強節點.通過合并增強節點輸出與特征節點輸出形成BLS 的輸出矩陣,利用嶺回歸廣義逆直接計算輸出權值矩陣.BLS 的模型可表示為

式中,z表示特征節點的輸出矩陣,h表示增強節點的輸出矩陣,g表示BLS 的輸出矩陣,yn+m表示包含n個特征節點與m個增強節點的BLS 模型輸出,xN×M∈RN×M表示給定的輸入數據,aei表示輸入到特征節點之間的輸入權值矩陣,bei表示特征節點的偏置,ahj表示特征節點到增強節點之間的輸入權值矩陣,bhj表示增強節點的偏置,?和φ表示可選擇的非線性激活函數,如sigmoid 函數或sine 函數,Wn+m表示BLS 的輸出權值矩陣,通過嶺回歸廣義逆直接計算輸出權值矩陣Wn+m,具體求解為

式中,λ為正則化系數,I為單位矩陣,TN×1∈RN×1為給定的輸出數據.
為了改進寬度學習系統的泛化性能,Feng等[18]提出了模糊寬度學習系統(Fuzzy BLS,FBLS),利用Takagi-Sugeno 模糊子系統取代原有的特征節點,將Takagi-Sugeno 模糊子系統輸出與增強節點輸出合并形成FBLS 的輸出矩陣,利用嶺回歸廣義逆直接計算輸出權值矩陣.FBLS 的模型可表示為

式中,H為FBLS 的輸出矩陣,r與u分別表示模糊子系統和增強節點的輸出矩陣.aFj為模糊子系統與第j個增強節點的連接權值,bFj為j個增強節點的偏置.為第i個模糊集的系數,φi為第i個模糊子系統中所有模糊規則的加權系數.βi為第i個模糊子系統的輸出權值,βl+j為第j個增強節點的輸出權值.
增量型極限學習機(Incremental extreme learning machine,I-ELM)[19-20]通常是從一個規模比較小的神經網絡開始,根據誤差大小向網絡中逐個增加隱含層節點,利用迭代式最小二乘法計算所增加的隱含層節點的輸出權值,進而計算網絡訓練誤差,直至達到最大隱含層節點數或者網絡的期望誤差時停止增加隱含層節點.
I-ELM 算法的迭代式可表示為

式中,fn表示包含n個隱含層節點的I-ELM 模型輸出,gn(x)表示在第n步神經網絡新增加的隱含層節點輸出,連接第n個新增隱含層節點與輸出層的權值可表示為

式中,〈en-1,gn(x)〉表示向量en-1與向量gn(x)的內積,‖gn(x)‖表示向量gn(x)的 2 范數.
針對包含多個隱含層節點的ELM 難以有效處理圖像信號,Tang等[21]提出了多隱含層的ELM 算法(Hierarchical ELM,HELM),通過逐層堆棧的方式形成多隱含層的ELM.給定N組訓練樣本數據,具體模型為[22]

式中,n=1,2,···,L,g0=x,利用基于無監督學習方法的ELM 自編碼器計算獲取參數βn,?(·)為隱含層的激勵函數,βC為最后一個隱含層的輸出權值,即給定第L個隱含層的輸出為gL,并將其作為ELM 的輸入,建立與目標輸出y的關系,通過廣義逆法求解βC.
為了改進寬度學習系統的收斂速度和泛化性能,在深入研究增量型極限學習機模型和寬度學習系統模型的基礎上,提出基于壓縮因子的寬度學習系統模型,并采用與增量型極限學習機相同的輸出權值計算方法,即利用迭代式最小二乘法求解基于壓縮因子的寬度學習系統的輸出權值,優化網絡結構,提高網絡學習效率,基于壓縮因子的寬度學習系統的模型為

式中,αn+m表示寬度學習系統中第n+m個節點的壓縮因子[23],gn+m表示第n+m個節點的輸出矩陣,wn+m表示第n+m個節點的輸出權值.
定理1.給定寬度學習系統模型yn+m=yn+m-1+wn+m(gn+m-αn+myn+m-1),其中,特征節點和增強節點的個數分別為n和m,以任意分段連續的函數作為特征節點和增強節點的激勵函數,隨機產生輸入到特征節點之間的輸入權值、特征節點的偏置、特征節點到增強節點之間的輸入權值和增強節點的偏置.B和λi為常數且滿足λ1=0,0<λi<1/2,0<B<1,‖gi-αi-1yi-1‖<B,i=1,2,···,n+m.對于任意連續非常值的目標函數f,‖f‖<B,若壓縮因子αn+m和輸出權值wn+m由下式計算獲取:

證明.根據假設條件可知,當n=1,m=0 時,可得


基于壓縮因子的寬度學習系統與其他寬度學習系統的區別在于在其模型中引入壓縮因子,進一步加快網絡的收斂速度,提高網絡的泛化性能,訓練步驟如下:
給定訓練樣本 [x,T]?RN×R,e0=T,y0=0,設定特征節點數與增強節點數分別為n和m.


本文選取均方根誤差(Root mean square error,RMSE)、平均絕對誤差(Mean absolute error,MAE)、相對百分誤差(Mean absolute percentage error,MAPE)和皮爾遜相關系數(Pearson correlation coefficient,PCC)作為衡量預測模型的泛化性能與精度的評價指標[25-27].
均方根誤差RMSE 可表示為

式中,yj為預測模型輸出值,yˉ 為預測模型輸出值的平均值,為真實值,為真實值的平均值,K為樣本數.均方根誤差RMSE、平均絕對誤差MAE和相對百分誤差MAPE 的大小反映了預測模型輸出曲線在真實曲線上的波動情況,皮爾遜相關系數PCC 反映了預測模型輸出與真實值的誤差相對于真實值的離散程度.
本節通過利用UCI 數據集中的4 個回歸問題對BLS 與CF-BLS 算法從特征節點數與增強節點數方面進行比較分析,兩種算法的特征節點數與增強節點數的取值范圍均為[10,20,30,40,50,60,70,80,90,100],其增強節點的激勵函數均為Sigmoid 函數作為,即4 個回歸問題的測試數據均來源于UCI 數據集[28],相關測試數據的信息如表1 所示.所有測試實驗均在MATLAB 2014a 環境中運行.

表1 回歸數據集Table 1 Datasets of regression
利用UCI 數據集中的4 個回歸問題對BLS 與CF-BLS 算法進行對比分析,其結果如圖1~4 所示.從圖1~4 可知,隨著特征節點數與增強節點數的變化,與BLS 算法相比較,4 個回歸問題對CFBLS 算法的RMSE 與PCC 曲線波動較為平穩,且在包含相同特征節點數與增強節點數的情況下,CFBLS 算法精度均優于BLS 算法精度.

圖1 Combined Cycle Power Plant 數據集對CF-BLS 與BLS 算法的RMSE和PCC 曲線Fig.1 Curves for RMSE and PCC of Combined Cycle Power Plant dataset based on CF-BLS and BLS

圖2 Energy Efficiency 數據集對CF-BLS 與BLS 算法的RMSE和PCC 曲線Fig.2 Curves for RMSE and PCC of Energy Efficiency dataset based on CF-BLS and BLS
在Vsphere 高可用虛擬化環境下,有如下配置的5 臺主機,其上均運行Xen:
1)主機1:Intel Core i7-7800X,主頻3.5 GHz,DDR4 3000 16 GB 內存,三星M.2 NVME 256 GB固態硬盤;
2)主機2:Intel Core i7-9800X,主頻3.8 GHz,DDR4 2666 16 GB 內存,三星M.2 NVME 256 GB固態硬盤;
3)主機3:E5-2678V3,主頻2.5 GHz,DDR4 RECC 16 GB 內存,三星250 GB 固態硬盤;
4)主機4:Intel Core i9-9900K,主頻3.6 GHz,DDR4 3000 16 GB 內存,三星500 GB 固態硬盤;
5)主機5:AMD Ryzen 7 2700X,主頻3.7 GHz,DDR3 2133 16 GB 內存,希捷酷魚系列1TB機械硬盤.
每一臺主機上均配置了6 個虛擬機,本文選取了4 個虛擬機性能特征變量,具體為:特征變量x1表示虛擬機CPU (VCPU)的數量,取值為2,4,5,6,8;特征變量x2表示虛擬機內存的大小,取值為600~800 MB;特征變量x3表示主機CPU 的主頻,主頻3.5 GHz 取值為3.5,主頻3.6 GHz 取值為3.6,主頻3.7 GHz 取值為3.7,主頻2.5 GHz 取值為2.5,主頻3.8 GHz 取值為3.8;特征變量x4表示當前虛擬機的運行環境,若在同一臺物理服務器上同時運行多臺虛擬機取值為1,若只運行一臺虛擬機則取值為0;特征變量x5表示虛擬機CPU (VCPU)和物理機CPU 核心綁定的情況,若VCPU 被綁定到固定的物理機CPU 核心取值為1,若未綁定則取值為0.
本文選取了SPEC2006 中的429.mcf 作為虛擬機性能測試的基準測試程序,并依次在所有虛擬機上運行該測試程序,測試程序在每一臺虛擬機上運行20 次,記錄每次該測試程序在不同的虛擬機中的運行時間,并計算出該測試程序在虛擬機中運行時間的平均值,同時以此運行時間的平均值作為衡量虛擬機性能的指標,一共記錄了30 組數據,形成數據集其中,yj為測試程序在第j臺虛擬機中的運行時間的平均值;對應的第j臺虛擬機的輸入樣本表達為xj=[x1j,x2j,x3j,x4j,x5j],其中x1j表示為第j臺的虛擬機CPU (VCPU)的數量,x2j表示為第j臺虛擬機的內存大小,x3j表示為第j臺虛擬機所依附主機的主頻,x4j表示為第j臺虛擬機的運行環境,x5j表示第j臺虛擬機VPU與所依附的物理機CPU 核心綁定的情況.本文以前20 組數據作為訓練樣本,后10 組數據作為測試樣本.
針對虛擬機性能預測問題,在相同增強節點數、不同特征節點數與不同增強節點數、相同特征節點數的情況下,對CF-BLS 與BLS 算法從均方根誤差RMSE、平均絕對誤差MAE、相對百分誤差MAPE和皮爾遜相關系數PCC 等方面進行比較分析.兩種算法均采用雙曲正切函數作為增強節點的激勵函數.BLS算法中的收斂系數和正則化系數分別為1.8和2-2.
如圖5和圖6 所示,當CF-BLS 與BLS 算法包含100 個增強節點,特征節點數分別為10,20,30,40,50,60,70,80,90和100 或CF-BLS 與BLS 算法包含100 個特征節點,增強節點數分別為10,20,30,40,50,60,70,80,90和100 時,與基于寬度學習系統的預測模型相比,基于壓縮因子的寬度學習系統的預測模型的均方根誤差RMSE、平均絕對誤差MAE、相對百分誤差MAPE和皮爾遜相關系數PCC 曲線變化平穩.在包含相同特征節點數與增強節點數的情況下,基于壓縮因子的寬度學習系統的預測模型的均方根誤差RMSE、平均絕對誤差MAE、相對百分誤差MAPE 均小于基于寬度學習系統的預測模型,而基于壓縮因子的寬度學習系統的預測模型的皮爾遜相關系數PCC 則大于基于寬度學習系統的預測模型,由此說明CF-BLS 算法的收斂速度與泛化性能均優于BLS.

圖3 Forest Fires 數據集對CF-BLS 與BLS 算法的RMSE和PCC 曲線Fig.3 Curves for RMSE and PCC of Forest Fires dataset based on CF-BLS and BLS

圖4 Wine Quality 數據集對CF-BLS 與BLS 算法的RMSE和PCC 曲線Fig.4 Curves for RMSE and PCC of Wine Quality dataset based on CF-BLS and BLS

圖5 兩種模型的預測結果(100 個增強節點)Fig.5 Predicted results of two model (100 enhancement nodes)

圖6 兩種模型的預測結果(100 個特征節點)Fig.6 Predicted results of two model (100 feature nodes)
為了進一步驗證本文所提算法的有效性,采用多隱含層極限學習機(HELM)[21]、寬度學習系統(BLS)、模糊寬度學習系統(FBLS)[18]和基于壓縮因子的寬度學習系統(CF-BLS)分別對虛擬機性能數據進行建模預測.HELM 算法中包含3 個隱含層,每一個隱含層包含的節點數為10,5,100,且其激勵函數為Sigmoid 函數.BLS 與CF-BLS 算法中設置相同的特征節點數與增強節點數,即50 個特征節點與100 個增強節點,兩種算法均采用雙曲正切函數作為增強節點的激勵函數.HELM 與BLS 的正則化系數均為 2-2.在FBLS 算法中,模糊子系統的數目、每一個模糊子系統中包含的模糊規則數和增強節點數分別為6,2,20.
從圖7和圖8 可知,基于CF-BLS 的虛擬機性能預測模型精度與其他模型相比有較大的改進.與BLS、FBLS和HELM 相比,基于CF-BLS 的虛擬機性能預測模型的均方根誤差分別減小了0.186326,0.204921,0.257529,平均絕對誤差分別減少了0.135497,0.133841,0.178552,相對百分誤差分別減少了7.183355%,6.43041%,9.25083%,皮爾遜相關系數分別提高了0.129504,0.183873,0.251694.其原因在于CF-BLS 算法首先根據每一個節點的網絡輸出誤差構造合適的壓縮因子,再通過迭代方式求解每一個節點的輸出權值,與基于嶺回歸廣義逆的輸出權值計算方法相比,該算法的計算復雜度較低,泛化性能較優.根據圖3和圖4 可知,BLS 模型、FBLS模型和HELM 模型對虛擬機性能數據進行預測時效果較差,預測誤差較大,而CF-BLS 模型對虛擬機性能數據進行預測準確度較高,預測誤差小,收斂速度快,說明CF-BLS 模型對虛擬機性能進行模擬預測是行之有效的.

圖7 基于CF-BLS,BLS,FBLS和HELM 的虛擬機性能預測曲線Fig.7 Predicted curves for performance of virtual machine based on CF-BLS,BLS,FBLS,and HELM

圖8 CF-BLS,BLS,FBLS和HELM 模型的預測結果Fig.8 Predicted results of CF-BLS,BLS,FBLS,and HELM
在分析國內外虛擬機性能預測和寬度學習系統的基礎上,針對寬度學習系統因存在冗余節點,致使網絡結構復雜,降低網絡收斂速度,構建基于壓縮因子的寬度學習系統,提出了基于壓縮因子的寬度學習系統的虛擬機性能預測方法,實現了對虛擬機性能的高效精準預測.本文所研究的虛擬機性能預測適用于云數據中心的智能管理.通過采用本文所提算法模型描述虛擬機性能特征和性能指標之間的內在關系,可對具有特定配置的虛擬機進行預測,實現資源的優化配置.然而本文僅針對30 個虛擬機性能進行預測建模,如何對大規模的虛擬機集群性能進行預測建模,仍需進一步進行實驗驗證.