专业的编程技术博客社区

网站首页 > 博客文章 正文

详解阿里云正在使用的RCAgent:基于大型语言模型的根因分析框架

baijin 2024-12-28 23:03:23 博客文章 2 ℃ 0 评论


随着云计算平台在应用和服务部署中的广泛应用,系统异常对客户体验和服务水平协议的潜在影响日益严重。云根因分析(RCA)作为站点可靠性工程的核心组成部分,正受到亚马逊、微软、谷歌和阿里巴巴等大型云计算企业的持续关注。最近,大型语言模型(LLM)在云RCA中的应用备受关注。

近期来自清华大学、阿里巴巴集团、南京大学、哈佛大学的研究人员发布了《RCAgent: Cloud Root Cause Analysis by Autonomous Agents with Tool-Augmented Large Language Models》,提出了一种名为RCAgent的框架,这是一种基于LLM的、工具增强的自治智能体,用于进行实用的云RCA。

论文地址:https://arxiv.org/abs/2310.16340

添加图片注释,不超过 140 字(可选)

以下为抽取的关键内容:



引言

随着云计算平台的广泛应用,对云计算系统中的异常情况,如不可恢复故障和作业挂起,进行根因分析(RCA)是至关重要的。RCA作为站点可靠性工程的核心组成部分,正受到像亚马逊、微软、谷歌和阿里巴巴这样的大型云计算企业的高度关注。

然而,由于云计算部署规模的持续扩大,在线异常RCA的手动工作流程,如创建故障排除工具,常常使站点可靠性工程师(SRE)不堪重负。为了提高云服务可靠性的效率,已经广泛采用了一系列人工智能运维(AIOps)方法,以降低故障解决的平均时间(MTTR)。

尽管典型的AIOps方法有助于自动化流程,但它们的应用面临着诸多挑战,包括数据质量差、数据分布变化、数据标注繁重,以及模型泛化能力有限。随着大型语言模型(LLM)的快速发展,尤其是GPT和LLaMA家族的模型,它们在解决复杂推理任务方面显示出令人兴奋的前景。这些进展为AIOps领域带来了显著希望。

LLM的一个显著优势是其泛化能力,这使得它们能够以零样本或小样本的方式理解和完成未见过的推理任务。这主要归功于预训练和指令调优的广泛和可扩展过程。这种适应性使LLM非常适合于特定和系统特定的RCA任务。

此外,LLM的性能可以通过各种提示策略得到增强。技术如思维链(CoT)、自一致性(SC)、反射(RAG)等增强了逻辑能力和域外(OoD)泛化。这些技术进一步减少了高质量、特定任务的标注训练数据集的需求,特别是在RCA应用中。

考虑到这些固有的优势以及LLM的通用性,它们为RCA任务提供了新的解决方案。最近的几项工作展示了LLM在云RCA任务中的使用。具体来说,一些工作通过微调GPT模型来生成从事件摘要到根因和缓解措施的文本,而不需要收集生产环境中的数据。Oasis提出了使用域特定数据微调GPT模型来预测故障摘要以了解根因和进行事后维护。

然而,这些工作在很大程度上依赖于对LLM的计算密集型微调以适应云系统任务,并没有充分利用LLM的泛化和推理能力。一种可能的解决方案是使用基于LLM的少样本RAG,代表性的方法包括RCACopilot和PACE-LM。RCACopilot使用LLM作为人类编写的故障排除指南的汇总器,并作为根据最近的类似诊断提示的根因预测器。PACE-LM通过置信度校准增强了基于RAG的语言模型的输出,以减轻幻觉并减少错误推荐。

然而,所有这些方法都基于GPT家族,并且仅限于微软的场景,而没有解决与使用LLM的云系统数据相关的数据隐私问题。具体来说,将生产级数据传输到外部API(如ChatGPT)可能会给许多IT企业带来安全问题。此外,上述方法都没有充分利用LLM在信息收集、决策制定和环境交互方面的自治能力。

2,动机与挑战

在线作业异常RCA与AIOps

