KnowLog:基于知识增强的日志预训练语言模型|顶会ICSE 2024论文

在这里插入图片描述
徐波 东华大学副教授
东华大学计算机学院信息技术系副系主任,复旦大学知识工场实验室副主任,智能运维方向负责人。入选“上海市青年科技英才扬帆计划”。研究成果发表在IJCAI、ICDE、ICSE、ISSRE、ICWS、CIKM、COLING等国际会议上,曾获中国数据库学术会议(NDBC 2014)优秀论文奖。主持及参与国家重点研发计划、国家自然科学基金等科研项目10余项。

论文分享:
KnowLog: Knowledge Enhanced Pre-trained Language Model for Log Understanding(ICSE 2024)
KnowLog:基于知识增强的日志预训练语言模型


本文根据东华大学副教授徐波老师在2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会闪电论文分享环节上的演讲整理成文。


今天分享的主题是“懂运维语言的小模型”。从今天上午的汇报来看,小模型依然很重要。即使大家都在做多智能体的协同,但是他们的底座智能体还是在用小模型来做,这可能是考虑到成本和质量的问题。此次报告将从4个方面进行分享。

众所周知,日志在运维系统中占据非常大的比重,日志分析是一个非常重要的工作,每分钟都会有几十万上百万的日志产生,这个时候用大模型肯定是不行的。而以前的小模型,针对不同的任务,设计不同的框架去单独解决,缺乏一个统一的处理框架。

在这里插入图片描述

而在NLP领域,“预训练+微调”已经成为了自然语言处理的统一范式。那么能不能把这种自然语言的统一范式应用到日志里面,构建日志的预训练模型呢?

图片

我们把这种类似BERT的预训练语言模型放到日志里面去,发现其实它并不是很work,原因是什么?分析结论是,自然语言中的高频词和在日志中使用的高频词其实是不一样的。这里就会产生三个具体挑战:

在这里插入图片描述

第一,通用的预训练语言模型不理解日志中的特定术语,比如OSPF或者SYSLOG等等,这些领域的特定缩写经过Bert编码后会被变成unknown,这就会非常影响后续的处理。

第二,从整体来讲,通用的预训练语言模型不理解日志到底在说什么,就像给非专业人士看日志文档,事实上也是看不懂的。

第三,不同厂商描述同一个日志打的Log也是不一样的。

在这里插入图片描述
针对这三个挑战,我们受专家解决问题的思路启发提出了知识增强的方案,会去从领域手册里查询补全知识。

在这里插入图片描述

如果局部知识不懂,就看缩略词表,把局部知识补全。如果是全局知识不懂,就看全局知识描述的文档。基于以上,我们提出了知识增强的日志预训练模型的框架,该框架主要分为三部分:

图片

第一,如何把局部知识灌到大模型里,这里设计了缩略词预测任务,把缩略词遮住之后让大模型复原,如果它知道是缩略词,就认为模型已经理解缩略词。

第二,针对全局知识的增强,建立日志模板和日志描述的对应关系。

最后,为了支持不同厂商的日志?使用了对比学习的思路,通过构造各种的数据增强方式,去对同一个日志做不同表达,使其能够满足不同的表示方法。

在这里插入图片描述

基于这个方法,我们构造了很多的实验,从华为、思科、华三等一些厂家提取日志模板。注意这里做了一个改进,就是我们没有去理解日志,而是去理解日志模板,因为日志很多,但是模板并不多。我们这边拿了10万条的日志模板,然后构造了一些下游任务,从而得到了几个结论:

在这里插入图片描述

首先,通过知识增强的日志预训练模型确实显著优于通用预训练模型。

在这里插入图片描述

然后,在低资源场景下实验,这个实验很实用,因为企业内部的数据并不是太多,通过实验可以看出,把整个的训练集砍掉了一半,甚至只保留30%,模型下降的程度并不高,而通用模型的下降幅度就比较大。

在这里插入图片描述

另外,在跨厂商迁移方面,我们用华为的日志训练完应用到华三日志上面,或者用华三日志训练完去用到思科日志上面,发现都有非常好的效果。

在这里插入图片描述

同时,通过可视化展开可以看到,在没有做知识增强之前,原始日志和它的描述其实是红点和绿点区分得非常开,但通过了我们的知识增强对齐之后,把日志和它的描述对应的比较紧密了。

在这里插入图片描述

总结一下,我们事实上是提了一个基于领域知识增强的框架。目前这一版的缺陷就是必须先有文档,才能做日志理解。后续还有工作就是不需要有文档,直接用ChatGPT生成。通过实验我们发现用ChatGPT,只要精心设计提示词,规范好生成结果,它也是能达到跟日志文档一样甚至更好的效果。

