字节跳动基础架构SRE-Copilot获得2023 CCF国际AIOps挑战赛冠军

近日,2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会在北京成功举办,活动吸引了来自互联网、运营商、科研院所、高校、软硬件厂商等领域多名专家学者参与,为智能运维的前沿学术研究、落地生产实践打开了新思路。决赛中,从初赛两百多支队伍中脱颖而出的十支入围队伍分别展示了各自的方案,并进行了现场答辩,评审专家从选题方向、创新性、实用性、完整度和实验复现结果等多角度进行了综合评定,最终,来自字节跳动基础架构-SRE 团队的 SRE-Copilot战队,以SRE-Copilot:基于 LLM 的多场景智能运维”,获得本届大赛冠军

83ed35f441d587eb747a2e7fb2280c57.jpeg

CCF国际AIOps挑战赛由中国计算机学会(CCF)、清华大学和南开大学联合发起,旨在借助社区力量,运用人工智能算法解决各类运维难题。自2017年底首次举办,迄今为止已经成功举办六届,吸引了大量AIOps从业者和关注者,赛事规模和影响力不断扩大,是智能运维领域极具影响力的专业赛事。本届CCF国际AIOps挑战赛共有来自265支队伍的677名选手报名参赛,决赛现场有超300人线下参会,同时有近5万人次观看线上直播。

CCF国际AIOps挑战赛自创办以来,赛题覆盖了不同的运维场景、运维数据、故障来源、应用类型。本届大赛赛题全新升级,首次采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,由参赛选手自主确定需要解决的运维问题,并对主办方提供的交易、日志、调用链、监控指标等一种或多种模态数据进行故障检测、定位、根因分析、影响分析等。本次赛题不再局限于单个运维场景,而是模拟了企业运维团队面临的系统架构复杂、数据规模庞大、数据种类繁多等一系列需要解决的运维挑战,使AIOps生态里的所有产、学、研、用各方,都可以基于同样的数据,展开竞赛,并鼓励参赛选手探索大语言模型(LLM)在智能运维领域的应用。

e94c7e22f953c956281a239aba09f6cd.png

为拥抱这一变化,SRE-Copilot战队提出了一套基于大语言模型的多场景智能运维框架——SRE-Copilot,该框架参考了GPT的思想,即通过集成学习的方式,用多个专业的子Agent组合成强大的混合专家(MoE,Mixture of Experts)系统,支持多个智能体Agent的协作与动态编排调度,有计划、记忆、反思与推理等能力,为SRE提供智能化服务,切实提升SRE工作效率。其技术性和创新性主要体现在以下几个方面:

1、基于 ReAct 框架和CoT思维链的 Multi-Agent 编排调度,实现了多模态数据按需异常检测

ReAct的思想参考自论文ReAct: Synergizing Reasoning and Acting in Language Models,包括推理(Reasoning)和行动(Action),推理帮助模型生成、追踪和更新计划并处理异常,行动允许模型与外部环境交互以获取更多信息Observation,提升准确率与适应性。

fea8e19d40835c5439c738d54c716127.png

在异常检测场景中,首先定义多数据源Agent,分别负责选择合适的算法对不同模态数据进行异常检测与检索,主持人Copilot负责解析用户意图,RCAAgent负责收集其他Agent检测到的异常结果与链路、配置信息,进行根因定位。如上图所示,用户提问中提到“交易大量失败”,此时模型会将问题交给负责交易数据的TradeAgent进行检测,TradeAgent检测得出“交易性能下降”,则问题会进一步交给负责性能数据的MonitorAgent。通过这种模式,将排障流程进行下去,每个Agent的检测顺序及内容均根据检测到的异常动态编排。RCAAgent负责收敛协作轮次,并根据反馈决定下一步分析与下钻的方向,当没有额外信息时,就会停止检测,进行根因定位。

SRE-Copilot模拟了真实的大规模云平台跨组件协同定位,利用多个Agent替代多个组件运维团队,发挥各自所长,并动态编排决定排查方向;同时,SRE-Copilot更关注多个组件(多个数据)的表现形态,而非根据单一组件(单一数据)判断是否异常,降低噪声,具有更高的鲁棒性。

2、基于 RAG 检索增强的框架进行根因推理

检索增强生成 (RAG) 是使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(用于搜索大型数据集或知识库)和生成模型(使用检索到的信息生成可供阅读的文本回复)结合在一起,通过从更多数据源添加背景信息,比如训练 LLM 时并未用到的互联网上的新信息、专有商业背景信息或者属于企业的内部文档等,来补充LLM原始知识库,改善大型语言模型的输出,使生成的答案更可靠,还有助于缓解“幻觉”问题,且不需要重新训练。

