本發(fā)明屬于云計算和深度學習領域,主要針對云計算環(huán)境中主機負載變化劇烈、噪聲大等特點,提出了一種新的基于長短時記憶網(wǎng)絡的主機負載預測的方法。
背景技術:
在云計算數(shù)據(jù)中心,負載的變化通常很激烈,為了能夠及時應對各種復雜情況,我們需要對數(shù)據(jù)中心中各種資源的情況進行預測。在云計算數(shù)據(jù)中心,CPU資源的使用情況反應了主機上應用程序的運行情況,因此在進行虛擬機調(diào)度時,CPU資源是首要考慮的資源。當某臺主機的負載超過閾值時,運行在該主機上的虛擬機的性能會受到嚴重影響,因此可以將此主機上的一些虛擬機遷移到其他空閑主機上,從而減輕主機的負載;當某些主機上的負載低于閾值時,可以將這些主機上的虛擬機合并到其他主機或關閉,從而降低云計算中心的能耗。
目前存在的一些負載預測方法主要針對網(wǎng)格(Grid)計算中主機的負載情況,但是在云計算環(huán)境中主機的類型各不相同,主機上運行的任務也各不相同,這就導致云環(huán)境中主機負載變化情況更加復雜,之前的一些方法并不能很好的對云環(huán)境中主機的負載情況進行預測。
為了解決現(xiàn)有技術中存在的問題,本文提出了一種基于長短時記憶網(wǎng)絡(Long Short-Term Memory)的方法對負載數(shù)據(jù)的前后關系進行建模,輸出即為最終的預測結果。
技術實現(xiàn)要素:
本發(fā)明的目的:針對現(xiàn)在云計算中心將各種類型的主機進行集中化的管理,統(tǒng)一提供給各種類型的用戶使用,導致在云計算環(huán)境下,各臺主機上運行的任務各不相同,其負載的變化情況更加復雜的情況,提出了一種能夠精確預測未來一段時間內(nèi)負載變化情況的方法,為下一步的虛擬機調(diào)度,資源綜合管理奠定了基礎。
針對現(xiàn)有技術中存在的問題,本發(fā)明提出了一種新的主機負載預測方法,能夠有效的對未來一段時間內(nèi)的主機負載進行預測,整個系統(tǒng)由以下兩個主要模塊組成:
模塊一、采集云計算主機負載一個月的歷史數(shù)據(jù),將很長的負載序列分成很多固定大小的、連續(xù)的歷史數(shù)據(jù)及預測數(shù)據(jù),選擇合適的模型來對數(shù)據(jù)進行建模。
模塊二、利用訓練集來使長短時記憶網(wǎng)絡學習對應的參數(shù),并通過交叉驗證集選擇泛化性最好的模型,輸出即為最終的預測結果。
對于模塊一,云計算當中主機的負載本質上是前后相關的一維時間序列,可以通過很多時間序列分析的方法來進行負載的預測。在本模塊中,我們通過將負載劃分固定大小的子序列以便網(wǎng)絡進行建模。網(wǎng)絡某時刻t的輸入是一組負載的歷史數(shù)據(jù)x=(dt-1,dt-2,…,dt-n),其中每個x表示t時刻之前長度為n的負載歷史序列數(shù)據(jù)。對應的輸出為其中o是長度為t時刻之后長度為m的未來負載的預測數(shù)據(jù)。假設真實的數(shù)據(jù)為y=(dt+1,dt+2,…,dt+m),我們想要解決的問題是尋找一個歷史值到未來值之間的映射f:
直觀上,越接近當前時刻t的歷史值,與預測值越相關。但是,與當前時刻距離較遠的歷史負載也有可能提供一些有用的信息,比如變化的趨勢等,來幫助我們進行負載的預測。所以我們想構建出一個模型,既能利用近距離的負載信息,也能利用遠距離的負載信息。
f(x;n)=f(g1(xt-1,xt-2,…,xt-k),g2(xt-(k+1),…,xt-n))
循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Networks)正是基于這個簡單的思想,和傳統(tǒng)前向傳播網(wǎng)絡不同的是,循環(huán)神經(jīng)網(wǎng)絡通過反饋的機制擁有一個中間狀態(tài)層,使得它很適宜來做時間序列建模。另外,為了對長期記憶進行建模,我們將循環(huán)神經(jīng)網(wǎng)絡的中間狀態(tài)層替換為長短時記憶單元,整個模型的架構如圖1所示。
模塊二利用長短時記憶網(wǎng)絡進行負載預測。
考慮到一旦某個信息已經(jīng)被使用過,忘記這個舊的狀態(tài)對于網(wǎng)絡來說可能會很有用。另外,相比于人工確定什么時候刪除舊的狀態(tài),我們希望網(wǎng)絡能自己決定什么時候刪除。在這種情況下,長短時記憶網(wǎng)絡無疑是一個很好的選擇。
長短時記憶網(wǎng)絡的架構如圖2所示,假設網(wǎng)絡某時刻t的輸入為歷史負載xt,輸出為ht(再經(jīng)過一個全連接層得到最終的預測ot)。為了使網(wǎng)絡能夠對負載序列的前后關系進行建模,我們定義一個中間單元st用于存儲記憶。同時,為了能使負載預測能獲取到長時間的信息,我們利用長短時記憶網(wǎng)絡的特性定義了三個門函數(shù)(輸入層,中間層,輸出層):
來控制信息的傳遞。其中,σ為sigmoid非線性激活函數(shù),W、U、b為網(wǎng)絡的權重和偏移。然后,我們在此基礎上得到每個時刻網(wǎng)絡的最終輸入,中間值,輸出:
it=σ(b+Uxt+Wht-1)
在計算輸出時,我們選擇ReLu非線性激活函數(shù)來加速神經(jīng)網(wǎng)絡的訓練。
則對于某一組訓練數(shù)據(jù)(x,y),我們將其對應的代價函數(shù)定義為其中N是預測的長度,oi是預測值,yi是真實值。
附圖說明
附圖說明用于提供對本發(fā)明技術方案的進一步理解,并構成說明書的一部分,與本發(fā)明的實施一起用于解釋本發(fā)明的技術方案,并不構成對本發(fā)明技術方案的限制。附圖說明如下:
圖1為整個模型的架構圖。
圖2為長短時記憶網(wǎng)絡的架構圖。
具體實施方式
以下將結合附圖來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用技術手段來解決問題,并達成技術效果的實現(xiàn)過程能充分理解并據(jù)以實施。在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的不同計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
下面具體說明算法的執(zhí)行過程
步驟1-1、數(shù)據(jù)采集。采集前n天主機負載的歷史數(shù)據(jù)。利用主機上的CPU檢測工具每隔5分鐘獲取CPU的負載數(shù)據(jù),將其按照一定比例分為Training Set(訓練數(shù)據(jù)集)、Validation Set(交叉驗證集)和Test Set(測試數(shù)據(jù)集),并把很長的負載序列分成很多固定大小的、連續(xù)的歷史數(shù)據(jù)及預測數(shù)據(jù)。
步驟1-2、網(wǎng)絡學習。利用訓練集來使長短時記憶網(wǎng)絡學習到對應的參數(shù),通過最小化代價函數(shù),得到的權重系數(shù)和偏置項的值,并通過交叉驗證集選擇泛化性最好的模型。
步驟1-3、進行負載預測。利用從長短時記憶網(wǎng)路學習得到網(wǎng)絡的參數(shù),輸入數(shù)據(jù)集,輸出即為主機負載。
本領域的技術人員應該明白,上述的本發(fā)明的系統(tǒng)結構和各個步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將他們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
雖然本發(fā)明所示出和描述的實施方式如上,但是所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術領域內(nèi)的技術人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式上以及細節(jié)上做任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。