以上就是我的分享内容,谢谢大家。

观看完整演讲视频,请关注“CCF OpenAIOps社区”视频号
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588317.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vulhub打靶记录——healthcare

文章目录 主机发现端口扫描FTP—21search ProPFTd EXPFTP 匿名用户登录 web服务—80目录扫描search openemr exp登录openEMR 后台 提权总结 主机发现 使用nmap扫描局域网内存活的主机,命令如下: netdiscover -i eth0 -r 192.168.151.0/24192.168.151.1…

分享:搭建企微知识库简单易学步骤

说起企微知识库,可能有些人还不太清楚,为什么现在很懂企业选择搭建企微知识库?其实,企微知识库就是一个装满了企业的各种知识、经验和资料的载体。目的是为了方便员工随时查找和学习、有助于知识的传承和共享、加强团队协作和沟通…

Java SpringBoot中优雅地判断一个对象是否为空

在Java中,可以使用以下方法优雅地判断一个对象是否为空: 使用Objects.isNull()方法判断对象是否为空: import java.util.Objects;if (Objects.isNull(obj)) {// obj为空的处理逻辑 }使用Optional类优雅地处理可能为空的对象: impo…

文心一言 VS 讯飞星火 VS chatgpt (227)-- 算法导论16.3 9题

九、证明:对于一个由随机生成的8位字符组成的文件,没有任何压缩方法可以望将其压缩、哪怕只是压缩一位。(提示:比较可能的文件数量和可能的编码文件数量。) 文心一言: 确实,对于一个由随机生成的8位字符组成的文件&a…

分布式锁 — Redisson 全面解析!

前言 分布式锁主要是解决集群,分布式下数据一致性的问题。在单机的环境下,应用是在同一进程下的,只需要保证单进程多线程环境中的线程安全性,通过 JAVA 提供的 volatile、ReentrantLock、synchronized 以及 concurrent 并发包下一…

某眼实时票房接口获取

某眼实时票房接口获取 前言解决方案1.找到veri.js2.找到signKey所在位置3.分析它所处的这个函数的内容4.index参数的获取5.signKey参数的获取运行结果关键代码另一种思路票房接口:https://piaofang.maoyan.com/dashboard-ajax https://piaofang.maoyan.com/dashboard 实时票房…

每日一题(leetcode169):多数元素-哈希、随机、分治

哈希&#xff1a; class Solution { public:int majorityElement(vector<int>& nums) {int lennums.size();unordered_map<int,int> map;for (int i0;i<len;i){if(map.find(nums[i])map.end()){map[nums[i]]1;}else{map[nums[i]];}}int seqlen/2;int ansnu…

物联网行业中,我们如何选择数据库?

在当今数字化潮流中&#xff0c;我们面对的不仅是海量数据&#xff0c;更是时间的涟漪。从生产线的传感器到金融市场的交易记录&#xff0c;时间序列数据成为了理解事物演变和趋势的关键。在面对这样庞大而动态的数据流时&#xff0c;我们需要深入了解一种强大的工具——时序数…

1.Git是用来干嘛的

本文章学习于【GeekHour】一小时Git教程&#xff0c;来自bilibili Git就是一个文件管理系统&#xff0c;这样说吧&#xff0c;当多个人同时在操作一个文件的同时&#xff0c;很容易造成紊乱&#xff0c;git就是保证文件不紊乱产生的 包括集中式管理系统和分布式管理系统 听懂…

Vue3使用组件的计算属性代替v-for和v-if

Vue.js3组件的方法-CSDN博客 使用Vue3组件的计算属性-CSDN博客 Vue3组件计算属性的get和set方法-CSDN博客 Vue3组件计算属性的缓存-CSDN博客 在业务逻辑处理中&#xff0c;一般会使用v-for指令渲染列表的内容&#xff0c;有时也会使用v-if指令的条件判断过滤列表中不满足条…

剑指Offer题目笔记24(集合的组合、排序)

面试题79&#xff1a; 问题&#xff1a; ​ 输入一个不含重复数字的数据集合&#xff0c;找出它的所有子集。 解决方案&#xff1a; ​ 使用回溯法。子集就是从一个集合中选出若干元素。如果集合中包含n个元素&#xff0c;那么生成子集可以分为n步&#xff0c;每一步从集合中…

托管式 Kubernetes 服务,加速现代化云基础设施升级

降本提效&#xff0c;是创新开发的永恒话题。过去10年中&#xff0c;开发者纷纷拥抱容器技术以提高部署效率&#xff0c;降低运维负担。随着像 Docker 这类容器引擎使用量的不断增长&#xff0c;作为 Docker 管理系统的 Kubernetes&#xff08;简称 K8s&#xff09;顺势而出&am…