根因定位过程主要包含以下过程:

  • 知识库构建:需要提前定义一些专家诊断经验和历史故障库,并将信息转化为高维度空间中的向量,存储在向量数据库中。专家经验可以由运维工程师或者业务专家来定义,比如:流量突增,内存打满,服务不可用,对应的可能是大量访问带来的问题,此时应该扩容或重启等。

  • RAG检索增强:使用异常检测生成的故障摘要作为输入,对历史故障、专家经验、知识库文档等进行检索,检索的TopN结果作为上下文和原始提示词组合,再提交给LLM进行根因定位。LLM的参数化知识是静态的,RAG让LLM不用重新训练就能获取最新相关信息,提升了模型的准确性和实时性。

  • 推理与反思:由于本次比赛使用的是6b的小模型(兼容本地化部署环境),推理稳定性较差,因此引入“反思”机制,让模型对自己诊断的根因进行再次判断,进一步提高了根因定位的准确度。

  • 学习新的策略:每次诊断结果既会生成诊断报告,也会加入模型记忆,再次诊断时对最相近的专家经验与诊断结果进行推理,让模型获得持续学习与迭代的能力。

基于RAG,即使是小模型,在没有专家经验和历史故障的输入时,仍然能对一些简单问题进行根因推断,例如:磁盘写满故障、java虚拟机GC问题等等。通过让模型进行自我评估和自我反省,能够将模型推理根因的准确率进一步提升30%以上 。模型在诊断过程中能够不断迭代、持续学习,随着学习和推理的逐渐完善,SRE-Copilot故障诊断的能力也将不断提升。

3、沿着稳定性全生命周期管理,提供多种运维能力

3992de2781e3053391111f99918d5d7d.png

基于大语言模型使用tools的能力,把散落的各个运维场景进行统一集成,理解、拆分用户意图,编排调用不同工具,提供稳定性建设全流程的智能运维能力。用户可通过自然语言提问方式使用SRE-Copilot框架的以下运维能力:

  • 运维计划:解析用户运维需求,生成自然语言的工作流,并从系统可调用的组件中选择合适组件,动态生成可执行的工作流;

  • 运维可视化:通过自然语言交互,自动执行简易的数据查询/分析,对故障数据进行可视化;

  • 异常检测:支持多模态数据类型,灵活拓展,通过多Agent协同编排,整合不同平台数据,极大缩短MTTR;

  • 根因定位:无监督,支持专家经验、历史故障输入,对已知故障准确率高,对于未知故障可推理;

  • 故障分类:根据专家经验和历史故障所属类别,以及本次故障表现,对故障进行分类,有助于后续按组织或改进措施推进复盘与优化;

  • 故障自愈:在推理得到故障根因和故障分类后,可以推荐合适的自愈措施,流程自动化,让运维人员集中精力,无需频繁切换上下文,确保响应和处理的及时性和准确性 ;

  • 代码生成:基于用户的提示生成代码,将复杂脚本的调试开发时间从几小时缩短到几分钟;

  • 故障报告:利用LLM自动生成故障诊断报告,以自然语言方式表述5W问题:When-Where-Who-What-Why,显著提升故障诊断报告的效率与质量,方便团队积累经验和知识库 ;

  • 知识库问答:基于本地知识库进行私域知识问答,提升应答准确率,减少Oncall系统人力投入。

综上所述,SRE-Copilot框架将大语言模型引入AIOps领域,解决了一些传统AIOps的痛点问题,具有以下优势

首先,当前各公司系统架构愈发复杂,各种组件依赖越来越多,很难有一个运维团队精通全部架构及组件的技术细节。而LLM可以学习近乎无限的知识,也可以通过设计多个专家Agent的方式进行编排调度无限拓展,读取、检测不同系统不同数据源的异常信息,并将多模态异常都转化为LLM可理解的半结构化或结构化语言形式,交由LLM分析诊断,提升了故障处理效率。

其次,传统AIOps算法大多是单场景、单AI、解决单个问题,且异常检测和根因诊断大部分算法都依赖于数据的标注。而LLM基于检索增强的方式,不需要或者很少用人工标注的数据进行训练,很大程度上解决了传统AIOps领域人工标注的成本高、周期长、精确度受限等问题,减少了训练所需的数据量。