AIOps在云服务中发挥着重要作用,用于管理作业异常,提高云服务可靠性。RCA是其中的关键环节,需要全面的数据检查和最新的领域知识。然而,云系统的复杂性和不断增长的数据使得现有AIOps方法面临挑战,难以适应数据分布和异常模式的变化。

工具增强LLM代理的优势

将工具集成到LLM并让其自动执行操作已经在各种任务中显示出巨大潜力。这种代理可以自主指导数据探索和外部能力调用,具有扩展异构任务的能力。LLM的决策能力使其能够分析前所未有和复杂的异常,而无需标注大量训练数据。

面临的挑战

  • 隐私:出于安全考虑,通用LLM方法应内部托管。将生产级机密数据传输到外部API会带来隐私风险。这意味着无法使用强大的外部模型,如ChatGPT。
  • 上下文长度:自主代理与真实大数据环境交互的基本问题之一是上下文长度。不同类型的数据,如日志、代码和数据库查询结果,往往非常大。
  • 操作有效性:LLM的开放式操作生成是一个巨大挑战,因为生成有效操作的概率较低。这种错误会严重损害代理在综合任务上的表现。

在文档中,还提供了以下具体数据:

添加图片注释,不超过 140 字(可选)

  • 对于上下文长度问题,实验数据显示,5分钟运行时日志长度统计在不同实时计算作业中存在显著差异,例如某些作业的token数量超过200k。

这些细节和具体数据充分说明了在云RCA任务中使用工具增强LLM代理的优势,以及面临的挑战。这些挑战包括数据隐私、上下文长度和操作有效性。

3,方法

添加图片注释,不超过 140 字(可选)

RCAgent是一个基于大型语言模型(LLM)的工具增强自治智能体,用于进行实用的云根因分析(RCA)。该框架主要包括以下内容:

增强的推理与行动框架

RCAgent采用了增强的推理与行动框架,旨在系统地可靠地提示LLM作为工具增强的自主代理进行云RCA。该框架采用典型的ReAct风格的工具代理提示框架,其中包括以下关键组成部分:

  • 框架规则:描述了思维-行动-观察循环,确保LLM按照预定流程进行推理和行动。
  • 任务要求:包含了对RCA任务的指令,提供了基本的云知识,使LLM能够更好地理解任务需求。
  • 工具文档:描述了所有可调用的工具,使LLM了解如何使用这些工具来完成特定的任务。

A. 观测管理(Observation Snapshot Key)

RCAgent提出了OBservation Snapshot Key (OBSK)方法,旨在解决上下文长度问题。OBSK方法的主要思路是只向控制器代理展示观察结果的开头部分,而将完整的观察结果映射到一个哈希ID,即快照键。然后,RCAgent会建立一个键值存储,用于将快照键映射到实际的观察结果。当解析器在动作中发现一个快照键时,RCAgent会通过键值存储来查询并返回相应的观察结果。

具体步骤包括:

  • 使用函数如日志系统或数据库查询获取大量观察结果,如日志或表条目。
  • 将观察结果映射到一个唯一的哈希ID,即快照键。
  • 只向控制器代理展示观察结果的开头部分,并在提示中包含快照键。
  • 建立键值存储,用于映射快照键和实际的观察结果。
  • 当解析器在动作中发现快照键时,通过键值存储查询并返回相应的观察结果。

通过这种方法,RCAgent可以有效地压缩上下文长度,同时避免信息丢失。控制器代理可以获得必要的信息,同时避免处理过长的文本。

添加图片注释,不超过 140 字(可选)

B. 工具准备(Tool Preperation)

RCAgent设计了信息收集工具和分析工具。信息收集工具接受简单参数,隐藏了访问云系统中数据的所有无关细节,以降低LLM采取有效行动的门槛。另一方面,分析工具则由LLM增强,以扩展领域知识。其中,代码分析工具和日志分析工具是两种互补的知识工具,能够为控制器代理提供额外的领域知识。

信息收集工具 (Information-gathering Tools)

