黨偉超,李 濤,白尚旺
(太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,太原 030024)
長(zhǎng)時(shí)間運(yùn)行的軟件系統(tǒng),會(huì)出現(xiàn)軟件錯(cuò)誤不斷累積、占用資源不斷增加、性能持續(xù)下降,最終導(dǎo)致軟件失效或崩潰的軟件老化現(xiàn)象[1].對(duì)于發(fā)生老化的軟件系統(tǒng),在適當(dāng)時(shí)刻主動(dòng)進(jìn)行抗衰操作可以避免軟件發(fā)生失效[2].因此,如果能夠?qū)崟r(shí)準(zhǔn)確預(yù)測(cè)軟件系統(tǒng)的剩余壽命,通過(guò)預(yù)測(cè)軟件剩余使用壽命來(lái)推導(dǎo)軟件最優(yōu)抗衰時(shí)刻,將會(huì)減少抗衰決策判斷誤差.
軟件剩余使用壽命(Remaining Useful Life,RUL)指軟件以當(dāng)前的運(yùn)行條件,能夠?qū)崿F(xiàn)其正常功能的剩余時(shí)間[3].RUL 常見(jiàn)的預(yù)測(cè)方法可分為基于模型與數(shù)據(jù)驅(qū)動(dòng)的方法.基于模型的方法是指通過(guò)構(gòu)建設(shè)備退化的數(shù)學(xué)或物理模型來(lái)進(jìn)行預(yù)測(cè).馬波等人提出了一種基于狀態(tài)監(jiān)測(cè)信息和滾動(dòng)軸承退化物理模型的壽命預(yù)測(cè)方法[4].基于模型的方法取得了不錯(cuò)的效果,但它依賴與特定的模型,不利于推廣[5].
數(shù)據(jù)驅(qū)動(dòng)中的深度學(xué)習(xí)方法由于具有強(qiáng)大的數(shù)據(jù)驅(qū)動(dòng)能力,并且無(wú)需知道確切的物理模型和領(lǐng)域知識(shí),以及在非線性映射特征提取方面的優(yōu)異性能,成為了剩余壽命預(yù)測(cè)領(lǐng)域中熱門方法[6].閆楚良等人[7]和王佳煒等人[8]用BP 神經(jīng)網(wǎng)絡(luò)分別對(duì)材料疲勞壽命和電磁繼電器進(jìn)行了預(yù)測(cè).Felix 等人提出用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurement Netural Network,RNN)對(duì)航空發(fā)動(dòng)機(jī)領(lǐng)域剩余壽命進(jìn)行了預(yù)測(cè)[9].RNN 網(wǎng)絡(luò)在結(jié)構(gòu)設(shè)計(jì)中引入了時(shí)序的概念,在學(xué)習(xí)具有內(nèi)在依賴性的時(shí)序數(shù)據(jù)時(shí)能夠產(chǎn)生對(duì)過(guò)去數(shù)據(jù)的記憶狀態(tài),能夠從原始數(shù)據(jù)獲取更多的數(shù)據(jù)規(guī)律性特征.LSTM (Long Short-Term Memory)作為一種改進(jìn)后的RNN 網(wǎng)絡(luò),成為剩余壽命預(yù)測(cè)的熱點(diǎn)技術(shù).在航天發(fā)動(dòng)機(jī)、鋰電池、滾動(dòng)軸承等剩余壽命預(yù)測(cè)領(lǐng)域都取得了成功[10–12].
基于上述分析,本文提出了一種基于LSTM的Web軟件系統(tǒng)實(shí)時(shí)剩余壽命預(yù)測(cè)模型,該模型充分考慮了Web 軟件系統(tǒng)資源消耗的時(shí)間特性,將當(dāng)前系統(tǒng)的剩余壽命動(dòng)態(tài)地與Web 資源損耗情況相關(guān)聯(lián).
1.1 長(zhǎng)短期記憶網(wǎng)絡(luò)
LSTM是一種改進(jìn)之后的循環(huán)神經(jīng)網(wǎng)絡(luò),可以解決RNN 感知能力下降的問(wèn)題[13].與RNN 相比,LSTM在其基礎(chǔ)上增加了一個(gè)細(xì)胞狀態(tài)(cell state),內(nèi)部有4個(gè)網(wǎng)絡(luò)層.一個(gè)典型的LSTM 通過(guò)3個(gè)門來(lái)控制細(xì)胞狀態(tài),這3個(gè)門分別為遺忘門、輸入門和輸出門.如圖1所示.門控循環(huán)單元(Gate Recurrent Unit,GRU)是LSTM 網(wǎng)絡(luò)的一種變體,它組合了遺忘門和輸入門到一個(gè)單獨(dú)的“更新門”中,合并了細(xì)胞狀態(tài)和隱藏狀態(tài),沒(méi)有輸出門,增加了重置門,如圖2所示.
圖1 LSTM 單元結(jié)構(gòu)圖
圖2 GRU 單元結(jié)構(gòu)圖
LSTM 三個(gè)門基于Sigmoid函數(shù)來(lái)增加或刪除細(xì)胞狀態(tài)中的信息,其中遺忘門和控制門用來(lái)控制上一時(shí)刻細(xì)胞狀態(tài)ct?1和當(dāng)前輸入新生成~ct里有多少信息可以加到當(dāng)前的細(xì)胞狀態(tài)中ct去,通過(guò)遺忘門和輸入門的輸出,更新細(xì)胞狀態(tài).式(1)為給定一個(gè)老化序列數(shù)據(jù){x1,x2,···,xt,···,xT},其中xt∈Rd,其中xt∈Rd,d為老化指標(biāo)信息特征個(gè)數(shù),T為時(shí)間步,當(dāng)輸入網(wǎng)絡(luò)時(shí)各門的計(jì)算結(jié)果.
式中,ft,it,ot∈Rm分別表示遺忘門、輸入門、輸出門的計(jì)算結(jié)果;,ct,ht∈Rm分別表示為新生成的細(xì)胞狀態(tài)、當(dāng)前細(xì)胞狀態(tài)、隱含層的輸出結(jié)果.m為隱含層LSTM 單元的數(shù)量.Whf,Whi,Who,Whc和Wxf,Wxi,Wxo,Wxc∈Rm×m是權(quán)重參數(shù);bf,bi,bo,bc∈Rm×d為偏差參數(shù).Sigmoid(),tanh()為激活函數(shù),⊙表示hadamard 乘積.
1.2 基于LSTM 網(wǎng)絡(luò)的Web 系統(tǒng)壽命預(yù)測(cè)模型構(gòu)建過(guò)程
基于LSTM 剩余壽命預(yù)測(cè)模型由輸入層、兩層LSTM 層、池化層、全連接層、輸出層構(gòu)成.如圖3所示.
圖3 模型結(jié)構(gòu)圖
(1)收集樣本并進(jìn)行標(biāo)準(zhǔn)化處理
每秒收集一次Web 軟件系統(tǒng)運(yùn)行過(guò)程內(nèi)存使用量數(shù)據(jù),假設(shè)第n秒發(fā)上了OOM (Out Of Memory)故障,則一共收集了n秒的系統(tǒng)運(yùn)行數(shù)據(jù).OOM 指的是當(dāng)系統(tǒng)因?yàn)闆](méi)有足夠的內(nèi)存為對(duì)象分配空間,就會(huì)報(bào)出這種故障.將系統(tǒng)在第i秒的內(nèi)存使用量表示為mi,則系統(tǒng)在i秒的剩余壽命可表示為ri=n?i,假設(shè)系統(tǒng)運(yùn)行了k秒以后才進(jìn)入系統(tǒng)老化狀態(tài),則每次運(yùn)行可得到如下采樣數(shù)據(jù):
得到的樣本表示為(M,R)={(mi,ri),i=1,2,3,···,n}.標(biāo)準(zhǔn)化處理后的樣本表示為(M′,R′)={(m′i,ri′),i=1,2,3,···,n},其中m′i和ri′的定義如式(3)所示:
(2)按照時(shí)間步長(zhǎng)得到模型的輸入
將集合M′按照時(shí)間步長(zhǎng)w分割為n?w個(gè)長(zhǎng)度為w的時(shí)間序列,用X表示,對(duì)應(yīng)的實(shí)際壽命用Y表示,如式(4)所示:
(3)確定LSTM的網(wǎng)絡(luò)結(jié)構(gòu)并初始化網(wǎng)絡(luò)
確定網(wǎng)絡(luò)的時(shí)間步長(zhǎng)、隱含層單元數(shù)、每層網(wǎng)絡(luò)節(jié)點(diǎn)的舍棄率以及相應(yīng)的激活函數(shù)、誤差的計(jì)算方式和權(quán)重更新迭代方式.給定初始權(quán)值矩陣,設(shè)置最大迭代次數(shù)和最小誤差值,訓(xùn)練網(wǎng)絡(luò)以更新各項(xiàng)網(wǎng)絡(luò)參數(shù).
(4)前向計(jì)算
將X={X1,X2,···,Xi,···,Xn?w}輸入LSTM 網(wǎng)絡(luò),根據(jù)式(1)計(jì)算對(duì)應(yīng)的遺忘門、輸入門以及輸出門的值,經(jīng)過(guò)LSTM 層得到的網(wǎng)絡(luò)輸出表示為式(5):
(5)池化層和全連接層
池化層將經(jīng)過(guò)LSTM 層處理輸出的Ht′平均池化,得到∈Rm,再經(jīng)過(guò)全連接層將進(jìn)行特征融合,得到∈R,再經(jīng)過(guò)反標(biāo)準(zhǔn)化處理,得到最終預(yù)測(cè)剩余壽命的預(yù)測(cè)值.
(6)定義損失函數(shù)
損失函數(shù)的計(jì)算公式如式(6)所示,式中,n為測(cè)試樣本總數(shù),為剩余壽命的預(yù)測(cè)值,Yi為剩余壽命的真實(shí)值,w為時(shí)間步長(zhǎng)的值.
(7)反向誤差傳播
采用批量梯度下降算法對(duì)指標(biāo)數(shù)據(jù)進(jìn)行批次劃分,采用優(yōu)化算法(RMSprop、AdaDelta、Adamax、Adam)對(duì)當(dāng)前的損失函數(shù)進(jìn)行優(yōu)化,實(shí)時(shí)調(diào)整網(wǎng)絡(luò)的偏置和權(quán)值,使網(wǎng)絡(luò)誤差不斷減少.當(dāng)最小誤差和迭代次數(shù)滿足要求時(shí)停止訓(xùn)練模型.將測(cè)試樣本數(shù)據(jù)輸入模型得到預(yù)測(cè)結(jié)果.
(8)評(píng)價(jià)指標(biāo)
為評(píng)估基于LSTM 網(wǎng)絡(luò)的Web 壽命預(yù)測(cè)模型的性能,用平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Squared Error,RMSE)作為評(píng)價(jià)指標(biāo).其公式如下:
除了RMSE和MAE之外,本文引入另外兩個(gè)相對(duì)評(píng)價(jià)指標(biāo):指數(shù)評(píng)價(jià)函數(shù)(Scoring Function,SF)和相對(duì)準(zhǔn)確率(Accuracy).預(yù)測(cè)壽命相對(duì)剩余壽命偏小和偏大,分別設(shè)置不同的影響因子,分別記做a1和a2,且a1>a2,這是因?yàn)楸绕餡eb 失效后采取抗衰操作,在失效之前執(zhí)行抗衰操作帶來(lái)較小的損失.本文中影響因子設(shè)為a1=150,a2=50.
由于軟件老化是一個(gè)錯(cuò)誤不斷累計(jì)的過(guò)程,Web軟件系統(tǒng)開(kāi)始出現(xiàn)老化后并不會(huì)立刻失效,需要耗費(fèi)很長(zhǎng)時(shí)間才會(huì)發(fā)現(xiàn)故障.受Matias 等人提出的系統(tǒng)化方法的啟發(fā)[14],本文仿照工業(yè)領(lǐng)域應(yīng)用的加速理論,在Web 軟件系統(tǒng)中采用加速內(nèi)存泄露的方法收集可以反映軟件老化情況的指標(biāo)數(shù)據(jù),基于收集到的時(shí)序數(shù)據(jù),構(gòu)建基于LSTM的Web 軟件系統(tǒng)實(shí)時(shí)剩余壽命預(yù)測(cè)模型.
2.1 數(shù)據(jù)收集
為收集因內(nèi)存泄露導(dǎo)致的軟件老化的指標(biāo)數(shù)據(jù),搭建了一個(gè)符合多層TPC-W 基準(zhǔn)測(cè)試規(guī)范的電子商務(wù)網(wǎng)站購(gòu)書系統(tǒng).該軟件系統(tǒng)由一個(gè)Web 服務(wù)器,一個(gè)數(shù)據(jù)庫(kù)服務(wù)器和一組模擬的客戶端組成.三者之間的關(guān)系如圖4所示,Web 服務(wù)器Tomcat 關(guān)于JVM的內(nèi)存配置參數(shù)如表1所示.
表1 Tomcat 關(guān)于JVM 堆內(nèi)存配置信息
設(shè)定服務(wù)端的內(nèi)存泄漏強(qiáng)度和客戶端并發(fā)數(shù),運(yùn)行該系統(tǒng)直到發(fā)生OOM 故障為一次實(shí)驗(yàn).當(dāng)發(fā)生OOM 故障時(shí),記當(dāng)前時(shí)刻為T,該時(shí)刻系統(tǒng)剩余壽命r=0.實(shí)驗(yàn)過(guò)程中每1 s 收集一次JVM的內(nèi)存使用量,采集到的樣本個(gè)數(shù)分別為10929,8202.如圖5所示,表示W(wǎng)eb 系統(tǒng)在不同內(nèi)存泄露強(qiáng)度(leakage)和客戶端并發(fā)數(shù)(concurrency)下的內(nèi)存變化趨勢(shì)圖.表2為數(shù)據(jù)對(duì)應(yīng)的實(shí)驗(yàn)參數(shù).
圖5 JVM內(nèi)存使用情況變化趨勢(shì)圖
2.2 實(shí)驗(yàn)環(huán)境
2.3 基于LSTM的剩余壽命預(yù)測(cè)模型
實(shí)驗(yàn)環(huán)境參數(shù)如表3.本文使用Keras 框架搭建并訓(xùn)練LSTM 網(wǎng)絡(luò)預(yù)測(cè)模型,所使用到的網(wǎng)絡(luò)主要由循環(huán)層(recurrent)中的LSTM 層和全連接層(dense)組成.用Data1 作為訓(xùn)練集,其余3 組作為測(cè)試集.分別比較不同優(yōu)化算法、隱含層單元數(shù)下的模型性能.最后在相同參數(shù)情況下,與RNN、GRU 模型結(jié)構(gòu)進(jìn)行對(duì)比.
表3 實(shí)驗(yàn)環(huán)境參數(shù)
(1)尋找合適的隱含層單元數(shù)量
用Data2 做測(cè)試集,用Adam 算法進(jìn)行優(yōu)化,MAE作為評(píng)價(jià)指標(biāo),嘗試不同隱含層單元數(shù)量尋找最佳的網(wǎng)絡(luò)結(jié)構(gòu).結(jié)果如表4所示,可以看出隱含層單元數(shù)量為120 時(shí),MAE的值最小.
表4 不同隱含層單元數(shù)量的MAE
(2)優(yōu)化算法
在隱含層單元數(shù)為80 情況下,用Data2 做測(cè)試集,采用不同的優(yōu)化算法訓(xùn)練模型,用MAE作為評(píng)價(jià)指標(biāo).對(duì)比不同算法在訓(xùn)練集和測(cè)試集上MAE的大小.結(jié)果如表5所示,可以看出Adam的算法的性能優(yōu)于其它算法.
表5 不同優(yōu)化算法的MAE 對(duì)比
(3)與單層LSTM 網(wǎng)絡(luò)進(jìn)行對(duì)比
為了驗(yàn)證基于LSTM 網(wǎng)絡(luò)的Web 軟件系統(tǒng)剩余壽命預(yù)測(cè)模型的優(yōu)勢(shì),用Adam 優(yōu)化算法、隱含層單元數(shù)量為120的參數(shù)下,將雙層LSTM 網(wǎng)絡(luò)的結(jié)構(gòu)與單層的LSTM 網(wǎng)絡(luò)結(jié)構(gòu)做了對(duì)比.從圖6可以看出,雙層LSTM 網(wǎng)絡(luò)結(jié)構(gòu)的擬合效果更好,用MAE和SF作為評(píng)價(jià)指標(biāo),對(duì)比兩種網(wǎng)絡(luò)的性能.如表6所示,可以看出雙層的LSTM 網(wǎng)絡(luò)結(jié)構(gòu)相較于單層的LSTM 網(wǎng)絡(luò)結(jié)構(gòu)性能有所提升.
圖6 壽命預(yù)測(cè)結(jié)果對(duì)比圖
表6 網(wǎng)絡(luò)性能對(duì)比
2.4 結(jié)果分析
第2.3 節(jié)實(shí)驗(yàn)驗(yàn)證了基于神經(jīng)網(wǎng)絡(luò)RNN 以及LSTM的Web 軟件系統(tǒng)剩余壽命預(yù)測(cè)模型的適用性.而從表6可看出,改進(jìn)后的基于LSTM 壽命預(yù)測(cè)模型對(duì)于Web軟件系統(tǒng)抗衰決策具有良好指導(dǎo)意義.為了進(jìn)一步驗(yàn)證改進(jìn)后的基于LSTM 壽命預(yù)測(cè)模型的預(yù)測(cè)能力,表7列出了各網(wǎng)絡(luò)模型在不同指標(biāo)下的評(píng)價(jià)指標(biāo)對(duì)比,表中PT(Prediciton Time)表示單位樣本預(yù)測(cè)所需要的時(shí)間,單位為ms,從表中可以看出,PT值較小,滿足實(shí)時(shí)預(yù)測(cè)要求.從表中可以看出,改進(jìn)后LSTM 壽命預(yù)測(cè)模型在3 組實(shí)驗(yàn)里的MAE、RMSE、SF都是最低,Accuracy最高,說(shuō)明該壽命預(yù)測(cè)相較與BP 網(wǎng)絡(luò)和常規(guī)循環(huán)神經(jīng)網(wǎng)絡(luò)而言,預(yù)測(cè)精度最高.
表7 各網(wǎng)絡(luò)預(yù)測(cè)精度對(duì)比
本文通過(guò)搭建引入內(nèi)存泄露的軟件老化實(shí)驗(yàn)平臺(tái)收集能夠反映軟件老化的指標(biāo)數(shù)據(jù),根據(jù)獲取到的性能指標(biāo)數(shù)據(jù)構(gòu)建并訓(xùn)練了基于LSTM的Web 軟件系統(tǒng)實(shí)時(shí)剩余壽命預(yù)測(cè)模型.通過(guò)實(shí)驗(yàn)表明該預(yù)測(cè)模型與Web 軟件系統(tǒng)的壽命趨勢(shì)一致,擬合度很高,能夠準(zhǔn)確地預(yù)測(cè)軟件的剩余壽命,為及時(shí)采取老化軟件的抗衰決策提供保證.與常規(guī)循環(huán)神經(jīng)網(wǎng)絡(luò)和BP 網(wǎng)絡(luò)相比,滿足實(shí)時(shí)性要求,預(yù)測(cè)精度高.說(shuō)明LSTM 網(wǎng)絡(luò)能夠完成Web 軟件系統(tǒng)實(shí)時(shí)剩余壽命預(yù)測(cè)的要求.