本届挑战赛冠军方案:基于LLM的多场景智能运维

本文介绍本届挑战赛冠军得主SRE-Copilot团队的参赛方案:基于LLM的多场景智能运维。

基础架构-SRE,负责字节跳动基础架构部门所有组件的SRE工作,沿着成本、稳定性、效率、服务四条主线,致力于打造高扩展、高可用的生产系统。基础架构-SRE-数据化团队,负责SRE的数据化运营及智能化探索,数据化产品包括基础架构离线数仓与数据门户、资源交付数据化运营系统;智能化方向涵盖异常检测、智能变更、故障诊断、智能限流、运筹优化与大语言模型应用。协同和赋能SRE从DataOPS向AIOps和ChatOPS转变,是我们一直努力的方向。团队成员:王宁,李美珍,何甲,丁文俊。

赛题分析

本次赛题为开放性赛题,探讨的是大语言模型在AIOps领域的应用,基于建行稳定性系统模拟建行生活类APP的真实环境,希望解决企业运维团队面对规模庞大、结构复杂、动态变化的运维数据需要解决的一系列挑战(系统架构复杂,数据量庞大,数据种类多等)。

方案介绍

整体框架

为此我们提出了SRE-Copilot:一套基于大语言模型的多场景智能运维框架,这套框架支持多个智能体Agent的协作与动态编排调度,有计划,记忆,反思与推理等能力,为SRE同学提供智能化服务。我们参考了GPT的思想,也就是通过集成学习的方式,用多个专业的子Agent组合成强大的混合专家(MoE,Mixture of Experts)系统。

在这里插入图片描述

首先我们针对本次比赛提供的多种模态的数据,构建了多个底层的专家Agent,包括:

  • 日志类LogAgent:负责对日志类型数据进行异常检测,对日志数据进行检索,根据集群筛选日志
  • 调用链类型TraceAgent:负责对调用链数据进行异常检测,进行简单的诊断。
  • 交易类型TradeAgent:对交易量等黄金指标进行异常检测
  • 主机类型MonitorAgent:对主机类型数据,包括cpu,负载,网络等进行异常检测
  • 拓扑类型CMDBAgent:对CMDB信息进行关联,提取&查询CMDB信息 其他:未来对其他类型数据可自由拓展

然后我们在上层定义了多个功能类Agent,包括故障诊断,知识库问答,工作流生成,故障报告生成,代码编写等

在整体架构上我们通过大语言模型把全部功能组合起来,实现意图识别,参数提取,任务调度等功能。

主要运维能力:异常检测

在该场景下,我们通过ReAct框架和CoT思维链的方式来实现了multi-agent的编排与调度。为了更方便表示我们的调度全过程,我们用下图来说明。

在这里插入图片描述

ReAct框架简介

ReAct的思想参考自论文ReAct: Synergizing Reasoning and Acting in Language Models,它是来自谷歌研究院和普林斯顿大学的一组研究人员在探索了在语言模型中结合推理和行为的潜力后发布的结果。虽然大型语言模型(LLM)推理(思维链提示)和行动(行动计划生成)的能力已经作为单独的主题进行了研究,但这是第一次将这两种能力组合到一个系统中。所以我觉得这是一篇重要的论文,因为ReAct框架允许虚拟代理使用诸如连接到web和SQL数据库之类的工具,所以可以提供几乎无限的扩展。

推理和行动的力量

人类智能的特点是将以任务为导向的行动和关于下一步行动的推理无缝结合。这种能力使我们能够快速学习新任务并做出可靠的决定,而且可以适应不可预见的情况。ReAct的目标就是在语言模型中复制这种协同作用,使它们能够以交错的方式生成推理步骤和特定于任务的操作。

ReAct如何工作的

ReAct提示大型语言模型为给定任务生成口头推理历史步骤和操作。这些提示由少量的上下文示例组成,这些示例指导模型的思考和操作生成。下面的图中给出了一个上下文示例。这些例子引导代理经历一个循环过程:产生一个想法,采取一个行动,然后观察行动的结果。通过结合推理跟踪和操作,ReAct允许模型执行动态推理,这样可以生成高级计划,还可以与外部环境交互以收集额外的信息。

具体例子

如图中所示,我们会构造如下的prompt