同时,在接入维护方面,传统AIOps当遇到新客户、私域知识、业务经验、数据变动等情况时,通常只能重新训练,而LLM的泛化能力、自监督学习能力与交互形式,让开发者与客户可以一定程度上松耦合:开发者降低了对客户数据的依赖程度,用统一的大模型或预训练的行业大模型,就能解决客户大部分问题;而客户仅需要了解自己的系统逻辑,通过简单微调就能获得模型的通用能力,通过多Agent的方式,甚至可以将自己的逻辑经验轻松接入,降低了接入成本。

接着,LLM已经在其他领域出现了涌现和推理能力,通过对通用知识的学习,可以对未知故障进行推断,人工确认后加入知识库或记忆来实现模型演进,这似乎是解决新故障诊断的最佳选择。

最后,LLM都是自然语言的形式交互,无需严格传参,降低了使用成本,其精调和上下文学习的语料也都是语言形式,业务SRE可以一起参与共建。

团队介绍:

基础架构-SRE,负责字节跳动基础架构部门所有组件的SRE工作,沿着成本、稳定性、效率、服务四条主线,致力于打造高扩展、高可用的生产系统。基础架构-SRE-数据化团队,负责SRE的数据化运营及智能化探索,数据化产品包括基础架构离线数仓与数据门户、资源交付数据化运营系统;智能化方向涵盖异常检测、智能变更、故障诊断、智能限流、运筹优化与大语言模型应用。协同和赋能SRE从DataOps向AIOps和ChatOps转变,是我们一直努力的方向。欢迎加入,共同探索大模型在智能运维领域中的落地应用:https://jobs.bytedance.com/experienced/position/7262287728477751589/detail

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

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

相关文章

看图识熊(二)

