本文是根據華為技術專家陶仕敏先生在2023 CCF國際AIOps挑戰賽決賽暨“大模型時代的AIOps”研討會閃電論文分享環節上的演講整理成文。
陶仕敏 華為技術專家
簡介:現任華為2012文本機器翻譯實驗,技術研究及創新負責人,技術專家。曾任百度運維平台及智能運維技術經理。主要研究方向:機器翻譯、AIOps等。
論文:
BigLog:面向統一日誌表示的無監督大規模預訓練方法
BigLog: Unsupervised Large-scale Pre-training for a Unified Log Representation(IWQoS 2023)
作者:陶仕敏、劉逸倫、孟偉彬、任祚民、楊浩等
論文鏈接:https://ieeexplore.ieee.org/abstract/document/10188759
代碼:https://github.com/LogAIBox/BigLog
LogPrompt:面向零樣本和可解釋性日誌分析的提示工程
LogPrompt: Prompt Engineering Towards Zero-Shot and Interpretable Log Analysis(ICSE 2024 Poster & ICPC 2024)
作者:劉逸倫、陶仕敏、孟偉彬、姚飛宇、趙曉峯、楊浩等
論文鏈接:https://arxiv.org/abs/2308.07610
代碼:https://github.com/lunyiliu/LogPrompt
大家好,非常感謝組委會的邀請。我跟AIOps挑戰賽結緣已久,在2018年的時候我當時所在的團隊贊助了第一屆挑戰賽。很榮幸今年再次站在挑戰賽的舞台上跟大家交流探討。我們團隊主要研究的方向是機器翻譯,機器翻譯是典型的語言模型,在這個領域我們開展了日誌相關的研究工作,今天跟大家分享的兩篇論文也是和日誌相關的。我分享的內容大致分為四個章節。
第一部分:軟件日誌運維觀點
從日誌的角度看,智能運維可以簡單的概述為基於數據算法以及場景驅動的一個軟件的運維工作。
運維工作中最核心的就是數據,數據裏面最核心的部分包含有日誌、指標數據、告警數據等,我們認為從某種程度上而言日誌可以被看作是一個更全面的數據,它代表一種機器語言,其它的指標數據可能是從日誌裏面獲取的並經過後期加工處理,所以可能會有一些信息丟失。
大語言模型為什麼可以應用到ICT運維領域?
首先日誌是一種類自然語言的文本,可以通過大語言模型加強對日誌文本的理解。其次通過預訓練或者指令學習,可以適應多任務場景,從而可能建立處理框架。
現在大語言模型非常火熱,之所以會出現這樣一個能夠理解自然語言世界的模型,其本質上是通過自然語言對整個物理世界的一種映射,建立的是一種數字世界,所以它是能夠理解真實的物理世界,包括我們的真實運營環境。
上圖是我們的研究團隊,以及和清華裴丹老師合作的一些日誌相關的內容做了一個總結。從第一代到第三代是任務數據驅動型,到第五代大模型出現之後轉變為指令驅動的方式,就是構建自動自適應的智能運維體的方式。
第二部分:AIOps痛點與挑戰
痛點一:傳統運維繫統中定製化嚴重、各自為戰,缺乏統一框架。
痛點二:傳統日誌分析方法中缺少對日誌語義特徵的深度挖掘以及對語義的理解。
痛點三:傳統智能運維算法依賴於任務數據,專家標註耗時耗力。前面也有專家介紹過標註數據其實是比較少的,那麼我們該如何解決依賴人力標註的問題?
痛點四: 傳統運維繫統可解釋性差、可交互性弱。
第三部分:大模型時代的AIOps應用探索
為了解決上述痛點問題,我們團隊做了深入的研究工作,有兩個解決方案,第一個就是Biglog, 基於大規模日誌預訓練理解日誌機器語言、構建日誌多任務統一框架,解決傳統運維繫統沒有統一框架的問題和傳統日誌分析對於日誌語義理解特徵的一些痛點問題。我們是基於LogHub開源數據再加上自己的數據做的訓練工作。
另外一個就是LogPrompt,基於日誌適用的Prompt策略驅動強語言模型構建零樣本日誌分析框架,通過領域prompt策略驅動語言模型,構建零樣本的日誌分析框架,解決圖片上痛點3和痛點4的問題。
在Biglog這塊我們引入了來自16個域、約80G的日誌數據作訓練集,基於BERT的架構做初始化,訓練一個能理解日誌的語言模型,這樣不僅引入了一個統一的日誌分析框架,並且可以對輸入日誌做通用表徵。
這裏面有一個核心點,就是對裏面的日誌做了預處理,把一些非關鍵性因素替換成可以用語義能表達的數據。比如,把具體的IP地址替換成特殊符號[IP],把一些具體的文件路徑替換成[FILE],把一些代碼相關的符號替換成[CODE]等。我們還利用到術語,把我們自己已有的術語資料放在預訓練模型中一起去訓練。
上圖中展示就是LogHub開源的數據和和華為自己內部的數據,然後我們基於BERT架構做了一個純日誌的預訓練方式。
圖片中展示的是我們的效果,日誌解析的效果是非常理想的,因為我們的模型本身在16個域的所有數據上都做了一些訓練,從根源上來説可能學習到了各個系統的一些日誌模板的規範,包括日誌的打印方式。
圖片中展示的是在異常檢測的任務上的效果。Offline的結果顯示模型和算法的效果都是挺不錯的,基本上都接近1。Online訓練時訓練數據是在不間斷減少的,並且測試數據越來越多且包含一些未知的日誌。當訓練數據從80%減少到0.1%的時候,Biglog效果保持的非常好,幾乎沒有變化。
在故障預測方面,Biglog和Unilog的對比結果顯示效果還是挺不錯的。這可能代表它在長距日誌依賴上能有效識別故障發生。
通過實驗我們發現在領域遷移性方面,Biglog比LogTransfer表現的要好。另外我們做異常檢測的時候,發現在Few-shot或者Zero-shot這塊,模型也有很好的泛化能力。總體來説,當給它大概20個左右的samples時候,就已經可以達到非常不錯的效果了。
下面我們介紹LogPrompt。
我們完成BigLog之後開始推進LogPrompt的研究工作,也是因為我們團隊是做與機器翻譯領域的工作,對大語言模型比較敏感。當大語言模型出現之後,我們馬上就想到是不是能夠用來做日誌相關的一些工作,是否能夠有一個比較好的方式去嘗試去解決可解釋性問題以及它的標註問題。
我們嘗試了Prompt+LLM的機制,只要採用簡單的一些 cot的 prompt以及上下文的信息,就能夠把日誌的解釋性以及它的交互性得到比較好的應用。
當然這依賴於一個基礎模型,比如像華為的盤古大模型,即學習了人類語言的知識,也學習了機器相關的日誌的信息,包括運維相關的信息。我們在這個能力之上,用一個高智能prompt去激發模型本身的能力。所以我們看到即使是零樣本的時候,在異常檢測還有相關的任務上面,效果也是表現的很好。
我們把LogPrompt放在華為乾坤雲系統上,做一些實際的效果和應用。把我們的Prompt引擎放在乾坤雲的 UI助手上面,相當疊加了外掛的知識庫,也就是會有一個上下文增強的一個知識,然後基於這樣知識,可以做到一些類似於LLM加Agent的效果,把一些API調用,能夠做到比較好的精準反饋。
第四部分:未來暢想
前面的各位專家已經分析了大語言模型可能帶來的效果,從期望角度來説未來運維工作有可能是一個純自然語言的交互,本身自然語言就是一個比較好的交互方式;也可能是被動式運維,當出現問題之後需要通過語言查詢獲取反饋結果;或者是智能化的Agent級的自運維,比如網絡自動駕駛等。當然可能會面臨一個問題:運維繫統或者 Agent本身可能會違揹人的意圖,造成安全隱患。假設它能控制Agent的話,我們怎麼做到安全可控。
我的分享到此結束,謝謝大家。
觀看完整演講視頻,請關注CCF OpenAIOps社區視頻號