我在2017年的时候参与当时所在公司的技术论坛,提到监控日志在人工智能的加持下,可实现更及时的告警,甚至是提前预警。然而,当时对这一领域只是一种设想,真正怎么去做和落地,完全没有思路。7年过去了,即使到了今天,这一话题仍然是研发领域的重磅话题,可仍然没有公开的技术解决方案。前两天在研究模型微调时,突然来了灵感,或许这是一种思路,能够实现多年来的期许。
先说结论:用多模态的训练思路,将日志作为时间序列,对齐到文本。
最早利用人工智能来处理监控的方式,也是目前监控领域的主要模式,主要是利用大数据进行规则匹配,再辅以对应模型的分析来达到预警效果。但是这种方案始终存在着缺陷,不仅精准度不够,时效性也不足。
在LLM成为主流之后,我很简单的认为,既然日志是文本,那么把所有日志都给大模型,再辅助一些文字描述,让大模型主动意识到日志之间的规律即可。然而,这种方案效果很差,因为大模型对日志的理解仍然停留在文本层面,无法真正理解日志间的联系,想要达到我们预警的目标就差的更远。
前两天突然来了灵感,多模态既然可以理解图片,甚至视频,可以理解时间序列,那么作为天然的时间序列的监控日志,为什么一定要把它当作文本呢?让它返璞归真,把监控日志作为源域,把文本作为目标域,把日志序列对齐映射到自然语言文本,实现和多模态一样原理的训练过程。
就像我们训练统计图到文本描述一样,首先对源域材料token化,这里主要依靠时间区间划分来作为token,然后在实现对齐文本,用文本去描述区间本身的特征,以及区间之间的变化特征。举个浅显易懂的例子,假如我们有如下一张图:
我们需要训练模型让其对齐到能够完全自然语言表达的文本。比方说
2002年10月我国部分城市降水分布不均,其中北京23mm,南京23mm……东部城市比西部城市降水量明显增多……
我记得我们在中学时期语文课,有专门的一次如何描述此类图表分析其中内容的课程。本质上,我觉得就是像那堂课一样,通过自然语言来描述图表。其中,不仅要描述其显性的数值,还要描述其隐形的规律。比如年份数据中,不仅要描述xx年xx值,还要描述前后年份之间的升降关系和程度,例如“猛然增长xx%”这样的描述。
当我们通过这样的训练,获得一个适当的权重参数,完成交叉注意力机制,把时间序列的日志,映射成文本域中的描述,那么这样我们就可以让大模型理解,我传入的一段时间区间的监控日志,到底想要表达什么内容了,在此基础上再让大模型去判断这些日志是否命中某些需要预警的规则,就更加容易一些。
我们也可以通过workflow架构,来将理解日志序列和分析预警分开,这样我们可以用小模型做更专业的事,从而达到性能提升的效果。
当然,这也只是一种思路,我并没有实践。如果你对此感兴趣,不妨在下方评论区留下你的想法。