陳冬林,林文健,黃莉莉
(武漢理工大學(xué) 湖北省電子商務(wù)大數(shù)據(jù)工程技術(shù)中心,湖北 武漢 430070)
云計(jì)算對于計(jì)算資源的公共化和開放化具有重要意義,但偏低的利用率一直是云計(jì)算資源管理方面的難題。研究顯示,目前,各類云計(jì)算資源利用率不足50%,大量計(jì)算資源處于閑置狀態(tài)[1]。而維持較多云計(jì)算資源的正常運(yùn)轉(zhuǎn)一方面需要消耗大量電力資源,另一方面基礎(chǔ)設(shè)施的管理和維護(hù)也會產(chǎn)生較高的人力資源成本。云計(jì)算資源偏低的利用率已然造成了社會資源的巨大浪費(fèi)。
提升云計(jì)算資源利用率的有效方法是對資源的負(fù)荷量進(jìn)行精準(zhǔn)預(yù)測,通過解析云計(jì)算資源使用狀況的歷史數(shù)據(jù),探尋負(fù)荷量變化的內(nèi)在規(guī)律,預(yù)測未來一段時(shí)間內(nèi)云計(jì)算資源的負(fù)荷量。云服務(wù)供應(yīng)商可以根據(jù)預(yù)測結(jié)果動態(tài)調(diào)整資源配置,為用戶提供不同服務(wù)等級(Service-Level Agreement,SLA)的云計(jì)算資源,降低自身電力資源和人力資源成本。
鑒于云計(jì)算資源利用率偏低的現(xiàn)狀及其負(fù)荷預(yù)測能夠帶來巨大收益,云計(jì)算資源負(fù)荷的準(zhǔn)確預(yù)測問題已經(jīng)引起學(xué)術(shù)工作者和云計(jì)算行業(yè)的廣泛關(guān)注[2]。近年來,國內(nèi)外學(xué)者對如何有效提高云計(jì)算資源負(fù)荷預(yù)測的精度和穩(wěn)定性進(jìn)行了探索和研究,研究方法主要分為序列分析類和機(jī)器學(xué)習(xí)類。云計(jì)算負(fù)荷預(yù)測的序列分析方法有:自回歸模型[3]、Holt-Winters模型[4]、經(jīng)驗(yàn)?zāi)B(tài)分解(EMD)[5]等。隨著對云計(jì)算資源負(fù)荷預(yù)測要求的不斷提高,序列分析類方法在預(yù)測精度和復(fù)雜環(huán)境下的預(yù)測穩(wěn)定性問題逐漸凸顯。機(jī)器學(xué)習(xí)的興起使云計(jì)算資源的負(fù)荷預(yù)測進(jìn)入新的領(lǐng)域,采取的主要方法有神經(jīng)網(wǎng)絡(luò)模型、支持向量機(jī)方法、粒子群優(yōu)化算法等。Kumar等[6-7]基于BP神經(jīng)網(wǎng)絡(luò)對云數(shù)據(jù)中心的工作負(fù)載進(jìn)行預(yù)測;Nhuan等[8-9]基于長短期記憶神經(jīng)網(wǎng)絡(luò)構(gòu)建云數(shù)據(jù)中心工作量預(yù)測模型,對歷史負(fù)荷數(shù)據(jù)的時(shí)間序列進(jìn)行分析,實(shí)現(xiàn)預(yù)測的高精確度;孟煜等[10]提出一種云服務(wù)用戶并發(fā)量區(qū)間預(yù)測模型,利用梯度下降粒子群優(yōu)化的支持向量機(jī)作為主要預(yù)測方法。
現(xiàn)有云計(jì)算資源負(fù)荷預(yù)測的研究中,缺乏對時(shí)序因素的考慮,未能基于當(dāng)前的時(shí)間節(jié)點(diǎn)對云計(jì)算資源負(fù)荷進(jìn)行考量,難以把握云計(jì)算資源負(fù)荷的動態(tài)時(shí)序特征。基于上述分析,筆者提出一種引入時(shí)序因素的BP神經(jīng)網(wǎng)絡(luò)與長短期記憶網(wǎng)絡(luò)相結(jié)合的BPNN-LSTM組合模型,對云計(jì)算資源負(fù)荷進(jìn)行預(yù)測,以期在不同時(shí)間維度上獲得更好的預(yù)測精度。
本文以BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network,BPNN)和長短期記憶網(wǎng)絡(luò)(Long Short Term Memory networks,LSTM)為理論基礎(chǔ),對不同時(shí)間維度的云計(jì)算資源負(fù)荷進(jìn)行預(yù)測。
BP神經(jīng)網(wǎng)絡(luò)[11]是一種信號正向傳遞、誤差逆向傳播的多層前饋神經(jīng)網(wǎng)絡(luò),廣泛應(yīng)用于函數(shù)逼近、模式識別等領(lǐng)域。BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)包括輸入層、隱含層和輸出層,每層均由神經(jīng)元聯(lián)結(jié)組成。BP神經(jīng)網(wǎng)絡(luò)的正向計(jì)算過程中,信息由輸入層輸入,經(jīng)各隱含層的處理和計(jì)算,由輸出層輸出處理結(jié)果。誤差的逆向傳播中,計(jì)算輸出層處理結(jié)果的誤差,反向傳播誤差信號,采用梯度下降的方式修正各神經(jīng)元間聯(lián)結(jié)的權(quán)值,實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化。
LSTM網(wǎng)絡(luò)[12]是一類可以處理數(shù)據(jù)長期依賴問題的特殊神經(jīng)網(wǎng)絡(luò),克服了BP神經(jīng)網(wǎng)絡(luò)求解過程中的梯度消失或梯度爆炸問題。LSTM的隱含層不再是普通的神經(jīng)元,而是用于增加或刪除細(xì)胞狀態(tài)(cell state)中信息的三重門結(jié)構(gòu),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
LSTM的前向計(jì)算過程中,每一個(gè)記憶細(xì)胞(cell)的運(yùn)算均由輸入門(input gate)、遺忘門(forget gate)、輸出門(output gate)控制,每個(gè)門依據(jù)激活函數(shù)的判斷邏輯決定是否將運(yùn)算結(jié)果向下傳遞。當(dāng)前狀態(tài)下,輸入門it控制輸入數(shù)據(jù)xt新生成的信息是否可以加入到當(dāng)前細(xì)胞狀態(tài)ct;遺忘門ft控制上一時(shí)刻細(xì)胞狀態(tài)ct-1的信息是否可以加入到當(dāng)前細(xì)胞狀態(tài);輸出門οt基于輸入門和遺忘門更新后的細(xì)胞狀態(tài),輸出隱藏狀態(tài)ht。LSTM誤差的反向誤差傳播程與BP神經(jīng)網(wǎng)絡(luò)類似,通過計(jì)算誤差,按照時(shí)間和網(wǎng)絡(luò)層級兩個(gè)方向反向傳播誤差信號,更新權(quán)值梯度,優(yōu)化聯(lián)結(jié)權(quán)值。
針對引言中提出的問題,提出引入時(shí)序因素的BPNN-LSTM組合預(yù)測模型,具體框架如圖2所示。首先,基于云計(jì)算負(fù)荷歷史數(shù)據(jù)匹配相應(yīng)的時(shí)序數(shù)據(jù),經(jīng)過對數(shù)據(jù)的清洗和數(shù)據(jù)歸一化處理,得到增強(qiáng)數(shù)據(jù)集,作為組合模型的輸入數(shù)據(jù);再拆分輸入數(shù)據(jù),形成BPNN模型的訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),確定BPNN網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)值、閾值參數(shù),訓(xùn)練網(wǎng)絡(luò),對測試數(shù)據(jù)進(jìn)行預(yù)測,計(jì)算預(yù)測誤差;然后,基于BPNN誤差,再次匹配時(shí)序數(shù)據(jù),并進(jìn)行歸一化處理,作為LSTM網(wǎng)絡(luò)的輸入數(shù)據(jù),確定LSTM網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)值、閾值參數(shù),進(jìn)行訓(xùn)練和預(yù)測,得到BPNN殘差預(yù)測值;最后,加總BPNN預(yù)測結(jié)果和LSTM殘差預(yù)測結(jié)果,得到最終的云計(jì)算資源負(fù)荷預(yù)測值。
以xi(i∈(1,n+k))表示第i個(gè)時(shí)間節(jié)點(diǎn)的云計(jì)算資源負(fù)荷歷史數(shù)據(jù),以x1,x2,…,xn構(gòu)建第1個(gè)時(shí)間節(jié)點(diǎn)到第n個(gè)時(shí)間節(jié)點(diǎn)的歷史數(shù)據(jù),以x2,x3,…,xn+1構(gòu)建第2個(gè)時(shí)間節(jié)點(diǎn)到第n+1個(gè)時(shí)間節(jié)點(diǎn)的歷史數(shù)據(jù),依此類推,構(gòu)建云計(jì)算資源負(fù)荷歷史數(shù)據(jù)矩陣
(1)
基于企業(yè)用戶云服務(wù)需求的時(shí)序特征,引入時(shí)序因素的日期屬性Di(單位:d,i∈(1,n+k))和時(shí)間屬性Ti(單位:h,i∈(1,n+k)),匹配云計(jì)算資源負(fù)荷歷史數(shù)據(jù)矩陣,構(gòu)建數(shù)據(jù)集X和待預(yù)測數(shù)據(jù)集Y。
(2)
經(jīng)數(shù)據(jù)清洗和歸一化處理后,得到增強(qiáng)數(shù)據(jù)集(X,Y),作為組合模型的輸入數(shù)據(jù)。
拆分輸入數(shù)據(jù)(X,Y)為訓(xùn)練數(shù)據(jù)集(Xtrain,Ytrain)和測試數(shù)據(jù)集(Xtest,Ytest),構(gòu)建輸入層、第一層隱含層、第二層隱含層、輸出層的四層網(wǎng)絡(luò)結(jié)構(gòu),采用隨機(jī)函數(shù)生成的方式初始化權(quán)值和閾值參數(shù)。選取sigmoid函數(shù)為BPNN神經(jīng)網(wǎng)絡(luò)的激活函數(shù),函數(shù)表達(dá)式為
(3)
對訓(xùn)練數(shù)據(jù)集進(jìn)行正向預(yù)測,設(shè)置比對預(yù)測結(jié)果Ypredict和實(shí)際負(fù)荷數(shù)據(jù)Ytest的損失函數(shù)為均方誤差平方根函數(shù)
(4)
依據(jù)梯度下降規(guī)則調(diào)整權(quán)值,將輸出層的反傳誤差信號經(jīng)第二層隱含層、第一層隱含層傳遞計(jì)算,最終傳至輸出層。通過誤差的反向傳播,修正各個(gè)節(jié)點(diǎn)之間的連接權(quán)值,實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化。
網(wǎng)絡(luò)訓(xùn)練完成后,代入測試數(shù)據(jù)集Xtest,計(jì)算BPNN預(yù)測結(jié)果YBP與實(shí)際負(fù)荷數(shù)據(jù)Ytest的殘差E,并將其傳向LSTM網(wǎng)絡(luò)。
基于BPNN預(yù)測殘差E,再次匹配時(shí)序數(shù)據(jù)Di和Ti, 經(jīng)歸一化處理,作為LSTM網(wǎng)絡(luò)的輸入數(shù)據(jù)。輸入數(shù)據(jù)經(jīng)輸入門、遺忘門、輸出門的運(yùn)算,生成當(dāng)前細(xì)胞狀態(tài)保留信息ot和隱藏狀態(tài)的輸出ht,并將輸出數(shù)據(jù)向下一時(shí)刻傳遞,最終得到殘差預(yù)測結(jié)果E′。
最終預(yù)測結(jié)果YBP_LSTM為BPNN預(yù)測結(jié)果和LSTM殘差預(yù)測結(jié)果之和,即
YBP_LSTM=YBP+E′
(5)
采用平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)評價(jià)模型預(yù)測結(jié)果,函數(shù)表達(dá)式為
(6)
本文使用的數(shù)據(jù)是Wikipedia網(wǎng)站2012年1月1日至2015年12月31日每日24小時(shí)的云計(jì)算資源負(fù)荷數(shù)據(jù)[13](并發(fā)量數(shù)據(jù)),圖3(a)和圖3(b)描述了該網(wǎng)站云計(jì)算資源負(fù)荷的周數(shù)據(jù)和日數(shù)據(jù)。
如圖3所示,云計(jì)算資源負(fù)荷量在月度上有較為明顯的變化規(guī)律,周與周之間的變化規(guī)律基本一致。在一周的時(shí)間維度上,可以看出工作日的負(fù)荷量明顯高于周末的負(fù)荷量,初步判斷,日期屬性在一定程度上會影響云計(jì)算資源負(fù)荷。在日變化曲線上可以看出,負(fù)荷量高峰出現(xiàn)在每日的約18:00—22:00,低谷期則出現(xiàn)在每日的約0:00—7:00,判斷時(shí)間屬性與云計(jì)算資源負(fù)荷有較強(qiáng)的相關(guān)性。
經(jīng)測算,云計(jì)算資源負(fù)荷量與日期因素、時(shí)間因素的Pearson相關(guān)性檢驗(yàn)均在0.01的水平上顯著相關(guān)。其中,日期因素的Pearson相關(guān)系數(shù)為0.485,與云計(jì)算資源負(fù)荷量中等強(qiáng)度相關(guān);時(shí)間因素的Pearson相關(guān)系數(shù)為0.715,與云計(jì)算資源負(fù)荷量強(qiáng)相關(guān)。結(jié)合曲線變化趨勢分析和Pearson相關(guān)性檢驗(yàn)結(jié)果可知,用戶對云計(jì)算資源的需求與時(shí)序因素相關(guān)性較大。
基于2015年1月1日至11月1日的7 319條云計(jì)算負(fù)荷數(shù)據(jù),匹配時(shí)序數(shù)據(jù),經(jīng)數(shù)據(jù)清洗和歸一化處理,作為模型的訓(xùn)練集;基于2015年月11月2日至11月3日的48條云計(jì)算負(fù)荷數(shù)據(jù),匹配時(shí)序數(shù)據(jù),經(jīng)數(shù)據(jù)清洗和歸一化處理,作為模型的測試集。設(shè)置BPNN為4層網(wǎng)絡(luò)結(jié)構(gòu),包含兩層隱含層,設(shè)置輸入層24個(gè)神經(jīng)元,輸出層1個(gè)神經(jīng)元。因隱含層神經(jīng)元個(gè)數(shù)對實(shí)驗(yàn)結(jié)果有較大影響,為提高預(yù)測精度,基于文獻(xiàn)[2]的方法,對BPNN第一層隱含層和第二層隱含層的節(jié)點(diǎn)數(shù)進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示。由實(shí)驗(yàn)結(jié)果可選擇使得預(yù)測誤差最小的神經(jīng)元個(gè)數(shù)方案,最終確定BPNN第一層隱含層神經(jīng)元個(gè)數(shù)為13個(gè),第二層隱含層神經(jīng)元個(gè)數(shù)為8個(gè)。
綜合考慮預(yù)測精度和預(yù)測時(shí)間,設(shè)置BPNN訓(xùn)練步長為25 000,學(xué)習(xí)率為0.095;設(shè)置LSTM訓(xùn)練規(guī)模batch_size為40,迭代次數(shù)為1 000。BPNN-LSTM組合模型的預(yù)測結(jié)果如圖5(a)所示。由圖5可知,所提出的組合模型具有良好的預(yù)測效果,在48小時(shí)的時(shí)間維度上較好地?cái)M合了云計(jì)算資源負(fù)荷,與真實(shí)的負(fù)荷變化趨勢基本一致。BPNN-LSTM組合模型預(yù)測的平均誤差率為3.524%,誤差曲線如圖5(b)所示。雖然有部分點(diǎn)的誤差率超過10%,但大部分誤差基本控制在-5%~5%之間,擬合效果較好。
為檢驗(yàn)所提出的模型在不同時(shí)間維度上預(yù)測效果的穩(wěn)定性,分別對未來24 h、48 h、168 h、720 h的云計(jì)算資源負(fù)荷進(jìn)行預(yù)測,預(yù)測結(jié)果如圖6所示。模型在預(yù)測時(shí)間維度為24 h、48 h、168 h和720 h上預(yù)測誤差分別為4.228%、3.524%、4.735%和3.978%,總體預(yù)測精度較高,且具有較好的穩(wěn)定性。
為綜合考察所提出的BPNN-LSTM預(yù)測模型和其他預(yù)測模型的預(yù)測精度及在不同時(shí)間維度上預(yù)測效果的穩(wěn)定性,基于相同數(shù)據(jù)集,采用本文所提出的引入時(shí)序因素的BPNN-LSTM模型、普通的BPNN-LSTM模型、GA-BP模型、BPNN模型、LSTM模型對未來24 h、48 h、168 h、336 h和720 h的云計(jì)算資源負(fù)荷進(jìn)行預(yù)測。表1記錄了不同模型在不同時(shí)間維度上的誤差率數(shù)據(jù)。
表1 各模型不同時(shí)間維度上預(yù)測的誤差率 %
實(shí)驗(yàn)結(jié)果顯示:(1)引入時(shí)序因素的BPNN-LSTM模型在預(yù)測誤差上明顯低于其他模型,且在不同時(shí)間維度上預(yù)測誤差也均維持在4.8%以下,預(yù)測效果較為穩(wěn)定;(2)BP-LSTM模型和GA-BP模型總體預(yù)測誤差在6%~9%之間,預(yù)測效果一般且不穩(wěn)定;(3)BPNN模型和LSTM模型總體誤差為8%~12%,預(yù)測效果較差。
圖7更加直觀地反映了各個(gè)模型的預(yù)測效果。GA-BP模型和普通的BP-LSTM模型僅從模型角度優(yōu)化,未能考慮云服務(wù)需求受時(shí)序因素的影響,難以準(zhǔn)確把握云計(jì)算資源負(fù)荷特征,因而在預(yù)測精度和預(yù)測穩(wěn)定性上存在劣勢。單一的BPNN模型和LSTM模型不具備對預(yù)測結(jié)果的二次優(yōu)化,且未能充分考慮對云計(jì)算資源負(fù)荷具有重要影響的時(shí)序因素,因而預(yù)測效果較差。
綜合上述分析,筆者提出的引入時(shí)序因素的BP-LSTM組合預(yù)測模型在不同時(shí)間維度下的預(yù)測精度更高且更具穩(wěn)定性。
針對當(dāng)前云計(jì)算資源負(fù)荷預(yù)測精度低、難以準(zhǔn)確把握歷史數(shù)據(jù)時(shí)序特征的問題,提出了一種基于BPNN-LSTM的云計(jì)算資源負(fù)荷組合預(yù)測模型,引入時(shí)序數(shù)據(jù)構(gòu)建增強(qiáng)數(shù)據(jù)集,采用LSTM網(wǎng)絡(luò)對BPNN網(wǎng)絡(luò)的預(yù)測殘差進(jìn)行修正。采用Wikipedia網(wǎng)站的云計(jì)算資源負(fù)荷數(shù)據(jù)進(jìn)行數(shù)值實(shí)驗(yàn),對不同時(shí)間維度下的負(fù)荷量進(jìn)行預(yù)測。實(shí)驗(yàn)結(jié)果表明,筆者提出的基于BPNN-LSTM的云計(jì)算資源負(fù)荷組合預(yù)測方法行之有效,能夠?qū)Σ煌瑫r(shí)間維度下的云計(jì)算資源負(fù)荷進(jìn)行精準(zhǔn)預(yù)測。
后續(xù)研究工作主要聚焦于將所提出模型與不同類型的云計(jì)算實(shí)例相結(jié)合,在不同時(shí)間維度下對多實(shí)例的云計(jì)算資源負(fù)荷進(jìn)行預(yù)測,以提高該方法的普適性。