这些工具旨在隐藏访问云系统中数据的无关细节,使得LLM可以轻松地采取有效的行动。例如,日志系统只接受简单参数如实体ID,而不是复杂的SQL语句或日志查询API。这种语义最小化的工具设置显著降低了LLM采取有效行动的门槛,并减少了在大型数据仓库中无意义的探索。此外,为了减少重复数据带来的计算成本,这些工具会对返回的数据条目进行模糊匹配,并消除重复项。

分析工具 (Analytical Tools)

分析工具旨在扩展控制器代理的领域知识和能力。例如,在云系统任务中,日志分析等任务通常需要分析大量数据,因此RCAgent采用了分析-聚合的方法。此外,分析工具可以通过LLM的推理能力进行增强。RCAgent中包含两种专家Agent:

  • 代码分析工具 (Code analysis tool):递归地分析代码文件,为控制器代理提供代码摘要。具体为:递归地读取代码文件,并推荐/查找其他相关类进行分析,直到没有更多推荐或达到外部依赖为止。然后用LLM总结所有代码文件,将结果呈现给控制器智能体。
  • 日志分析工具 (Log analysis tool):通过语义分块和基于RAG的分析,为控制器代理提供日志摘要。具体为:使用语义划分方法将日志分割成短块,然后进行上下文学习,生成日志分析及相关知识。同时要求LLM输出支持其分析的日志证据。


添加图片注释,不超过 140 字(可选)


添加图片注释,不超过 140 字(可选)

这些分析工具扩展了控制器代理的领域知识,例如诊断工具的工作机制等,从而提高了RCAgent的性能。通过这种工具准备方法,RCAgent实现了数据收集和分析过程的自动化,类似于人类SRE的工作流程,从而提高了云系统根因分析的效率。

C. 稳定化(Stablization)

为了解决由噪声数据和本地LLM引起的操作有效性下降问题,RCAgent引入了两种稳定化方法:

添加图片注释,不超过 140 字(可选)

  • JSON Repairing: 为了生成结构化的交换数据,RCAgent采用了JSON Repairing方法。这一方法首先使用一些替换规则来清理提示中的敏感字符,以避免LLM生成错误的JSON结构。如果在LLM的输出中仍然包含错误的JSON结构,RCAgent会提取其内容,将其转换为YAML格式,然后使用LLM生成具有相同结构和内容的JSON。这个过程会重复进行,直到生成有效的JSON。
  • Error Handling: RCAgent通过预定义的规则来标记潜在的有问题操作或状态,并为此提供错误消息和建议。例如,当控制器代理重复调用无状态工具、向专家代理提供无意义的输入,或者过早地使用最终化工具而没有进行彻底调查时,RCAgent会提供相应的错误消息和建议。这些错误消息可以减少控制器代理采取无意义行动的频率。

通过这些稳定化方法,RCAgent增强了自主代理在处理噪声数据和本地LLM时生成的操作的有效性。JSON Repairing确保了结构化交换数据的正确性,而Error Handling则减少了无效操作的发生频率。这两种方法的结合使得RCAgent可以在复杂的云系统中可靠地运行

D. 自一致性聚合(Self-Consistency Aggregation)

RCAgent引入了自一致性聚合方法,旨在对LLM自主代理生成的开放性文本结果进行聚合。该聚合方法涵盖两个方面:

文本数据的自一致性 (Self-Consistency for Text Data)

文本数据的自一致性包括以下两种方法:

  • 嵌入投票 (Vote with embedding):直接采用自一致性聚合的思想,即对每个候选文本结果进行投票,选出与多数文本最相似的文本作为聚合结果。
  • LLM聚合 (Aggregate with LLMs):利用LLM的推理能力,让LLM汇总多个候选文本结果,并输出格式和长度相似的聚合结果。

工具使用轨迹的自一致性 (Self-Consistency for Tool Using Trajectories)

添加图片注释,不超过 140 字(可选)

轨迹级的自一致性 (Trajectory-level Self-Consistency, TSC) 方法是在控制器Agent进入最终化步骤时才开始采样,从倒数第二步开始,这样可以共享大部分初步步骤,减少不必要的消耗。这种方法既保证了初步信息收集阶段的稳定性,又促进了推理路径的多样性。