使用Tools for AI封装onnx模型并推理 进行这一步之前,请确保已正确安装配置了Visual Studio 2017 和 Microsoft Visual Studio Tools for AI环境。 项目的代码也可以在这里找到,下面的步骤是带着大家从头到尾做一遍。 界面设计 创建Windows窗体应用(…

双向数据绑定详细解析(超详细)

文章目录 一、什么是双向绑定二、双向绑定的原理是什么理解ViewModel 三、实现双向绑定实现编译Compile依赖收集 参考文献 一、什么是双向绑定 我们先从单向绑定切入单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时&#xf…

QML —— 使用Qt虚拟键盘示例(附完整源码)

示例效果 使用"虚拟键盘"注意 (例子的Qt版本:5.12.4) 注意一:      /* 必须在main.cpp开始处加入如下代码,否则无法使用"虚拟键盘" */      qputenv(“QT_IM_MODULE”,QByteArray(“qtvirtualkeybo…

苹果MacOS12系统 Monterey最新正式版下载 MacOS12系统镜像包

macOS 12 Monterey是苹果公司最新发布的操作系统,为Mac用户带来了更强大、更智能的功能和体验。 这个版本引入了许多令人兴奋的新特性,其中包括革命性的Universal Control功能,让你可以无缝地在Mac和iPad之间进行操作。只需将iPad放在Mac附近…

OpenCV的安装和vscode的配置

在图像处理领域,OpenCV的使用是必不可少的,这里介绍一下OpenCV的安装及其在vscode中的配置 1.OpenCV的安装 (1)安装依赖 sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavc…

GEE——土地利用分类种两个矢量集合中不同列进行相减的方式(利用join进行连接处理)

问题: 我有两个具有相同 ID 的特征集,我想从第二个特征集中减去第一个特征集的表格单元格。 我使用了这个函数,但它计算的是表 1 中第一个元素与表 2 中其他元素的减法。 我想逐个单元格计算减法。第一个表格中 id 为 1 的单元格减去第二个表格中 id 为 1 的单元格,2x2、…

主线程退出后子线程是否还会正常运行?

问题: 父子线程的关系 今天突然有感而发, 想要来探讨一下主线程和子线程之间的关系。 例一:子线程执行时间较父线程慢 public class ThreadTest {public static void main(String[] args) {// 测试主线程 和 子线程Thread sonThread new …

Python 教程 01:Python 简介及发展历史

ℹ️说明:关于本教程的一些约定 ① 教程后有(选读)的表示此教程为扩展内容,选读; ② 教程中涉及到的代码片段有时候并非代码块,而是图片,这是防止初学者直接复制代码粘贴的行为,想必…

应用OpenCV绘制箭头

绘制箭头函数 方法:函数cv2.arrowedLine( ) 语法格式:cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) 参数说明: img:要画的直线所在的图像,也称为画布。。 pt1&#x…

【CSS】文字描边的三种实现方式

目录 1. 可行的几种方式1.1. text-shadow 描边代码优缺点 1.2. text-stroke 描边实现优缺点 1.3. svg 描边实现优缺点 总结 1. 可行的几种方式 text-shadow–webkit-text-strokesvg 1.1. text-shadow 描边 MDN text-shadow 代码 <div class"text stroke">…

Ubuntu软件和vmware下载

https://cn.ubuntu.com/download/desktop VMware 中国 - 交付面向企业的数字化基础 | CN

HttpRunner自动化测试工具之获取响应数据extract提取值到变量

获取响应数据 extract: 提取 注&#xff1a;extract 应与request保持同一层级 1、响应行&#xff0c;响应头&#xff1b;通过 extract 提取响应的数据并存储到变量中&#xff0c;如下图&#xff1a; 注&#xff1a;变量名的前面要有 - # 获取响应数据: 响应行&#xff08;…

【比赛专题】江苏省信息安全管理与评估 理论题样题题库整理

GZ032 信息安全管理与评估赛题第1套 一、 单选题 &#xff08;每题 2 分&#xff0c;共 35 题&#xff0c;共 70 分&#xff09; 1、《中华人民共和国数据安全法》已由中华人民共和国第十三届全国人民代 表大会常务委员会第二十九次会议通过&#xff0c;现予公布&#xff0c;自…

蓝桥杯基础知识1 字母大小写转换

蓝桥杯基础知识1 字母大小写转换 isalpha()判断一个字符是否为字母。 isalnum()判断一个字符是否为十进制数字字符或者字母&#xff0c;是否属于a~ z或A~ Z或0~9。 isdigit() 判断一个字符是否是十进制数字字符。十进制数字是&#xff1a;0 1 2 3 4 5 6 7 8 9 isalnum()和isdig…

【python】合并具有相同数字前缀的 CSV 文件

一、问题 有一个文件目录&#xff0c;目录下有类似下列文件名&#xff1a;1_a.csv、1_b.csv、1_c.csv、2_a.csv、2_b.csv、2_c.csv......即下划线前面数字相同的不同csv文件有几个&#xff0c;他们的行数相同&#xff0c;列名不同。 想把这个目录下&#xff0c;数字相同的几个…

YOLOv5改进 | 损失篇 | VarifocalLoss密集检测专用损失函数 (VFLoss,论文一比一复现)

一、本文介绍 本文给大家带来的是损失函数改进VFLoss损失函数,VFL是一种为密集目标检测器训练预测IoU-aware Classification Scores(IACS)的损失函数,我经过官方的版本将其集成在我们的YOLOv8的损失函数使用上,其中有很多使用的小细节(否则按照官方的版本使用根本拟合不了…

讨好自己的五大法宝,让生活更精彩

在这个繁忙的世界里&#xff0c;让生活更精彩并不难&#xff0c;关键是你愿不愿意给自己一点小惊喜。让我们一起探讨一下&#xff0c;如何用五大小法宝&#xff0c;讨好自己&#xff0c;让生活更加美好。 1. 每周安排“自己时间” 在繁忙的工作和学习之余&#xff0c;留出每周…

echart图表

首先我们要知道ECharts是什么,它是怎么用的&#xff1f; ECharts是一个使用JavaScript实现的开源可视化库&#xff0c;它涵盖各行业图表&#xff0c;满足各种需求。它提供了丰富的图表类型和交互能力&#xff0c;使用户能够通过国简单的配置生成各种各样的图表&#xff0c;包括…

使用opencv做双目测距(相机标定+立体匹配+测距)

最近在做双目测距&#xff0c;觉得有必要记录点东西&#xff0c;所以我的第一篇博客就这么诞生啦~ 双目测距属于立体视觉这一块&#xff0c;我觉得应该有很多人踩过这个坑了&#xff0c;但网上的资料依旧是云里雾里的&#xff0c;要么是理论讲一大堆&#xff0c;最后发现还不知…

钡铼分布式IO在玻璃制造中的实时数据采集与监控应用介绍

导读 玻璃行业多年来一直广泛使用 PLC 来帮助管理生产过程所需的精确材料比例&#xff0c;完全依赖其PLC进行数据采集与控制&#xff0c;并且大量依靠人工来操作&#xff0c;所以这些高成本推动了对成本较低的替代方案的需求。 场景描述 某玻璃厂生产的玻璃生产包括配料段、熔…