当前位置: 首页 > news >正文

字节跳动基础架构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

相关文章:

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

近日,2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会在北京成功举办,活动吸引了来自互联网、运营商、科研院所、高校、软硬件厂商等领域多名专家学者参与,为智能运维的前沿学术研究、落地生产实践打开了新思路。决赛中&#xff0…...

python moviepy 图文批量合成带字幕口播视频

最近在研究将图片和文本批量合成为带字幕口播视频 主要是基于python的moviepy库 from generator import audio, pics, subs, videodef main():texts_input examplepics_input example# 图片分辨率预处理pics.adjust(pics_input)# 文字转语音audio.text_to_audio(texts_inpu…...

【代码片段】Linux C++打印当前函数调用堆栈

在开发大型项目时,尤其是多线程情况下,一般无法使用断点调试,这时候将当前函数的调用堆栈打印出来是非常有必要和有效的问题排查手段。 这里记录一段Linux环境下,打印函数堆栈的代码。 void get_native_callstack(std::string &a…...

Linux程序、进程以及计划任务(第一部分)

目录 一、程序和进程 1、什么是程序? 2、什么是进程? 3、线程是什么? 4、如何查看是多线程还是单线程 5、进程结束的两种情况: 6、进程的状态 二、查看进程信息的相关命令 1、ps:查看静态的进程统计信息 2、…...

Oracle database 12cRAC异地恢复至单机

环境 rac 环境 byoradbrac Oracle12.1.0.2 系统版本:Red Hat Enterprise Linux Server release 6.5 软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1:172.17.38.44 byoradb2:172.17.38.4…...

【docker】linux部署docker

简介 首先我需要声明的是,我的系统是centos7,下载工具使用的是yum;在linux上部署docker,之前一直看的是这篇文章Linux之Docker部署,基本上功能方面也都可以使用,部署起来也是比较的简单。首先我先讲述这篇…...

【K8S 云原生】Pod资源限制、Pod容器健康检查(探针)

目录 一、docker的重启方式和K8S重启方式 1、Pod的重启方式: 2、docker的重启策略: 二、yaml文件快速生成: 三、pod的状态: 四、Pod的资源限制 1、限制的方式和种类 2、CPU的限制的格式: 五、K8S拉取镜像的策…...

Python从入门到网络爬虫(模块详解)

模块 我们知道,函数和类都是可以重复调用的代码块。在程序中使用位于不同文件的代码块的方法是:导入 (import) 该对象所在的模块 (mudule)。当程序变得越来越大时,将程序的不同部分根据不同分类方法保存在不同文件中通常会更加方便。 导入模…...

[大厂实践] 无停机迁移大规模关键流量(下)

在系统升级、迁移的过程中,如何验证系统逻辑、性能正确无误,是一个很大的挑战。这一系列介绍了Netflix通过重放流量测试解决这一挑战的实践。原文: Migrating Critical Traffic At Scale with No Downtime — Part 2 想象一下,你被心爱的Netf…...

VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤

VMware Workstation虚拟机CentOS7.9配置固定ip的步骤 编辑虚拟机 打开VMware Workstation。 选择要配置的虚拟机,但不要启动它。 点击“编辑虚拟机设置”(Edit virtual machine settings)。 选择“网络适配器”(Network Adapter&…...

构建自己的私人GPT

创作不易,请大家多鼓励支持。 在现实生活中,很多人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的私人GPT变得非常重要。 一、本地部署…...

EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示

EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示 一 mainwindow.c 文件函数:1.1 自定义PDO配置1.2 主站初始化二 motrorcontrol.c 文件三 allvalue.h 文件该文档修改记录:总结一 mainwindow.c 文件函数: 1.1 自定义PDO配置 int IO_setup(uint16 slave) {int...

线程安全、共享变量的可见性

Java中的线程安全问题 谈到线程安全问题,我们先说说什么是共享资源。所谓共享资源,就是说该资源被多个线程所持有或者说多个线程都可以去访问该资源。 线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数…...

电动汽车BMS PCB制板的技术分析与可制造性设计

随着电动汽车行业的迅猛发展,各大厂商纷纷投入巨资进行技术研发和创新。电动汽车的核心之一在于其电池管理系统(Battery Management System, BMS),而BMS的心脏则是其印刷电路板(PCB)。通过这篇文章探讨电动…...

Android 车联网——多屏多用户(十五)

前面几篇文章介绍了多用户和多屏相关的 Manager 和 Service。上一篇文章最后虽然车内乘员都根据配置有自己的对应屏幕,但默认情况下,所有车内乘员依然使用的是当前主用户(司机用户),这一篇我们继续放下看一下用户的创建与分配。 一、用户创建分配 1、创建用户 对于创建用…...

uwsgitop 使用

背景:Django项目 uwsgi,uwsgi.ini 在工程下。 使用: 下载安装uwsgitop [roothost ~]# tar -zxvf uwsgitop-0.11.tar.gz [rootuwsgitop-0.11 ~]# cd uwsgitop-0.11/ [rootuwsgitop-0.11 ~]# python setup.py install [rootuwsgitop-0.11 …...

深信服技术认证“SCSA-S”划重点:文件包含漏洞

为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…...

Color Control

设计一个优秀的用户界面是一项艰巨的任务。特别是如果你想改变UI的颜色,调整所有元素可能需要花费大量时间。Color Control可以帮助你!在检查器中以可视化的方式将你的项目颜色定义为资源。Color Control为你提供了组件,当你编辑它们时,它们会自动更新你的UI元素。 颜色控制…...

端口开放问题

端口开放问题 所遇问题 在宿主主机上可以ping通虚拟机ip192.168.27.129,但无法在宿主主机上访问http://192.168.27.129:8080navavcat 16连接mysql时,2002 - Can’t connect to server on ‘192.168.27.129’(100601) 原因 以上两个问题&a…...

KNN 回归

K 近邻回归(K-Nearest Neighbors Regression)是一种基于实例的回归算法,用于预测连续数值型的输出变量。它的基本思想是通过找到与给定测试样本最近的 K 个训练样本,并使用它们的输出值来预测测试样本的输出。它与 K 最近邻分类类…...

Kali Linux——获取root权限

目录 一、设置root密码 【操作命令】 【操作实例】 二、临时获取root权限 【操作命令】 【操作实例】 三、提升用户到root 1、获取root权限 2、进入/etc/passwd 3、查看root账号ID 4、找到需要修改的用户 5、输入i,进入编辑模式 6、把用户的ID改成跟r…...

听GPT 讲Rust源代码--compiler(28)

File: rust/compiler/rustc_codegen_llvm/src/llvm/mod.rs 文件rust/compiler/rustc_codegen_llvm/src/llvm/mod.rs是Rust编译器的LLVM代码生成模块的一个文件。该文件定义了一些用于与LLVM交互的结构体、枚举和常量。 此文件的主要作用是: 定义编译器和LLVM之间的接…...

Debezium日常分享系列之:Debezium2.5版本之connector for JDBC

Debezium日常分享系列之:Debezium2.5版本之connector for JDBC 一、概述二、JDBC 连接器的工作原理三、使用复杂的 Debezium 变更事件四、至少一次交付五、多项任务六、数据和列类型映射七、主键处理八、删除模式九、幂等写入十、Schema evolution十一、引用和区分大…...

爬虫网易易盾滑块案例:某乎

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、滑块初步分析 js运行 atob(‘aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbg’) 拿到网址,浏览器打开网站&#xff0…...

机器学习笔记 - 偏最小二乘回归 (PLSR)

一、偏最小二乘回归:简介 PLS 方法构成了一个非常大的方法族。虽然回归方法可能是最流行的 PLS 技术,但它绝不是唯一的一种。即使在 PLSR 中,也有多种不同的算法可以获得解决方案。PLS 回归主要由斯堪的纳维亚化学计量学家 Svante Wold 和 Harald Martens 在 20 世纪 80 年代…...

【HTML5】第1章 HTML5入门

学习目标 了解网页基本概念,能够说出网页的构成以及网页相关名词的含义 熟悉Web标准,能够归纳Web标准的构成。 了解浏览器,能够说出各主流浏览器的特点。 了解HTML5技术,能够知道HTML5发展历程、优势以及浏览器对HTML5的支持情…...

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

更新Xcode14后低版本iPhone调试报错 dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /var/containers/Bundle/Application/…/….app/… Reason: image not found 这是缺少libswiftCoreGraphics库 直接导入libswiftCoreGraphics库即…...

React Hooks中useState的介绍,并封装为useSetState函数的使用

useState 允许我们定义状态变量,并确保当这些状态变量的值发生变化时,页面会重新渲染。 useState 返回值 const [state, setState] useState(initialState);useState 返回一个长度为 2 的数组。通常,我们这样定义状态变量: co…...

5 个最适合SEI 网络空投交易等操作的钱包(Bitget Wallet,Coin98等)

大家好!Sei 网络比 SOL 快 5 倍,手续费低,还能防止前台交易。好了,我不会占用大家太多时间,让我们直奔主题吧。 Sei 官方:推特(twitter.com/SeiNetwork) 如上图所示,目前…...

.net8 AOT编绎-跨平台调用C#类库的新方法-函数导出

VB.NET AOT无法编绎DLL,微软的无能,正是你的机会 .net8 AOT编绎-跨平台调用C#类库的新方法-函数导出 1,C#命令行创建工程:dotnet new classlib -o CSharpDllExport 2,编写一个静态方法,并且为它打上UnmanagedCallersO…...

自学做网站/福建seo学校

1.现象 考虑安全因素,想设置“限制登录失败次数并锁定”,便在网上找了教程,结果找到是centos7的设置方式,centos8和centos7设置是有差异的,结果导致输入正确的账号和密码无法登录。 2.解决思路 不输入用户名和密码的情…...

网站建设特效大全/b站推广入口2022

一个偶然机会网站上看到了aistudio,本次普及一下ai知识的目的进去看了一下,发现尽然有免费课程,而且是面向小白,虽然大学时期学过计算机课,但是基本都还给了老师,本着试试的心态,还是参加了该课…...

小型网站制作深圳/百度云网页版登录入口

css文件的写法:首先新建文本文档,并重命名为【xxx.css】;然后使用编辑器打开文件,第一行写上编码格式;最后来编写需要的css代码。本教程操作环境:windows10系统、css3版,DELL G3电脑&#xff0c…...

网站设计经典案例/网站设计制作在哪里找

用于自动更新,但一般没有,且在MyEclipse消耗内存,建议关闭updating indexes MyEclipse的updating indexes功能,看着并不起眼,但是如果机器的资源比较紧张的时候,就会带来不少的麻烦,因为在updat…...

网站的建设费用预算/成品网站源码的优化技巧

1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2、原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后&…...

省建设厅网站查询/seo在哪可以学

最近开始将CSDN的博客转到个人博客上,主要是采用Markdown将以前的文章保存下来,然后将其用hexo部署到github。在这里,我介绍一下使用Markdown写博客时一些技巧,格式,以及如何用部署到网站上。 用新电脑继续写博客 去年…...