胡小寧
(中國(guó)鐵路信息科技集團(tuán)有限公司,北京 100844)
中國(guó)國(guó)家鐵路集團(tuán)有限公司(簡(jiǎn)稱:國(guó)鐵集團(tuán))在2018年建成鐵路主數(shù)據(jù)中心并投入使用。該中心支撐的應(yīng)用超過(guò)350項(xiàng),采用新一代云架構(gòu)體系,容納服務(wù)器設(shè)備數(shù)量達(dá)數(shù)萬(wàn)臺(tái)。因此,對(duì)鐵路主數(shù)據(jù)中心運(yùn)維管理工作提出了更高的要求。鐵路主數(shù)據(jù)中心運(yùn)行與維護(hù)(簡(jiǎn)稱:運(yùn)維)管理工作是該中心各項(xiàng)業(yè)務(wù)應(yīng)用平穩(wěn)可靠、安全高效的重要支撐[1]。傳統(tǒng)的應(yīng)用故障監(jiān)控方式只能在故障發(fā)生后,由運(yùn)維人員根據(jù)故障現(xiàn)象逐層溯源排查,難以在短時(shí)間內(nèi)精準(zhǔn)定位故障,導(dǎo)致故障修復(fù)時(shí)間較長(zhǎng)、影響范圍和程度不能及時(shí)有效控制[2]。在云架構(gòu)體系下,如果仍舊依靠傳統(tǒng)的運(yùn)維方式,將使運(yùn)維成本大幅增加,但運(yùn)維效果卻難達(dá)預(yù)期,如果能提前預(yù)測(cè)未來(lái)可能發(fā)生的故障,運(yùn)維人員就可在故障發(fā)生前進(jìn)行定點(diǎn)排查,提前采取應(yīng)對(duì)措施,避免故障發(fā)生后導(dǎo)致的損失,因此推動(dòng)鐵路主數(shù)據(jù)中心智能化運(yùn)維已成為必然趨勢(shì)[3],運(yùn)維結(jié)合人工智能和深度學(xué)習(xí)技術(shù),能有效提升云數(shù)據(jù)中心智能化水平和運(yùn)維效率[4]。
近年來(lái),不少學(xué)者針對(duì)數(shù)據(jù)中心故障預(yù)測(cè)技術(shù)進(jìn)行了相關(guān)研究,如采用決策樹(shù)算法和反向傳播(BP,Back Propagation)神經(jīng)網(wǎng)絡(luò)進(jìn)行故障預(yù)測(cè)[5];基于Adaboost算法的BP神經(jīng)網(wǎng)絡(luò)故障預(yù)測(cè)模型進(jìn)行故障預(yù)測(cè)[6];基于加權(quán)中值的故障檢測(cè)方法[7]。這些算法在一定程度上提高了模型預(yù)測(cè)的精確率,但從試驗(yàn)效果上看,還存在計(jì)算算力需求偏大、參數(shù)調(diào)整復(fù)雜、預(yù)測(cè)結(jié)果精確率難以滿足實(shí)用性要求等問(wèn)題。因此,有必要針對(duì)鐵路主數(shù)據(jù)中心應(yīng)用場(chǎng)景開(kāi)展相關(guān)研究。
當(dāng)前,鐵路主數(shù)據(jù)中心對(duì)故障監(jiān)控采取閾值檢測(cè)報(bào)警機(jī)制,按CPU、內(nèi)存、磁盤(pán)使用率等指標(biāo)值是否超過(guò)預(yù)設(shè)的閾值進(jìn)行預(yù)警,采取后報(bào)警機(jī)制。而該中心中應(yīng)用種類繁多,固定閾值告警方式不能適用于全部應(yīng)用。本文通過(guò)對(duì)應(yīng)用的CPU、內(nèi)存和磁盤(pán)監(jiān)控?cái)?shù)據(jù)進(jìn)行研究,發(fā)現(xiàn)部分應(yīng)用故障的出現(xiàn)并非突然發(fā)生,而是在狀態(tài)惡化持續(xù)一段時(shí)間后才發(fā)生,此外,部分應(yīng)用的同類故障多次出現(xiàn)時(shí),其各類監(jiān)控?cái)?shù)據(jù)表現(xiàn)出一定的特征性和相關(guān)性。因此,本文提出一種改進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)模型,通過(guò)特征工程和單層感知器(SLP,Single layer Perceptron)對(duì)應(yīng)用故障進(jìn)行預(yù)測(cè),在報(bào)警閾值到達(dá)前發(fā)出預(yù)警信息,提前處理可能要發(fā)生的故障,避免因應(yīng)用故障導(dǎo)致的損失,為運(yùn)維人員提供更充裕的處理時(shí)間。
特征工程是根據(jù)要解決的業(yè)務(wù)問(wèn)題,從原始數(shù)據(jù)中提取更多信息的過(guò)程,其目的是最大限度地從原始數(shù)據(jù)中提取特征,以供算法和模型使用。在機(jī)器學(xué)習(xí)的流程中,特征是數(shù)據(jù)和模型間的關(guān)鍵紐帶,選取合適的特征可減輕模型構(gòu)建難度,輸出更高質(zhì)量的模型[8-9],通常,特征工程包括特征構(gòu)建、特征提取、特征選擇3部分。
神經(jīng)網(wǎng)絡(luò)具有良好的非線性擬合能力及較強(qiáng)的學(xué)習(xí)能力,為復(fù)雜應(yīng)用場(chǎng)景提供了有效的理論基礎(chǔ)。基于神經(jīng)網(wǎng)絡(luò),既可通過(guò)設(shè)備故障特征診斷是否將會(huì)發(fā)生故障,也可通過(guò)學(xué)習(xí)來(lái)完善故障診斷知識(shí)庫(kù)。目前,神經(jīng)網(wǎng)絡(luò)在設(shè)備故障領(lǐng)域的應(yīng)用研究已成為熱點(diǎn)[10-12]。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN ,Recurrent Neural Network)作為深度學(xué)習(xí)的經(jīng)典算法之一,可提取前后元素間的關(guān)聯(lián)信息,多用來(lái)處理時(shí)序數(shù)據(jù),被業(yè)界稱為時(shí)序利器。在自然語(yǔ)言處理領(lǐng)域,RNN通過(guò)前后項(xiàng)間的時(shí)序信息理解文本含義,可實(shí)現(xiàn)機(jī)器翻譯、閱讀理解等[13]。在語(yǔ)音信號(hào)處理領(lǐng)域,也可通過(guò)RNN實(shí)現(xiàn)語(yǔ)音處理和語(yǔ)音識(shí)別
大規(guī)模云數(shù)據(jù)中心的監(jiān)控?cái)?shù)據(jù)按時(shí)間序列記錄,這些數(shù)據(jù)在時(shí)間順序上的變化能被循環(huán)神經(jīng)網(wǎng)絡(luò)捕捉并學(xué)習(xí)數(shù)據(jù)隨時(shí)間變化的復(fù)雜非線性關(guān)系,從而實(shí)現(xiàn)故障預(yù)測(cè)[14]。
在RNN模型的實(shí)際應(yīng)用中,研究者發(fā)現(xiàn),此類模型存在難以處理信息長(zhǎng)期依賴(Long-Term Dependency)的缺陷,而基于門(mén)控循環(huán)單元(GRU ,Gated Recurrent Unit)和長(zhǎng)短期記憶(LSTM ,Long Short Term Memory)的RNN模型可彌補(bǔ)此缺陷。GRU和LSTM原理類似,但GRU采用更少的參數(shù),更快的模型訓(xùn)練速度,即可達(dá)到相近的訓(xùn)練效果[15]。基于GRU的RNN(簡(jiǎn)稱:GRU網(wǎng)絡(luò))采用門(mén)控機(jī)制,其神經(jīng)元基本結(jié)構(gòu)[16]如圖1所示。