具体来说,TSC方法只在上一个步骤开始时进行采样,而不在后续步骤中采样,这样可以在保证初步稳定性同时增加推理路径的多样性。与完全的轨迹级自一致性相比,这种方法在信息收集阶段保持了稳定,而在推理路径上增加了多样性。

RCAgent中包含以下几种Agent:

  • 控制器Agent:负责生成思维和行动,接收来自环境的观察结果,并利用这些信息进行推理和决策。
  • 专家Agent:分析工具,由LLM增强,用于扩展控制器Agent的领域知识和能力。RCAgent中包含两种专家Agent:代码分析工具:递归分析代码文件,并为控制器Agent提供代码摘要。日志分析工具:通过语义分块和基于RAG的分析,为控制器Agent提供日志摘要。
  • 信息收集工具:简单易用,负责从云系统中收集数据,为控制器Agent提供必要的信息。例如日志查询、数据库查询等。
  • 外部环境中的Agent:提供工具文档和错误处理等信息,辅助控制器Agent的推理和决策。

RCAgent通过设计这些不同类型的Agent,形成了以控制器Agent为核心,多种工具Agent协作的体系结构。


4. 实验效果:

在阿里巴巴云实时计算平台上进行实验,结果表明RCAgent在预测根因、解决方案和证据等方面明显优于原始的ReAct方法。

A. 模型配置

  • 使用Vicuna-13B-V1.5-16K作为基础模型,使用vLLM后端在单个NVIDIA A100 SXM4 GPU上进行模型推理。
  • 默认使用贪心解码策略,并使用自适应重复惩罚策略来抑制重复生成。
  • 在自一致性采样时,使用Vicuna的默认配置:0.9温度和0.6核采样。

B. 数据集准备

添加图片注释,不超过 140 字(可选)

收集了15,616个异常作业的数据集,过滤后得到约5000个非平凡的异常作业。使用Flink Advisor知识库为这些作业创建分析结果。

添加图片注释,不超过 140 字(可选)

人工标注了161个作业的根因、解决方案、证据和责任。对其余作业进行语义聚类,得到36个代表在线案例,并由经验丰富的SRE手动标注根因和责任。

C. 评估指标

  • 包括METEOR、BERTScore、EmbScore、NUBIA、BLEURT、BARTScore等语义指标。
  • 新增Pass Rate和Invalid Rate来评估轨迹的有效性和稳定性。
  • 使用更强的GPT4模型来评估预测的准确性和帮助性。
  • 进行了人工评估,以获得每个结果的H-Helpfulness分数。

D. 实验结果

对离线数据集进行实验,结果显示RCAgent在根因、解决方案和证据预测方面明显优于原始ReAct,在根因预测方面提高了72.67%的Win Rate,在解决方案预测方面提高了69.25%的Win Rate。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

通过ablation study评估了RCAgent各组件的贡献,结果显示LLM专家代理、JsonRegen和OBSK对性能提升有显著贡献。

评估了不同设置下的轨迹统计信息,结果显示RCAgent生成的轨迹更稳定、更有效,其Pass Rate达到了99.38%,Invalid Rate为7.93%。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

在在线数据集上进行测试,结果显示RCAgent的预测结果对人类评估员有帮助,其H-Helpfulness评分为2.47。

添加图片注释,不超过 140 字(可选)

研究了不同采样规模下的自一致性效果,结果显示采样规模达到20时性能趋于平稳。

这些详尽的数据和结果验证了RCAgent在真实云系统上的性能,展示了其作为自主LLM代理在云系统根因分析任务中的实际应用。


根据论文的表述“The analysis results from RCAgent are being utilized in the Real-time Compute Platform for Apache Flink of Alibaba Cloud to diagnose anomalous stream processing jobs uncovered by current methods.”,RCAgent已经集成到阿里巴巴云实时计算平台中,用于诊断现有方法无法发现的异常流处理作业。这些结果证明了RCAgent在实际云系统中的有效性。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表