樊文杰,陳 嵐,張 賀
(1.中國(guó)科學(xué)院大學(xué),北京 100049;2.中國(guó)科學(xué)院微電子研究所,北京 100029;3.三維及納米集成電路設(shè)計(jì)自動(dòng)化技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100029)
資源預(yù)測(cè)對(duì)于資源監(jiān)控、資源分配等方面都具有重要意義[1]。為了高效、合理地利用資源,需要對(duì)資源進(jìn)行準(zhǔn)確預(yù)測(cè),這樣能夠更好地提高資源利用率,為資源調(diào)度做準(zhǔn)備。以前的研究表明,CPU 資源使用情況有一定的時(shí)間關(guān)聯(lián)性,也就是說(shuō)基于歷史數(shù)據(jù)的CPU 資源預(yù)測(cè)可行。基于時(shí)間序列的預(yù)測(cè)法在此類場(chǎng)景中應(yīng)用較多,常見(jiàn)的模型有自回歸滑動(dòng)平均模型(ARMA)[2]。該模型在時(shí)間序列[3]預(yù)測(cè)方面有一定不足。由于該模型捕捉數(shù)據(jù)的線性關(guān)系,在時(shí)間序列變化不穩(wěn)定、時(shí)間跨度較長(zhǎng)時(shí),自回歸滑動(dòng)平均模型因其主要依賴歷史平均值,預(yù)測(cè)值總是停留在歷史范圍內(nèi),導(dǎo)致預(yù)測(cè)效果不佳。因此,自回歸滑動(dòng)平均模型往往用于短期預(yù)測(cè),無(wú)法進(jìn)行中長(zhǎng)期預(yù)測(cè)[4]。基于以上問(wèn)題,考慮到CPU 資源使用情況受多種因素影響,且具有非平穩(wěn)、不規(guī)則的特性[5],該文嘗試使用機(jī)器學(xué)習(xí)算法長(zhǎng)短期記憶網(wǎng)絡(luò)來(lái)進(jìn)行CPU預(yù)測(cè)。長(zhǎng)短期記憶網(wǎng)絡(luò)是一種特殊的RNN[6],能夠?qū)W習(xí)長(zhǎng)期依賴性,可以通過(guò)非線性計(jì)算更好地提取出CPU 資源使用特征,克服CPU 資源不規(guī)則的特性。
該文主要工作包括使用長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)算法對(duì)CPU 資源使用情況進(jìn)行預(yù)測(cè),并對(duì)算法進(jìn)行了優(yōu)化,使用非飽和激活函數(shù)ReLU 函數(shù)[7]代替飽和激活函數(shù)Tanh 函數(shù)[8],可以加快模型的收斂速度。最后,通過(guò)實(shí)驗(yàn)結(jié)果表明,相比自回歸滑動(dòng)平均模型(ARMA)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)算法和傳統(tǒng)LSTM 算法,優(yōu)化的LSTM 算法在CPU 使用率預(yù)測(cè)上表現(xiàn)出較好的效果,預(yù)測(cè)的準(zhǔn)確率有所提高。
1)數(shù)據(jù)采集
使用shell 腳本,從服務(wù)器中自動(dòng)收集CPU 資源使用情況的數(shù)據(jù),數(shù)據(jù)內(nèi)容為CPU 資源使用率,每隔5 s 收集一次,共收集3 萬(wàn)條數(shù)據(jù)。
2)數(shù)據(jù)預(yù)處理
考慮到CPU 數(shù)據(jù)不穩(wěn)定,且容易存在噪聲點(diǎn),采用滑動(dòng)平均法[9]對(duì)數(shù)據(jù)做平滑處理。此外為了方便模型訓(xùn)練及準(zhǔn)確性評(píng)價(jià),對(duì)數(shù)據(jù)進(jìn)行壓縮和平移,完成歸一化處理[10]。
LSTM 模型對(duì)RNN 模型[11]進(jìn)行了改進(jìn),用cell 門開(kāi)關(guān)替換了RNN 的單個(gè)循環(huán)結(jié)構(gòu),這樣能夠更加精確地處理時(shí)間序列的長(zhǎng)期依賴關(guān)系[12]。CPU 使用情況隨時(shí)間的變動(dòng)屬于時(shí)間序列類型,可將各個(gè)時(shí)刻CPU 的狀態(tài)作為L(zhǎng)STM 模型的輸入,進(jìn)行CPU 使用情況預(yù)測(cè)分析。
LSTM 模型的具體構(gòu)建過(guò)程如下所示:
步驟1:遺忘門的輸入由預(yù)處理之后的數(shù)據(jù)xt與前一時(shí)刻隱藏層輸出ht-1決定,輸出為ft。表達(dá)式如下:
Wf為遺忘門權(quán)重;bf為遺忘門偏置;σ 為Sigmoid 激活函數(shù)。
遺忘門訓(xùn)練的結(jié)果是Wf的權(quán)重,此外,上一時(shí)刻的輸出和當(dāng)前時(shí)刻的輸入分別為一個(gè)向量,通過(guò)連接操作將兩者連接成為長(zhǎng)向量。遺忘門控制模型從cell 狀態(tài)丟棄信息,因?yàn)榧せ詈瘮?shù)輸出一個(gè)小于1的值,這就意味著對(duì)每個(gè)維度值進(jìn)行衰減。
步驟2:預(yù)處理之后的數(shù)據(jù)xt與前一時(shí)刻隱藏層輸出ht-1經(jīng)過(guò)單元的輸入門,然后更新參數(shù),參數(shù)更新由Sigmoid 函數(shù)來(lái)控制,之后再結(jié)合ReLU 層產(chǎn)生一個(gè)新的候選狀態(tài)向量,輸入門的表達(dá)式定義為it,Ct是由和it共同創(chuàng)建的新的狀態(tài)向量,相關(guān)表達(dá)式如下:
Wi為輸入門的權(quán)重;Wc為輸入單元狀態(tài)權(quán)重矩陣;bi為輸入門偏置項(xiàng),bc為輸入單元狀態(tài)偏置項(xiàng),ReLU 為激活函數(shù)。
步驟3:隱藏層單元輸出值ht由輸出門ot和單元狀態(tài)值Ct計(jì)算后得出,表達(dá)式如下:
ot為輸出門;Wo為權(quán)重矩陣;bo為偏置項(xiàng)。
步驟4:根據(jù)ht計(jì)算出模型的輸出值,進(jìn)而構(gòu)造模型的均方誤差,最后通過(guò)Adam 算法[13]最小化目標(biāo)函數(shù),并不斷更新模型參數(shù),使得網(wǎng)絡(luò)達(dá)到最優(yōu)。
步驟5:通過(guò)以上步驟訓(xùn)練完成后,將要預(yù)測(cè)的時(shí)間段作為模型的輸入,則模型的輸出值即為后一時(shí)間段CPU 的預(yù)測(cè)值。
在深度學(xué)習(xí)中,常見(jiàn)的飽和激活函數(shù)[14]包括Sigmoid 函數(shù)和雙曲正切函數(shù)Tanh 函數(shù)。其函數(shù)和導(dǎo)數(shù)曲線如圖1 和圖2 所示。
從圖中可看出,Sigmoid、Tanh 兩個(gè)激活函數(shù)的導(dǎo)數(shù)值在正負(fù)飽和區(qū)接近于0值,即梯度趨近于0,當(dāng)梯度消失[15]時(shí),模型學(xué)習(xí)速度變慢,進(jìn)而減緩收斂速度[16]。
基于以上兩種激活函數(shù)存在的問(wèn)題,該文在激活函數(shù)方面采用非飽和激活函數(shù)ReLU 函數(shù)。ReLU函數(shù)的表達(dá)式為:
圖1 Sigmoid函數(shù)和導(dǎo)數(shù)曲線
圖2 Tanh函數(shù)和導(dǎo)數(shù)曲線
其函數(shù)圖像如圖3 所示。
圖3 ReLU函數(shù)曲線
由圖像和表達(dá)式可知,ReLU 激活函數(shù)在正區(qū)間的梯度為常數(shù),不會(huì)產(chǎn)生梯度消失現(xiàn)象,從而可以加快模型的學(xué)習(xí)速度和收斂速度,縮短訓(xùn)練周期。
LSTM 算法預(yù)測(cè)包含6 個(gè)步驟,主要流程如圖4所示。
圖4 預(yù)測(cè)流程圖
1)數(shù)據(jù)采集:收集服務(wù)器上的CPU 資源數(shù)據(jù)。
2)數(shù)據(jù)預(yù)處理:使用滑動(dòng)平均法對(duì)數(shù)據(jù)做平滑處理,并且對(duì)數(shù)據(jù)做歸一化處理。
3)模型構(gòu)建:選擇合適的隱藏神經(jīng)元數(shù)和層數(shù),選擇激活函數(shù)、配置訓(xùn)練集與預(yù)測(cè)集占比等,完成LSTM 模型構(gòu)建[17]。
4)訓(xùn)練模型:選用大量數(shù)據(jù)進(jìn)行模型訓(xùn)練。
5)優(yōu)化參數(shù):根據(jù)各訓(xùn)練模型的預(yù)測(cè)表現(xiàn),優(yōu)化模型各參數(shù)[18]。
6)預(yù)測(cè)模型:通過(guò)最優(yōu)參數(shù)生成預(yù)測(cè)模型,后續(xù)用于對(duì)資源進(jìn)行預(yù)測(cè)。
為了分析LSTM 模型在各激活函數(shù)下對(duì)CPU 預(yù)測(cè)的準(zhǔn)確率和性能,將采集的3 萬(wàn)條CPU 使用率數(shù)據(jù)分為30 組,每組各1 000 條數(shù)據(jù),每條數(shù)據(jù)采集間隔5 s。選用Sigmoid、Tanh、ReLU 3 個(gè)激活函數(shù)進(jìn)行實(shí)驗(yàn)。同時(shí),使用自回歸滑動(dòng)平均模型(ARMA)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)算法做參照對(duì)比。
首先,評(píng)估各激活函數(shù)預(yù)測(cè)準(zhǔn)確性。在評(píng)價(jià)各組模型表現(xiàn)時(shí),采用平均相對(duì)誤差(MRE)進(jìn)行對(duì)比。第n組數(shù)據(jù)平均相對(duì)誤差(MRE)的公式為:
其中,h(xi)為預(yù)測(cè)值,yi為真實(shí)值,m為測(cè)試集數(shù)據(jù)長(zhǎng)度。
在評(píng)估整體函數(shù)表現(xiàn)時(shí),使用30 組預(yù)測(cè)結(jié)果平均相對(duì)誤差的均值進(jìn)行對(duì)比分析。
訓(xùn)練集與測(cè)試集比例分別為7∶3、8∶2、9∶1 時(shí),ARMA、RNN 和LSTM 各激活函數(shù)預(yù)測(cè)的平均相對(duì)誤差的均值()如表1 所示。
表1 各模型不同訓(xùn)練集占比平均相對(duì)誤差的均值()
表1 各模型不同訓(xùn)練集占比平均相對(duì)誤差的均值()
從表中可見(jiàn),ReLU 激活函數(shù)平均相對(duì)誤差較其他算法表現(xiàn)好。其中Tanh 與ReLU 3 種訓(xùn)練集與預(yù)測(cè)集比例的平均分別為3.47%、2.99%,可知ReLU 激活函數(shù)的平均相對(duì)誤差相比傳統(tǒng)LSTM 算法中Tanh 激活函數(shù)下降13.75%。
考慮CPU 預(yù)測(cè)場(chǎng)景的實(shí)際意義,對(duì)不同函數(shù)相對(duì)誤差的最大值進(jìn)行分析。不同訓(xùn)練集和測(cè)試集比例下各激活函數(shù)預(yù)測(cè)的相對(duì)誤差的最大值如表2 所示,可以看到30 組數(shù)據(jù)中,ReLU 函數(shù)不僅在準(zhǔn)確率的穩(wěn)定性上表現(xiàn)優(yōu)異,在極端預(yù)測(cè)場(chǎng)景,表現(xiàn)也是最佳。
表2 各模型不同訓(xùn)練集占比下相對(duì)誤差的最大值
除訓(xùn)練集占比影響外,分析各模型在整體數(shù)據(jù)集長(zhǎng)度不同時(shí),平均相對(duì)誤差的均值()情況,統(tǒng)計(jì)數(shù)據(jù)如表3 所示。
表3 各模型不同數(shù)據(jù)集長(zhǎng)度平均相對(duì)誤差的均值()
表3 各模型不同數(shù)據(jù)集長(zhǎng)度平均相對(duì)誤差的均值()
從表中可知,各算法預(yù)測(cè)效果差距隨數(shù)據(jù)集長(zhǎng)度變化不大,即ReLU 在各時(shí)間長(zhǎng)度下均為最優(yōu),其次為Tanh,最差為ARMA。各算法隨著數(shù)據(jù)集時(shí)長(zhǎng)增加,預(yù)測(cè)誤差有一定上升,這在一定程度上體現(xiàn)出測(cè)試數(shù)據(jù)中,CPU 使用情況與較長(zhǎng)時(shí)間前使用情況關(guān)聯(lián)性較弱。在實(shí)際應(yīng)用時(shí),需根據(jù)具體預(yù)測(cè)場(chǎng)景選取時(shí)間長(zhǎng)度。
其次,評(píng)估各激活函數(shù)訓(xùn)練速度。此處選用各激活函數(shù)平均相對(duì)誤差均值最小的訓(xùn)練預(yù)測(cè)占比9∶1進(jìn)行評(píng)估,使用各激活函數(shù)分別訓(xùn)練10 輪、30 輪、50 輪、70 輪,數(shù)據(jù)集為1 000 個(gè)點(diǎn)(5 s 采集一個(gè)數(shù)據(jù),1 000 個(gè)點(diǎn)共計(jì)83 min)。記錄完成訓(xùn)練所需時(shí)間,如表4 所示。
表4 各激活函數(shù)訓(xùn)練時(shí)長(zhǎng)對(duì)比表
從上表可以看出各激活函數(shù)在同樣訓(xùn)練輪數(shù)下,速度沒(méi)有顯著差異。分析激活函數(shù)收斂速度,隨著訓(xùn)練輪數(shù)的增加,各激活函數(shù)歸一化均方誤差變化見(jiàn)圖5,選取歸一化后均方誤差小于0.005 且訓(xùn)練輪次變動(dòng)比例小于5%作為收斂點(diǎn),ReLU 激活函數(shù)、Tanh 激活函數(shù)、Sigmoid 激活函數(shù)分別在24 輪、30 輪、50輪收斂。計(jì)算可得,ReLU收斂速度比Tanh、Sigmoid分別提高20%、52%。隨著訓(xùn)練輪數(shù)增加,ReLU 激活函數(shù)收斂速度最快。
圖5 3個(gè)函數(shù)歸一化均方誤差對(duì)比圖
接下來(lái),評(píng)估各激活函數(shù)預(yù)測(cè)CPU 不同變動(dòng)場(chǎng)景的效果。選取預(yù)測(cè)誤差最小和預(yù)測(cè)誤差最大的兩組數(shù)據(jù)進(jìn)行預(yù)測(cè)效果對(duì)比。首先,對(duì)兩組數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗(yàn)。
序列的平穩(wěn)性檢驗(yàn)常用的一種方法是圖檢驗(yàn)法,通過(guò)繪制序列時(shí)序圖和序列自相關(guān)圖,針對(duì)圖形展現(xiàn)的特征判定平穩(wěn)性。其中,自相關(guān)圖反映了自相關(guān)系數(shù)隨延遲期數(shù)k的變化趨勢(shì)。自相關(guān)系數(shù)(Autocorrelation Coefficient)的定義如下:
平穩(wěn)序列具有短期相關(guān)性。通過(guò)自相關(guān)圖的變化趨勢(shì)可以看出,當(dāng)延遲期數(shù)k增加時(shí),自相關(guān)系數(shù)快速震蕩衰減或單調(diào)衰減接近0 的是平穩(wěn)序列,緩慢衰減的則是非平穩(wěn)序列。對(duì)兩組數(shù)據(jù)進(jìn)行自相關(guān)圖繪制,分別得到圖6 與圖7,可以看出,第一組數(shù)據(jù)的自相關(guān)系數(shù)下降至0 的速度較第二組數(shù)據(jù)更快,即第一組數(shù)據(jù)的平穩(wěn)性高于第二組數(shù)據(jù)。
圖6 第一組數(shù)據(jù)自相關(guān)圖
圖7 第二組數(shù)據(jù)自相關(guān)圖
對(duì)兩組數(shù)據(jù)在不同激活函數(shù)下的預(yù)測(cè)效果進(jìn)行對(duì)比。
第一組對(duì)比:其自相關(guān)圖見(jiàn)圖6,其預(yù)測(cè)效果如圖8 所示。該場(chǎng)景下,CPU 使用率變化不大,各激活函數(shù)預(yù)測(cè)效果差距不大。可見(jiàn)在此場(chǎng)景下,ReLU 激活函數(shù)預(yù)測(cè)優(yōu)勢(shì)并不顯著。
第二組對(duì)比:其自相關(guān)圖見(jiàn)圖7,其預(yù)測(cè)效果如圖9 所示。該場(chǎng)景下,CPU 使用率出現(xiàn)大幅上升,ReLU 預(yù)測(cè)效果顯著優(yōu)于其他激活函數(shù)。實(shí)際運(yùn)維監(jiān)控中,CPU 使用率上升到90%等閾值是關(guān)鍵監(jiān)控指標(biāo),但此場(chǎng)景其他激活函數(shù)預(yù)測(cè)效果較差,無(wú)法起到提前預(yù)警作用。
圖8 第一組數(shù)據(jù)CPU預(yù)測(cè)效果對(duì)比
圖9 第二組數(shù)據(jù)CPU預(yù)測(cè)效果對(duì)比
總的來(lái)說(shuō),在CPU 運(yùn)行相對(duì)平穩(wěn)時(shí),ReLU 激活函數(shù)優(yōu)勢(shì)不明顯,但在CPU 突變場(chǎng)景下,其預(yù)測(cè)效果明顯優(yōu)于Tanh、Sigmoid。在實(shí)際監(jiān)控場(chǎng)景,使用ReLU 進(jìn)行CPU 使用率預(yù)測(cè)有很大的實(shí)踐意義。同時(shí),在訓(xùn)練集占比方面,如表1 所示,ReLU 函數(shù)在訓(xùn)練集與預(yù)測(cè)集比例為9∶1 時(shí)表現(xiàn)最佳,且從圖5 可見(jiàn),ReLU 激活函數(shù)在30 輪基本完成收斂,可作為模型訓(xùn)練參考比例與輪數(shù)。在該文訓(xùn)練CPU 使用率的30 組數(shù)據(jù)中,ReLU 激活函數(shù)未出現(xiàn)不收斂數(shù)據(jù)集。
提出了一種基于長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)的CPU資源使用情況預(yù)測(cè)算法,該算法優(yōu)化了傳統(tǒng)LSTM 算法,選用非飽和激活函數(shù)ReLU 函數(shù)替換飽和激活函數(shù)Tanh 函數(shù),提高模型收斂速度。經(jīng)實(shí)驗(yàn)對(duì)比,優(yōu)化的LSTM算法比自回歸滑動(dòng)平均模型(ARMA)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)算法和傳統(tǒng)LSTM 算法預(yù)測(cè)準(zhǔn)確率更高,為實(shí)際CPU預(yù)測(cè)場(chǎng)景提供了一個(gè)較好的解決方案。