廖恩紅,舒 娜,李加偉,龐雄文*
(1. 廣東工程職業(yè)技術(shù)學院信息工程學院,廣州 510520; 2. 華南師范大學計算機學院,廣州 510631)
云數(shù)據(jù)中心(Cloud Data Center)集成了大量的軟件與硬件資源,是一個按需為用戶提供計算資源的虛擬化平臺[1-3]. 為了滿足用戶日益增長的數(shù)據(jù)存儲與計算需求,數(shù)據(jù)中心不斷擴容,造成了電能的巨大消耗[4],使得CO2排放量急劇上升,對環(huán)境造成了很大的影響. 大部分數(shù)據(jù)中心大約只有50%的服務(wù)器在工作,多數(shù)主機處于較低的工作負載狀態(tài),但處于空閑狀態(tài)的服務(wù)器依然會消耗大量電能[5],因此,很多學者致力于高效的云數(shù)據(jù)中心節(jié)能技術(shù)[6-7]以及云數(shù)據(jù)中心能耗預(yù)測與主機的資源利用率預(yù)測等方面的研究[8-10].
現(xiàn)有研究將深度學習技術(shù)應(yīng)用到云數(shù)據(jù)中心進行主機性能預(yù)測[11-12],通過對歷史數(shù)據(jù)進行分析,預(yù)測未來時刻的能耗情況,為即將到來的任務(wù)分配恰當?shù)挠嬎阗Y源,以達到節(jié)能效果[13-15],進而可以動態(tài)調(diào)整數(shù)據(jù)中心的供電系統(tǒng)[16],減少不必要的電量損失. 基于高斯混合模型GMM[17]的功耗預(yù)測是一種基于條件概率的細粒度回歸模型,該模型可適應(yīng)不同的集群環(huán)境并高度擬合系統(tǒng)體系的所有特征,但不適用于實時能耗預(yù)測;在自適應(yīng)ANN和LSTM的能耗預(yù)測模型[18]中,對違反SLAs時的懲罰因子進行調(diào)整,不斷優(yōu)化模型,比基準系統(tǒng)減少了20.6%的總開銷;在基于粗粒度和細粒度的DNN功耗模型[19]中,建立了功耗和硬件配置的關(guān)系,并降低了噪聲數(shù)據(jù)對模型的干擾,在特定環(huán)境下降低了79%的錯誤率. 除了在能耗預(yù)測方面研究之外,也有建立時序關(guān)系的LSTM工作負載預(yù)測,如在經(jīng)典日志數(shù)據(jù)集上進行下一時間段負載預(yù)測,模型錯誤率降低至0.001%[20]. 以上能耗預(yù)測模型和負載預(yù)測模型都是基于非時序的卷積神經(jīng)網(wǎng)絡(luò)或單一的循環(huán)神經(jīng)網(wǎng)絡(luò),BAI等[21]提出的TCN時序卷積網(wǎng)絡(luò)結(jié)合了CNN模型與LSTM模型的優(yōu)點,既囊括了CNN模型對重要信息的提煉,又具備LSTM模型對時序序列的處理機制,隨著擴張因子的增大,不斷膨脹的卷積核獲得更寬的感受野,使得卷積效果更加顯著,同時可并行計算,大大提高了計算速度.
為進一步提高對云服務(wù)器未來時刻的主機資源利用率預(yù)測的準確性,本文提出了基于時序卷積網(wǎng)絡(luò)的云服務(wù)器性能預(yù)測模型(ATCN,Adaptive Temporal Convolutional Network):首先,將數(shù)據(jù)的時間戳特征轉(zhuǎn)化為精確到秒的日期格式,按日期進行排序,對缺失數(shù)據(jù)采取上下鄰接取平均的方法進行填充;然后,通過主機資源利用率構(gòu)建能耗向量,建立輸入向量與預(yù)測標準之間的關(guān)系;最后,調(diào)整TCN時序卷積網(wǎng)絡(luò)中的卷積核尺寸和擴張因子大小,并找到最合適的學習率和隱藏層層數(shù).
ATCN模型是基于時序卷積網(wǎng)絡(luò)的性能預(yù)測模型,該模型通過構(gòu)建N+1維能耗向量和改進時序卷積網(wǎng)絡(luò)結(jié)構(gòu),達到對云服務(wù)器未來時刻的主機性能進行準確預(yù)測的效果.
集群中的主機可分為3類:滿載、低載和過載. 而主機是否過載主要依賴于CPU、內(nèi)存和磁盤利用率以及網(wǎng)絡(luò)傳輸量. 因此,構(gòu)建多維性能向量,實現(xiàn)基于CPU利用率的過載主機預(yù)測模型,可以適應(yīng)不同硬件和配置,具有自適應(yīng)和調(diào)節(jié)能力、具有通用性和普適性是ATCN模型需要達到的目標.N+1維能耗向量構(gòu)建過程如下:
(1)標簽-CPU利用率:在機器運行的過程中,CPU利用率對作業(yè)的執(zhí)行變化比較明顯,當主機低載,CPU利用率也很低;當主機滿載,CPU利用率也相應(yīng)呈正相關(guān)變化. 因此,將CPU利用率作為過載主機的衡量標準符合實際情況.
(2)N維性能利用率:Alibaba主機性能利用率跟蹤數(shù)據(jù)中采集了CPU、內(nèi)存、網(wǎng)絡(luò)輸入、網(wǎng)絡(luò)輸出和磁盤I/O等指標的實時利用率,這些指標對主機是否過載都有一定影響,因此,這些指標都可以作為輸入特征.
(3)N+1維能耗向量構(gòu)建:本文將多維性能利用率看成是N維輸入,而N維輸入與主機過載與否有重要關(guān)聯(lián). 因此,根據(jù)多維性能利用率構(gòu)建N維性能向量,回歸模型為:
y(t)=σ(w1_tx1+w2_tx2+…+wn_txn).
(1)
模型(1)建立t時刻N維輸入x與輸出y之間的函數(shù)關(guān)系. RAUBER和RüNGER[22]指出:CPU利用率的變化與能耗變化呈線性相關(guān)關(guān)系,而主機的能耗受CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)等資源使用情況的影響. 因此,本文將主機能耗構(gòu)建為第N+1維能耗向量. 動態(tài)功率消耗Pdynamic與切換頻率α、負載容量CL、供電電壓V、CPU操作頻率f都有關(guān). 靜態(tài)功率消耗Pstatic指沒有電路活動時消耗的電量. 總功耗為:
Ptotal=α*CL*V2*f+Pstatic.
(2)
靜態(tài)功耗Pstatic既是獨立存在的功耗,又與動態(tài)功耗Pdynamic呈一定比例關(guān)系,功耗P與比例因子s-3的關(guān)系為:
P(s)=s-3Pfull.
(3)
假設(shè)當前CPU利用率為C,一臺機器的容量為U,則一臺機器的功率消耗為:
(4)
一臺機器的資源分配的唯一時間是分配或停止任務(wù)時,且調(diào)度器可以隨時獲得資源分配并維護. 在沒有系統(tǒng)級監(jiān)控機制調(diào)度器的情況下無法實時獲得CPU利用率,并且CPU利用率具有高動態(tài)性,基于快速的CPU利用率變化更新功率消耗是不夠準確的. 所以,為了達到更精確地擬合效果,在頻率請求方面,使用資源分配近似代表當前功率消耗Pcurrent. 本文近似將虛擬功耗(Virtual Power Consumption)定義為:
(5)
由于阿里云數(shù)據(jù)集粒度細,以秒級為單位采集,具有強實時性,因此,在構(gòu)建能耗模型時完全可以根據(jù)實時CPU利用率的變化進行能耗模擬. 由式(4)可構(gòu)建能耗模型:
(6)
其中,PCPU、Pmem、Pdisk、Pnetwork分別表示CPU、memory、disk、network各部件的功耗.
ATCN結(jié)構(gòu)(圖1):該網(wǎng)絡(luò)包括3層隱藏層,同時1D全卷積保證數(shù)據(jù)輸入與每層隱藏層的輸入維度一致;時間卷積網(wǎng)絡(luò)對卷積核的大小K以及擴張因子d的大小比較敏感,本文的方法是調(diào)整卷積核大小,擴張因子d分別取為1、2、3、5;擴張卷積可以擴大卷積核感受野[23-24],同時通過不斷增加d的大小,達到長期記憶效果.
圖1 ATCN網(wǎng)絡(luò)架構(gòu)圖
圖2 擴展卷積示意圖
ATCN網(wǎng)絡(luò)架構(gòu)構(gòu)建的具體步驟如下:
步驟1:初始化權(quán)重參數(shù)和偏差參數(shù)值,權(quán)重向量服從正太分布,偏差向量b為全0矩陣.
步驟2:卷積核大小設(shè)為2,擴張因子等于2的卷積過程如圖 3所示:每個時序序列的輸入為1*5,擴張因子等于2的卷積核大小在其空孔處補0,擴張后的卷積核大小變成3*3,與填充之后的輸入序列進行計算,如果輸入與輸出結(jié)果不一致,則進行1D全卷積,以保證輸入輸出長度一致.
步驟3:采用ReLU(Rectified Linear Unit)函數(shù)為激活函數(shù),作用于隱層神經(jīng)元的輸出:
但這就是我們的卡夫卡,他絕不是英雄和巨人,他是“弱者”和“兒子”;他絕不是像托爾斯泰、尼采那樣說話明亮又干脆,擲地有聲,一落千丈的救世者,他只是一個精神不夠強大,敏感而憂郁的“未成年”——他的恐懼、懦弱和掙扎不會比我們少多少。在所有這些用盡畢生向我們展示世界是什么和如何面對世界的作家們中,卡夫卡所表達的世界最直接、最本真,事實上也最珍貴。卡夫卡是讓我們感動的,他恐懼著我們的恐懼,矛盾著我們的矛盾,在這部分他是最接近我們的。在某種程度上,我們和卡夫卡一樣,都是精神未成年的不強大的“兒子”和“弱者”——這也許就是為什么,我們總是能在卡夫卡的作品中看到那個靈魂掙扎的脆弱的自己。
Φ(x)=max(0,x).
(7)
步驟4:為防止過擬合,以一定比例刪除隱層中的神經(jīng)元.
步驟5:權(quán)重歸一化[25],調(diào)整了優(yōu)化問題的條件,加快隨機梯度下降的收斂速度.
步驟6:通過不斷調(diào)整擴張因子的大小重復以上操作 3 次,得到最終預(yù)測輸出結(jié)果.
步驟7:結(jié)合優(yōu)化算法不斷調(diào)整權(quán)重和偏差向量,并迭代直到模型收斂.
圖3 卷積過程圖
更新網(wǎng)絡(luò)訓練參數(shù)時,針對模型(1),本文使用均方根誤差(RMSE)作為代價函數(shù):
(8)
對整個網(wǎng)絡(luò)進行微調(diào)時,采用Adam算法對目標函數(shù)進行優(yōu)化.
本節(jié)采用ATCN模型預(yù)測集群中各主機的資源利用率,通過CPU利用率的閾值評判主機在未來某一時刻是否會發(fā)生過載. 實驗基于Alibaba cluster-trace-v2018[26]追蹤數(shù)據(jù).
(1)N維特征提取. 首先,根據(jù)主機的CPU利用率進行過載主機預(yù)測,預(yù)測模型顯然屬于回歸模型,由此將CPU利用率作為預(yù)測模型的標簽. 然后,考慮內(nèi)存利用率、磁盤利用率、傳入和傳出網(wǎng)絡(luò)包數(shù)4個指標作為主機是否過載的影響因素.
(2)特征預(yù)處理. 實驗采集數(shù)據(jù)以秒為單位,本文考慮到數(shù)據(jù)集樣本過多,又因為在秒級范圍內(nèi)資源利用率的變化相對較小,所以,對數(shù)據(jù)進行分鐘級別的組合,以10 s為1個時間段,取10 s內(nèi)資源利用率最大的值作為這一時間片內(nèi)資源的利用率. 將時間戳轉(zhuǎn)換為日期格式;對于數(shù)據(jù)集中的列值缺失數(shù)據(jù),采用臨接均值填充的方法進行處理.
(3)特征轉(zhuǎn)化. 為了精確預(yù)測實驗結(jié)果,本實驗首先把每一維特征都轉(zhuǎn)化為Float類型,并將數(shù)據(jù)按照時間這一列進行升序排序;然后,將數(shù)據(jù)轉(zhuǎn)化成PyTorch的基本計算單位tensor張量作為最終輸入.
(4)模型訓練. ATCN模型基于時序卷積網(wǎng)絡(luò),使用了3層隱藏層:每一層包括擴張卷積、線性激活和dropout;最后一層比較輸入與輸出的維度,若維度不相等則進行1D全卷積,以保證輸入與輸出維度一致,再采用ReLU進行激活,并輸出預(yù)測結(jié)果.
2.2.1 ATCN模型預(yù)測實驗 本節(jié)通過大量實驗結(jié)果驗證ATCN模型的有效性,主要針對該實驗的數(shù)據(jù)集處理過程、特征構(gòu)建、模型構(gòu)建以及模型的影響因素進行多角度實驗分析. ATCN模型以開源深度學習框架PyTorch為開發(fā)框架;使用批量梯度下降A(chǔ)dam為優(yōu)化器;設(shè)置模型初始學習率α=0.001,隱藏層層數(shù)h=2,卷積核大小K=2,擴張因子d=O(2i),其他超參數(shù)設(shè)置為常用值. 為避免過擬合,如果訓練階段經(jīng)過3個Epoch后代價函數(shù)值仍沒有下降,則Early Stopping停止訓練.
(1)卷積核參數(shù)調(diào)整. ATCN模型中擴張卷積的存在使得卷積核大小成為影響實驗效果的重要影響因素之一:卷積核大小意味著單次卷積的輸入序列數(shù),而擴張卷積計算值也是輸出的基礎(chǔ). ACTN模型預(yù)測實驗分別設(shè)置卷積核大小K為2、3、4,學習率α=0.001,隱藏層層數(shù)h=2.
由實驗結(jié)果(表1)可知:(1)當卷積核大小為4時,實驗的測試數(shù)據(jù)結(jié)果最好(RMSE=4.108 604). (2)訓練過程在第2個Epoch時,代價函數(shù)下降明顯,而后幾個Epoch中代價函數(shù)值的變化趨于平穩(wěn). 這說明實驗的梯度下降算法設(shè)置比較合理,一開始是以大跨步尋找全局最優(yōu),而后調(diào)整尋優(yōu)的步伐,小步向全局最優(yōu)靠攏,這樣可以減少模型訓練時間,一次性訓練到位并加速模型收斂.
表1 不同卷積核大小的模型預(yù)測實驗結(jié)果
(2)學習率參數(shù)調(diào)整. 在深度學習模型訓練中,學習率是一個重要的超參數(shù)調(diào)整因素. 學習率在模型尋優(yōu)過程中扮演重要角色,學習率越大則尋優(yōu)的跨度越大,學習率越小則尋優(yōu)跨度越小. 眾多模型訓練的結(jié)果[27]表明:學習率沒有固定最優(yōu)經(jīng)驗值,需要不斷調(diào)整并比照實驗結(jié)果確定最優(yōu)的學習率參數(shù). 本實驗中學習率α分別設(shè)置為0.1、0.01、0.001,隱藏層層數(shù)h=2,卷積核大小K=4. 因為表1已給出學習率為0.001的實驗結(jié)果,所以,下面只列出了學習率分別為0.1和0.01的實驗結(jié)果.
由實驗結(jié)果(表1、表2)可知不同的學習率各有優(yōu)缺點:學習率較大時,模型訓練速度較快,不容易收斂且實驗結(jié)果較差;當學習率為0.1時,最好的測試結(jié)果為RMSE=4.665 762,遠不及學習率為0.001的測試結(jié)果,且訓練集的損失值相當大,表明ATCN模型在使用較大或較小學習率時存在一定問題;當學習率為0.01時,無論是訓練集還是測試集,效果都呈現(xiàn)相似的收斂趨勢,測試結(jié)果最終收斂在3.540 056. 因此,α=0.01應(yīng)為最優(yōu)的學習率參數(shù).
表2 不同學習率的模型預(yù)測實驗結(jié)果
(3)隱藏層層數(shù)參數(shù)調(diào)整. 時間卷積網(wǎng)絡(luò)中卷積層的作用是用于提取重要信息,隱藏層的層數(shù)越大則擴張因子值越大,擴張因子值越大意味著可以獲得更大的感受野,從而可以提取到更久以前的信息. 從擴張卷積的原理出發(fā)可以推出:隱藏層層數(shù)越多則輸出結(jié)果越精確. 隱藏層層數(shù)參數(shù)調(diào)整實驗中設(shè)置隱藏層層數(shù)h為1、3、5,學習率α=0.001,卷積核大小K=3. 實驗結(jié)果(表3)證明:隱藏層層數(shù)為3時,測試結(jié)果最優(yōu)(RMSE=3.591 695).
表3 不同隱藏層層數(shù)的模型預(yù)測實驗結(jié)果
由以上幾組對比實驗可知:實驗結(jié)果的準確度與卷積核大小、隱藏層層數(shù)、學習率都有關(guān);當卷積核大小K=4、學習率α=0.01、隱藏層層數(shù)h=3時效果最好. 因此,本文最終采用這幾個超參數(shù)值和網(wǎng)絡(luò)層數(shù)作為ATCN模型的設(shè)計結(jié)構(gòu).
2.2.2 對比實驗 為了驗證ATCN模型的有效性,本文與單向循環(huán)記憶網(wǎng)絡(luò)(LSTM模型)進行了對比. LSTM模型以前條記錄預(yù)測后3條記錄的值,隱藏層有4個神經(jīng)元,輸出層為預(yù)測值;采用sigmoid激活函數(shù),迭代次數(shù)為10. 由實驗結(jié)果(表4)可知ATCN模型在時間效率上優(yōu)于LSTM模型:ATCN模型在第3次Epoch時,標準誤差值趨于穩(wěn)定;LSTM模型在第4次Epoch時,標準誤差值趨于穩(wěn)定.
表4 對比實驗測試結(jié)果Table 4 The comparison test results
在不斷調(diào)整ATCN模型參數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)的過程中發(fā)現(xiàn):當隱藏層層數(shù)h=3、學習率α=0.01、卷積核大小K=4時,模型效果最好.
由ATCN模型與LSTM模型的對比結(jié)果(表4、圖4)可知:ATCN模型在剛開始預(yù)測時,由于記憶到的東西不夠多,所以模型最初訓練時代價函數(shù)值比較大,但隨著Epoch次數(shù)的增加,標準誤差逐漸降低至3.002 158,準確率比初始ATCN模型提升17%左右;另外,由于ATCN模型是基于N+1維性能向量改進的時序卷積網(wǎng)絡(luò)模型,所以,在不同主機配置的情況下,ATCN模型在自適應(yīng)性上優(yōu)于LSTM模型. 總的來說,ATCN模型在效率和準確率方面要比LSTM模型提升約20%左右.
圖4 ATCN模型與LSTM模型預(yù)測實驗對比圖
本文設(shè)計了基于時序卷積網(wǎng)絡(luò)的自適應(yīng)過載主機檢測模型(ATCN模型),利用多維性能指標構(gòu)建了N維性能向量,并對TCN時序卷積網(wǎng)絡(luò)進行參數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整. 該模型可以實時預(yù)測集群中各主機的資源利用率,通過閾值評判主機在未來某一時刻是否會發(fā)生過載,并且可以自適應(yīng)主機不同配置和參數(shù),對云服務(wù)器未來時刻的主機資源利用率進行準確預(yù)測. 基于阿里云開源數(shù)據(jù)集的實驗結(jié)果表明:ATCN模型在預(yù)測準確率和時間效率方面比LSTM模型提升大約20%.
在下一步的工作中,將致力于對即將過載主機中的容器進行分類遷移,利用最少的主機達到最佳的遷移效果,以提高數(shù)據(jù)中心資源利用率.