在这里插入图片描述
此时模型会将问题抛给TradeAgent

在这里插入图片描述
通过这种模式,将排障流程进行下去,每个Agent各司其职,我们也对异常检测插件进行了改造,不同于传统的异常检测算法,只返回单独的True/False信息,我们让插件返回故障时刻的描述,更加利于大语言模型的理解,例如:“CPU指标出现突增,网络出入流量突增”,当发现没有额外信息后,就会停止检测,进行根因定位。

主要运维能力:根因定位

在这里插入图片描述
RAG框架

要完成更复杂和知识密集型的任务,可以基于语言模型构建一个系统,访问外部知识源来做到。这样的实现与事实更加一性,生成的答案更可靠,还有助于缓解“幻觉”问题。Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)(opens in a new tab)的方法来完成这类知识密集型的任务。
检索增强生成 (RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型 (LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。

通过从更多数据源添加背景信息,以及通过训练来补充 LLM 的原始知识库,检索增强生成能够提高搜索体验的相关性。这能够改善大型语言模型的输出,但又无需重新训练模型。额外信息源的范围很广,从训练 LLM 时并未用到的互联网上的新信息,到专有商业背景信息,或者属于企业的机密内部文档,都会包含在内。

知识库构建

我们会提前定义一些专家的诊断经验和历史故障库。并且将信息转化为高维度空间中的向量。这些知识向量会被存储在向量数据库中。

通常一个专家经验可以由运维工程师或者业务专家来定义,比如:流量突增,内存打满,服务不可用。对应的可能是大量访问带来的问题,此时应该扩容或重启。

历史故障则是经过运维人员确认的一个故障工单,比如:12月1日12点,用户反馈交易不可用。12点05排查到xx集群主机流量突增,内存突增。经过重启后解决。

向量检索

在根因检测阶段,我们会得到上一步异常检测生成的故障摘要。检索模型会从知识库、数据库或外部来源(或者同时从多个来源)抓取相关信息。检索到的这一信息可以作为模型所需要参考来源。

向量模型会基于与输入查询的相关性,对检索到的信息进行排序。分数最高的文档或段落会被选中,以进行进一步的处理。

生成

接下来,生成模型(例如 LLM)会使用检索到的信息来进行根因推断。整体而言,这些回复更加准确,也更符合语境,因为这些回复使用的是检索模型所提供的补充信息。在私域知识方面,这一功能尤其重要。

反思与推理

由于本次比赛使用的是6b的小模型,推理时候的稳定性较差,我们此时引入了“反思”的机制,让模型对自己回答过的根因进行再次判断,进一步提高了根因定位的准确度。

另外,我们惊喜地发现,即使是小模型,在没有专家经验和历史故障的输入时,仍然能对一些简单问题进行根因推断,例如:磁盘写满故障,java虚拟机GC问题等等。

具体例子

如图中所示,我们会构造如下的prompt

在这里插入图片描述
此时模型会给出推断,并且匹配到对应的预案进行止损.

辅助运维能力:多场景集成

在这里插入图片描述

在辅助运维能力这部分,我们基于大语言模型的使用tools的能力,把散落的各个运维场景进行统一集成。对用户进行意图识别,自动编排调用不同的工具去解决用户的问题。

总结与展望

我们觉得将大语言模型引入到AIOps领域,可能会解决一些AIOps领域的痛点问题,比如:

在这里插入图片描述

  1. 当前各个公司的系统架构愈发复杂,各种组件依赖越来越多,很难有一个专家,甚至一个团队精通全部架构/组件的技术细节。当发现问题时候,通常是快速拉起多个组件的同学进行协同定位。而LLM可以学习近乎无限的知识,也可以通过设计多个专家Agent的方式进行编排调度无限拓展。
  2. 传统AIOps算法大多依赖统计方法,异常检测&根因诊断大部分算法都依赖于数据的标注。专家的经验很难编码到模型里,而LLM基于检索增强的方式,极大地降低数据标注成本和重新训练的成本。
  3. 在接入维护方面,传统AIOps当遇到新客户/私域知识/业务经验/数据变动等情况时,通常只能重新训练,而通过多Agent多方式,客户甚至可以将自己的逻辑经验轻松接入。
  4. 对于未知的故障,由于没有训练过,传统AIOps算法无法推理,但是LLM通过通用知识的学习,可以进行一些简单的推断。
  5. 最后就是在交互方面,LLM也极大地降低了交互成本,让用户更加易用。

未来展望

在这里插入图片描述

我们在这次比赛中,将大语言模型LLM与智能运维AIOps结合,在可能的场景做了一些尝试性的探索,很感谢评委老师们的肯定与认可。在未来,我们希望可以将这套框架在生产环境中落地并且迸发业务价值。同时,也期待业界涌现出更智能的通用模型,更强大的专业模型,更丰富的使用场景。

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

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

相关文章

IntelliJ IDEA 使用 spring Initializr 快速搭建 spring boot 项目遇到的坑

maven使用的是3.5.3 一、创建SpringBoot 二、项目创建成功,启动右键,没有run方法 三、在pom.xml上右键,将其添加为maven项目,然后发现Test模块报错 四、查看pom.xml文件,发现2.3.5Release版本变红,怀疑是版…

基于springboot实现的牙科诊所系统

一、系统架构 前端:html | layui | js | css 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、 代码及数据库 三、功能介绍 01. web端-首页 02. web端-医生介绍 03. web端-新闻资讯 04. web端-关于我们 05. web…

Find My运动相机|苹果Find My技术与相机结合,智能防丢,全球定位

运动相机设计用于在各种运动和极限环境中使用,如徒步、登山、攀岩、骑行、滑翔、滑雪、游泳和潜水等,它们通常具有防抖防震、深度防水和高清画质的特点,能够适应颠簸剧烈的环境,甚至可以承受一定程度的摔落,一些运动相…

云原生精品资料合集(附下载)

云计算是产业数字化转型的关键基础设施,以基础设施资源为中心的云搬迁时代接近尾声,以应用价值为中心的云原生时代已经到,所以IT人员学习云原生正当时!最近跟各位大神征集了云原生的教程,行业报告和最佳实践,总有一款适…

Go语言学习-下载

下载网址 https://go.dev/dl/ 选择合适的版本,下载 解压包,按引导下载 完成后打开终端 输入指令 go version看到下载好的版本,就是完成下载了

Unity 常用操作

2D素材网站 https://craftpix.net/ https://itch.io/game-assets/tag-2d/tag-backgrounds 3D素材资源网址 https://www.mixamo.com/#/ 场景常用操作: 快捷键:QWER Q:Q键或鼠标中键,可以拉动场景。 W:选中物体后&…

全局路由守卫报重定向错误

一、报错内容 但是这种情况下,会报路由重定向的错误,如下: Uncaught (in promise) Error: Redirected when going from “/home?_presNosearchoutNo” to “/presSearch” via a navigation guard. 二、报错原因 要给这个项目的所有路由…

前后端分离Vue+nodejs酒店公寓客房预订管理系统udr7l-java-php-django-springboot

本系统的设计与实现共包含13个表:分别是关于我们信息表,配置文件信息表,公寓信息评论表信息表,公寓入住信息表,公寓退房信息表,公寓信息信息表,公寓预订信息表,系统公告信息表,收藏表…

使用Java和PostGis的全国A级风景区数据入库实战

目录 前言 一、数据介绍 1、空间数据 2、属性表说明 3、QGIS数据预览 二、PostGIS空间数据库设计 1、空间表结构 三、Java空间入库 1、实体定义 2、数据操作Mapper 3、业务层实现 4、入库 5、数据入库验证 总结 前言 星垂平野阔,月涌大江流”“晴川历历…

nginx------------缓存功能 (六)

一、http 协议反向代理 (一)反向代理示例:缓存功能 缓存功能可以加速访问,如果没有缓存关闭后端服务器后,图片将无法访问,缓存功能默认关闭,需要开启。 ​ proxy_cache zone_name | off; 默认off #指明调…

【推荐】一个国内免费体验的AI论文写作网站-「智元兔 AI」

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

这一次,Python 真的有望告别 GIL 锁了?

Python 中有一把著名的锁——全局解释器锁(Global Interpreter Lock,简写 GIL),它的作用是防止多个本地线程同时执行 Python 字节码,这会导致 Python 无法实现真正的多线程执行。(注:本文中 Pyt…