聊一聊自成長智能運維模型
大部分AIOPS廠家主要是面向算法來提供智能化的分析能力,無論是異常檢測、趨勢評估還是自動分類,都是基于對無法完全認知的數據的算法實現。其智能化的能力完全依賴于算法、數據、訓練與標注。
這種方式的智能化運維對于實際的日常AIOPS來說,可能都過于“重”了,每個項目都需要有比較高成本的實施過程,無法讓AIOPS的能力開箱即用,在缺乏算法專家的長期協助下,算法的能力也無法持續自成長和自動進化。而算法專家是十分稀缺和昂貴的資源,這使得采用此類方法的智能運維項目變成了有錢人的游戲。
造成這種局面的主要原因還是此類智能運維系統的基礎架構問題導致的,傳統的軟件是基于“目標”的軟件,其邏輯都是根據目標預先編制好的,為實現某個已知的特定目標而設定好具體的目標,設計出具體的實現路徑,完成軟件基礎能力框架的設定,最后開發出軟件系統。
在實際應用場景中,為了適應不同用戶的特定場景,頂多是修改配置、調整參數參數、按照目標去清理數據,從而可以實現一定的差異化化定制化。但是這種差異化與智能化之間還是存在巨大的差距的,這種差異化僅僅被限制在有限的范圍內,不能圖譜系統預先設定的能力極限。
智能化運維工具應該是能夠根據不同的運維對象、不同的運維場景、不同的運行負載、不同的故障場景,實現差異化的分析診斷,實現較為準確的故障定位。智能化診斷工具應該具有極強的抽象能力,能夠通過不斷的自我學習或者在一定的外部輔助下自己發展自己的能力,以應對不同運維環境的需求。也就是說,AIOPS分析工具應該具備自我感知、自我調整、自我學習、自我成長的能力。
神經網絡實際上也是一種對傳統程序的高度抽象,將軟件中的應用邏輯高度抽象為神經網絡。通過深度學習,可以實現異常診斷需求到神經網絡的自動化的翻譯。通過不同的數據經過訓練生成的神經網絡模型來實現對于不同輸入的智能化感知,從而完成分析。因此在理論上,只要有充足的歷史數據,進行充分的訓練,是能夠完成抽象的。看到這里我們還不要高興的太早了,因為充分的訓練需要極高的成本,無法低成本的獲得這種能力。
通過神經網絡的智能化分析算法可以解決AIOPS領域的一部分問題,但是無法解決所有的問題。更加復雜的運維環境需要更復雜的知識抽象后通過知識推理才能夠實現。這種知識抽象模型無法從混沌的數據中自動形成,必須依托于一個初始推動力才能夠形成。因此我們需要兩個關鍵因素來實現這種初始化的推動力的產生。
其中之一是知識組織形態的確定,我們需要一種具有很強知識抽象能力的技術手段來存儲被抽象出來的知識。從目前的實踐來看,圖數據庫是比較好的基礎載體,知識圖譜是知識抽象和描述的較好的實現方式。
第二個關鍵因素是已有的領域知識的導入,哪怕我們已經有了一個十分強大的知識抽象模型,在一個空白的知識庫里自動產生知識,或者說發展知識,在初期階段是十分困難的。因為缺少足夠的基礎知識,使得知識推理無法完成,同樣,自動學習和自生長也無從談起。如果能夠導入一定量的質量比較高的知識圖譜,以此為基礎去積累、自學習、自生長知識庫,其知識庫的生長過程會相對簡單。就像一個嬰兒一樣,最初的能力成長是相當緩慢的,隨著智力的發展,知識增長的速度會越來越快,知識庫的生長也是如此。
我們如果以上面的框架來構建一個智能化分析系統,其中藍色部分的代碼框架基本上是固定的,不太變化的穩定框架。里面包含了高度抽象的模型和算法。知識圖譜是動態生長的部分,知識圖譜的變化,將會改變藍色部分計算框架產生的結果, 最終決定了整個系統的能力。
指標數據集是動態的,個性化的輸入參數。知識圖譜中存儲的是通過高度抽象后的知識數據。這部分內容是今后要不斷擴展,甚至自動生長的。黃色部分是最終實現的智能化分析能力。核心框架代碼維持穩定的情況下,隨著指標數據的持續輸入,模型抽象模塊依靠知識圖譜不斷的對數據進行加工,不斷動態調整和優化在線分析引擎和離線分析引擎,同時根據已知的分析結果,自動調整知識圖譜,生成新的頂點和邊。
分析引擎通過標準化的框架,根據問題感知輸入的參數數據,通過知識推理衍生圖譜,裁剪圖譜,形成與當前場景相適應的子圖,再通過標準框架轉換為已知的指標與規則的集合。輸入到異常檢測模塊進行探測,發現可能存在的異常,然后通過標準的智能裁剪框架,根據問題收斂知識圖譜對問題進行歸類,通過迭代生成診斷結論。再根據診斷結論進行二次發散,找到可以定位問題的工具,通過自動化執行這些工具,進行故障路徑二次裁剪,最終獲得診斷結果。
知識成長的方法除了不斷由人工注入新知識外,還可以通過模型抽象器自動發現知識,自動生成知識點。該知識點被稱為智能知識點,加入到知識圖譜之后,可以根據標準接口自動與現有的知識網絡的其他知識點建立關聯。從而優化整個知識網絡。