圖1 GRU基本結(jié)構(gòu)
從圖1可看出,GRU由兩個(gè)門(mén)構(gòu)成,分別為重置門(mén)和更新門(mén)。GRU網(wǎng)絡(luò)的數(shù)學(xué)公式如下:


其中,zt表示t時(shí)刻的更新門(mén);rt表示t時(shí)刻的重置門(mén);xt表示t時(shí)刻輸入向量;h′t表示中間隱層狀態(tài);Wx、Wz、Wr表示t時(shí)刻輸入向量的權(quán)重矩陣,Vx、Vz、Vr表 示t?1時(shí)刻隱層狀態(tài)的權(quán)重矩陣,bx、bz、br分別表示中間隱層、更新門(mén)、重置門(mén)t時(shí)刻的偏置項(xiàng),這些權(quán)重矩陣和偏置項(xiàng)都是優(yōu)化學(xué)習(xí)的參數(shù),⊙ 表示點(diǎn)乘關(guān)系。
結(jié)合圖1和公式(1)~(4)可知,相比LSTM網(wǎng)絡(luò),GRU網(wǎng)絡(luò)減少一個(gè)輸出控制,每個(gè)單元的輸出是其時(shí)序傳遞的單元狀態(tài)。GRU流程為:(1)從上一個(gè)時(shí)序單元輸入一個(gè)ht-1,通過(guò)重置門(mén)后,與當(dāng)前的輸入xt結(jié)合;(2)經(jīng)過(guò)tanh函數(shù)激活處理,形成一個(gè)新的中間隱層狀態(tài)h′t;( 3)更新門(mén)控制h′t與ht-1以相應(yīng)的比例進(jìn)行重組,形成當(dāng)前時(shí)刻的輸出ht。
SLP是一種基于閾值傳遞函數(shù)的前饋網(wǎng)絡(luò),其神經(jīng)元局部記憶的內(nèi)容由一個(gè)權(quán)重向量組成,是人工神經(jīng)網(wǎng)絡(luò)中的基礎(chǔ)類型,能處理二分類問(wèn)題。單層感知器將輸入向量與權(quán)重向量相乘求和,然后利用激活函數(shù)獲得輸出結(jié)果。
故障預(yù)測(cè)的結(jié)果為故障或非故障,是一個(gè)二分類問(wèn)題,因Sigmoid函數(shù)可以將任一實(shí)數(shù)映射到(0,1)區(qū)間,可用來(lái)做二分類,故本文選擇Sigmoid函數(shù)作為SLP的激活函數(shù),并設(shè)定一個(gè)閾值,Sigmoid函數(shù)的輸出值大于此閾值則標(biāo)簽為1,表示故障,否則標(biāo)簽為0,表示非故障。
本文使用云數(shù)據(jù)中心仿真環(huán)境中的應(yīng)用進(jìn)程(簡(jiǎn)稱:進(jìn)程)監(jiān)控?cái)?shù)據(jù),對(duì)應(yīng)用進(jìn)行故障預(yù)測(cè)。該數(shù)據(jù)集的信息包括:
(1)在監(jiān)控?cái)?shù)據(jù)的時(shí)間跨度內(nèi),共有59類應(yīng)用,2 013個(gè)進(jìn)程,選取其中102個(gè)出現(xiàn)過(guò)故障的進(jìn)程監(jiān)控?cái)?shù)據(jù)作為試驗(yàn)數(shù)據(jù)。
(2)監(jiān)控?cái)?shù)據(jù)包含應(yīng)用所在服務(wù)器的CPU使用率、CPU等待I/O時(shí)間百分比、內(nèi)存使用率、磁盤(pán)讀寫(xiě)操作次數(shù)每秒(IOPS,Input/Output Operation Per Second)、進(jìn)程的響應(yīng)時(shí)間、網(wǎng)絡(luò)連接數(shù)、CPU使用率、內(nèi)存使用率,共8個(gè)特征。
(3)監(jiān)控?cái)?shù)據(jù)時(shí)間跨度為2020-07-01 00:00~2021-01-12 23:55,共28個(gè)星期,數(shù)據(jù)粒度為5 min。
通過(guò)對(duì)數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)每次應(yīng)用發(fā)生故障前,在一段時(shí)間內(nèi),監(jiān)控指標(biāo)具有一定上升或下降趨勢(shì)。本文對(duì)具備此類特征的進(jìn)程監(jiān)控?cái)?shù)據(jù)進(jìn)行建模和訓(xùn)練,構(gòu)建基于GRU循環(huán)神經(jīng)網(wǎng)絡(luò)的云數(shù)據(jù)中心應(yīng)用故障預(yù)測(cè)模型(簡(jiǎn)稱:模型),將單個(gè)進(jìn)程監(jiān)控?cái)?shù)據(jù)的前80%作為訓(xùn)練數(shù)據(jù),剩余20%作為測(cè)試數(shù)據(jù)。
通過(guò)特征工程對(duì)原始監(jiān)控?cái)?shù)據(jù)進(jìn)行預(yù)處理,包括數(shù)據(jù)的冗余清洗、特征提取、缺失值處理、無(wú)量綱化等,其中,特征值篩選采取嵌入法中基于懲罰項(xiàng)的特征選擇和專家判斷相結(jié)合的方法,對(duì)數(shù)據(jù)的無(wú)量綱化處理采用Z-score標(biāo)準(zhǔn)化方法,以時(shí)間序列x1,x2, ···,xn為例,n為特征值總數(shù),Z-score標(biāo)準(zhǔn)化計(jì)算公式為:

則新序列的y1,y2,···,yn均值為0,標(biāo)準(zhǔn)差為1。
模型實(shí)現(xiàn)過(guò)程如圖2所示,其中,yt為判斷故障標(biāo)簽;a為設(shè)定的故障閾值;w0~wn代表權(quán)重矩陣;代表t時(shí)刻n個(gè)特征的隱層狀態(tài)(即網(wǎng)絡(luò)層的輸出);T代表訓(xùn)練數(shù)據(jù)時(shí)長(zhǎng);代表t時(shí)刻第n個(gè)特征的值。主要步驟如下。

圖2 預(yù)測(cè)模型實(shí)現(xiàn)過(guò)程
(1)對(duì)監(jiān)控?cái)?shù)據(jù)中存在錯(cuò)誤或缺失的數(shù)據(jù)進(jìn)行特征工程處理,用此點(diǎn)相鄰的部分點(diǎn)均值進(jìn)行替換或補(bǔ)充,對(duì)磁盤(pán)IOPS、進(jìn)程的響應(yīng)時(shí)間、網(wǎng)絡(luò)連接數(shù)等進(jìn)行歸一化處理。
(2)GRU網(wǎng)絡(luò)輸入的單個(gè)進(jìn)程的8個(gè)特征數(shù)據(jù)為:CPU使用率(x1);內(nèi)存使用率(x2);CPU等待I/O時(shí)間百分比(x3);CPU使用率(x4);內(nèi)存使用率(x5);歸一化后的網(wǎng)絡(luò)連接數(shù)(x6);歸一化后的響應(yīng)時(shí)間(x7);歸一化后的磁盤(pán)IOPS(x8)。
(3)利用選取的數(shù)據(jù)進(jìn)行模型訓(xùn)練,根據(jù)模型測(cè)試的精確率進(jìn)行參數(shù)調(diào)整及激活函數(shù)選定,從而確定GRU模型。
(4)使用和(3)相同的訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),根據(jù)模型測(cè)試的精確率和覆蓋率確定SLP的參數(shù),訓(xùn)練出單個(gè)進(jìn)程的SLP模型。
(5)利用(3)中訓(xùn)練得到的模型,預(yù)測(cè)單個(gè)進(jìn)程未來(lái)一段時(shí)間的監(jiān)控?cái)?shù)據(jù),通過(guò)(4)的SLP模型,得出單個(gè)進(jìn)程發(fā)生故障的概率,并與此進(jìn)程設(shè)定的閾值進(jìn)行比較,判定進(jìn)程是否故障。
模型的訓(xùn)練調(diào)參階段,通過(guò)對(duì)不同迭代次數(shù)(Epoch)和不同批處理(Batch_size)大小設(shè)定值的多次測(cè)試,確定當(dāng)Epoch=20,Batch_size=2時(shí),模型效果較好。基于該參數(shù)設(shè)定,某進(jìn)程的CPU預(yù)測(cè)使用率和實(shí)際情況如圖3所示。該進(jìn)程CPU的預(yù)測(cè)使用率和真實(shí)使用率差值較小,趨勢(shì)基本吻合,表明本文采用的方法對(duì)故障預(yù)測(cè)具有較高的精確性。

圖3 某進(jìn)程CPU使用率預(yù)測(cè)情況
針對(duì)鐵路云數(shù)據(jù)中心應(yīng)用運(yùn)維管理中面臨的故障復(fù)雜性和隨機(jī)性問(wèn)題,提出一種基于GRU循環(huán)神經(jīng)網(wǎng)絡(luò)和SLP相結(jié)合的應(yīng)用故障預(yù)測(cè)方法。本方法可對(duì)服務(wù)器和應(yīng)用進(jìn)程的監(jiān)控?cái)?shù)據(jù)進(jìn)行特征工程處理,從原始數(shù)據(jù)中提取必要特征供算法模型使用,能較快獲得高精確率的預(yù)測(cè)數(shù)據(jù),提高判定進(jìn)程故障的精確率。通過(guò)試驗(yàn)數(shù)據(jù)和仿真分析結(jié)果,驗(yàn)證了本方法的實(shí)用性。