首页 > 其他分享 >打造 LLMOps 时代 Prompt 数据驱动引擎

打造 LLMOps 时代 Prompt 数据驱动引擎

时间:2024-08-30 09:51:41浏览次数:6  
标签:Prompt 训练 模型 引擎 LLMOps 日志 数据 我们

导读 本次分享的主题是“打造 LLMOps 时代的 Prompt 数据驱动引擎”。其中 LLMOps 想要表达的概念是 LLM for AIOps。AIOps 概念提出至少已有四年,从去年开始,在学术界出现了 LLMOps 的趋势,大家都在想把 LLM 用于 AIOps 来做运维,但中间会遇到一些挑战。本文将重点探讨在 Prompt 数据方面,LLMOps 可能遇到的一些挑战,及其解决方案。

01

背景:从 AIOps 到 LLMOps 面临 prompt 挑战

图片

从 AIOps 到 LLMOps,重点在于大模型强大的泛化能力和语言理解能力。和自然语言任务类似,AI 运维领域也有很多细分任务,基于大模型的泛化能力,我们预期可以用其统一处理这些零散的下游任务,建立一个多任务处理场景。这就是我们研究的初衷。

图片

我们认为 LLMOps 有两个关键要素:Prompt application 和 Prompt learning。Prompt 是大语言模型在预训练过程中学到的知识,需要与人类的期望对齐,它是人类认知世界与模型数字世界的桥梁。

第一个关键要素是高质量的 Prompt,即 Prompt application,它帮助模型理解人类的目标,也就是说人类直接向模型提出命令或一条通向目标的推理路径。实际上,就是设计一个更有效的交互策略,使得模型生成的内容能符合人的意图和需求。

另外一个关键要素是 Prompt learning。Prompt learning 是指当前一些大模型会自动生成 Prompt 指令数据集,如 Self-instruct 策略,生成许多预制问题和答案对,称为 Prompt 训练集。这些训练集用人类的真实 Prompt 或合成 Prompt,让模型模拟人类可能遇到的问题,实质上是模型在学习人类的 Prompt,因此称为 Prompt learning。图中显示了更好的 Prompt 策略确实能提升模型性能,而训练阶段的低质量 Prompt 会降低效果。

本文将重点探讨这两个方向的问题,并分享我们的一些探索。

图片

这两个方向分别有两大痛点:

  • 在 Prompt application 方面,传统智能运维算法依赖于任务数据,专家标注耗时耗力;且可解释性差,可交互性弱。
  • 在 Prompt learning 方面,Prompt 训练数据质量不稳定,导致模型性能下降;训练数据全面性不足,影响了模型能力。

接下来将分别介绍我们为解决这些问题所做的工作。

02

LogPrompt**:打造 LLMOps Prompt application 引擎**

图片

首先来介绍 Prompt application。这里以 AIOps 三大支柱之一的日志分析为例,介绍如何打造 Prompt application 引擎。

软件系统产生的半结构化文本,传统上需要运维工程师手动分析,但随着自动日志分析算法的出现,出现了很多细分任务,其中两个经典任务是日志解析和日志异常检测。日志解析涉及从原始日志中提取模板和变量,模板是日志词,变量是 IP 地址或序号等,传统方法将其转化为 1/0 组合。而日志异常检测则是输入日志,输出 1 或 0 表示是否异常。

我们重点关注的是在线场景,由于软件更新频繁,新版本日志往往没有历史数据,模型缺乏适配的训练数据,这就要求模型能快速泛化以处理大量未知的新日志。在训练数据很少的情况下实现高效的日志分析,这是学术界的一大难题。

图片

传统日志分析的两大痛点是依赖大量训练数据和缺乏可解释性。我们做了一些小实验,发现传统方法在训练数据占整个数据集 70-80% 时表现很好,但当训练数据减少到 10% 时,效果显著下降。这就是由于在线场景中大部分日志是新的,模型缺乏适配的训练数据,导致性能下滑。频繁重新训练模型成本高,因此需要新的解决方案。

另一个问题是现有方法缺乏可解释性。传统方法将日志处理成 1/0,输出也是 1/0,用户只能看到一个概率值。如今用户希望看到详细的解释,如为什么认为日志异常,或者生成简短报告来减轻运维工程师的负担。我们希望通过大模型和 Prompt 策略来解决这两个问题。

图片

把大模型引入到日志分析的动力首先就是大模型具有强大的语言泛化能力,其指令微调过程使用少量指令训练数据,却能泛化到大量未知指令数据上。因此,我们认为 LLM 有能力处理大量未知的新日志。此外,像 ChatGPT 这样的模型擅长复杂的语言生成任务,因此我们认为 LLM 有潜力生成日志报告或解释异常状态。

然而,挑战在于大模型对 Prompt 非常敏感。我们前期实验发现,对于简单的 Prompt,如“请把以下日志分为正常或异常”,大模型的表现较差。用更好的 Prompt 策略后,性能提升了 70-80%。这是因为日志分析高度领域化,包含许多专有名词和 IP 地址等内容,自然语言模型可能缺乏领域知识输入。因此,需要探索更好的 Prompt 策略,以充分发挥大模型的潜力。当前 NLP 社区也提出了许多 Prompt 范式,如 CoT 和 ToT 等。我们希望将这些策略更好地应用于 LLMOps 相关领域。

图片

我们一开始引入了 CoT 策略。CoT 的核心思想是模拟人的思考过程,不是直接输出答案,而是要求模型逐步思考(如“think step by step”),这对解决我们的两个主要问题很有帮助。①CoT 将未知问题分解为可处理的小步骤,解决了大量未见过的新日志的处理难题。②CoT 使模型输出更多的逻辑过程,不仅仅是一个答案,这为生成解释性报告提供了新的思路。通过 CoT prompt,模型的输出内容更加丰富,报告更加完整,逻辑也更清晰,同时释放了其预训练阶段的潜力。

图片

我们探索了一个叫 LogPrompt 的方案,把 CoT prompt 的思想引入日志分析任务,出发点是模拟运维工程师的思考过程。人类工程师在判断日志异常或正常时,会根据系统手册和经验逐步分析,而不是直接得出结论。

基于这个原则,我们设计了两种方法:Implicit CoT 和 Explicit CoT。Implicit CoT 让模型解释每条结论的理由,生成隐式的思维链,类似于“think step by step”。Explicit CoT 则定义了解决问题的四个步骤,判断日志异常时,先检查文本内容中是否有明确的告警字样,然后再进行下一步;如果没有,则排除异常。我们用领域知识教模型如何判定异常,并将其浓缩在一个 Prompt 中。相比标准 Prompt,我们增加了一个 CoT 模块,隐式或显式地指导模型思考过程。

图片

我们还探索了一些其他 Prompt application 策略,比如 Self-prompt,让大模型自己生成 Prompt。首先给它一个原始的 meta-prompt,完整描述任务,例如日志解析。任务是从日志中提取公共部分作为模板,其余部分作为变量。我们告诉大模型它现在是一个 Prompt 工程师,请它想出五个用于执行任务的 Prompt。然后,筛选出这五个 Prompt 中表现最好的一个,使用 100 条测试集进行测试,并分析其表现。

另一个策略是 In-context Prompt,这涉及在描述任务后,给出一些例子,例如十个例子,五个正例,五个负例,全都拼接在后面,希望模型根据这些例子构建任务的上下文。

还有一个策略是 Format Control,用于控制日志的输入和输出格式。格式控制可以减少随机性,避免解析失败。

图片

我们进行了一系列实验,实验设置来自于 LogHub 数据集,其中包含了各种真实收集的日志数据,包括来自 HDFS、Hadoop、Zookeeper 的,软件、操作系统以及手机的日志。其中,BGL 和 Spirit 数据集都有专家标注的异常标签,其余数据集则有人工打的模板。在我们的主实验中,使用了 ChatGPT 的 API,这个实验是去年进行的,包括 temperature 等各项参数都进行了设置。对于训练集和测试集的划分,选择按照时间顺序进行划分,即选取时间上出现的前 10% 的数据作为训练集。

图片

第一个实验显示,LogPrompt 在零样本日志分析场景中表现良好,减少了对训练数据的依赖。我们首先看左边,日志解析中的零样本场景是指算法没有任何训练输入,每个日志都是新的,没有历史日志。相比之下,传统算法需要训练数据。我们使用10% 的数据进行训练,模拟在线场景,因为以前的研究也有类似的做法。实验表明,在八个领域中,LogPrompt 在六个领域取得了最佳效果,平均来看也是最佳。

再看日志异常检测,与之前类似,baseline 算法使用前 4000 条日志进行训练,后续进行测试,而 LogPrompt 没有进行训练。结果显示 LogPrompt 再次取得了最佳结果。因此,LogPrompt 是在线日志分析的良好选择。这主要归功于 ChatGPT 的强大泛化能力和我们注入的领域知识。

图片

接下来关注 LogPrompt 的可解释性。我们提出了一个新任务,称为 Log Interpretation。从之前提到的八个领域中随机筛选了 200 条日志,并请六位业界 AIOps 专家进行人工评测。输入为原始日志,输出要求 LogPrompt 进行解释,例如异常检测需说明原因,日志解析需解释日志内容。

我们制定了评分标准,分为两个维度:有用性(Usefulness)和可读性(Readability),评分从 1 到 5。有用性(Usefulness)指生成的解释是否详尽、具体、相关且逻辑正确,对实际运维是否有帮助。可读性(Readability)则关注生成内容是否易于理解。左下角展示了评分结果,包括平均分和高分率(评分 4 分及以上)。从平均分来看,六位专家的评分基本都在四分以上,高分率也很高,虽然个别评分有波动。

图片

我们还收集了一些评分专家的反馈,他们普遍认为 LogPrompt 对 AIOps 有帮助。例如,有专家提到,当新设备插入网络时,日志可能不熟悉,通常需要查找说明书,但 LogPrompt 可以快速提供解释,比查官方定义快很多。还有专家表示,该工具能帮助快速生成异常报告,在需要召开会议时很有用。

另一个关键点是误报处理。系统报告异常时,不知道是否需要处理,如果 LogPrompt 能提供简短解释,可能有助于处理误报。我们也做了一些坏案例(Bad Case)分析,发现 ChatGPT 在特定领域的知识不足,例如对某些日志的特定术语和无语义信息的日志解释不够,这是后期需要优化的方向。

图片

我们对三种 Prompt 策略进行了消融分析。第一个是 Self-prompt 和生成的五个 Prompt,测试结果显示 Prompt2 表现最好。我们发现,如果 Prompt 中包含更多的正式、精确的词,如"standards"和"convert",LLM 的表现可能会变好。另一方面,对中间过程的描述更清晰也能帮助 LLM,例如 Prompt2 中的"identify the replace"。

第二个消融研究是关于 CoT prompt,包括简单 Prompt、implicit CoT(要求 LLM 解释理由)和按照我们规定的步骤解析。有趣的是,仅仅让 LLM 在给出答案时解释理由就能大幅提升表现。我们认为这是因为预训练阶段训练了大量逻辑丰富的语料,当要求 LLM 给出理由时,逻辑链会变得更清晰,这更符合预训练的范式。

第三个消融研究是关于 In-context Prompt,我们改变了输入上下文样本的数量。结果显示,过少或过多的上下文样本都会影响 LLM 的表现。过少的样本无法建立足够的上下文,而过多的样本可能会产生注意力噪声,导致 LLM 过度关注样本而忽略任务本身。

图片

在探索 LogPrompt 之后的应用方向时,发现将这套方法应用到工业界仍存在挑战。当前的模型如 ChatGPT、Gemini 和 Cloud 等,都是基于 API 的,具有脆弱性,可能随时无法使用。因此,我们考虑开发可以部署的小型 LLM 用于 LLMOps。

我们进行了初步实验,使用了 Vicuna 13B 小模型,它可以直接部署。我们使用 Simple Prompt 和 LogPrompt 对日志异常和日常日志解析任务进行测试。尽管 Vicuna 只有 13B 的参数,但在 HDFS、Linux 和 ProxFire 等领域的表现已接近于 ChatGPT。我们认为,小模型有潜力完成这些任务,并且高级 LogPrompt 策略在小模型上也有效。然而,在许多领域的表现仍不理想,提升有限,离实际应用还有距离。Vicuna 等小模型缺乏日志或运维相关语料的训练,知识容量也较小,因此我们可能会对其进行知识注入和领域适应,来提升其性能。

03

LLMOps 持续成长源动力:CoachLM 打造 Prompt learning 数据飞轮

图片

在讨论如何编写 Prompt 以便大模型更好地理解人类时,另一个关键点是数据飞轮。为了进行知识注入,我们需要大量训练数据,这就需要我们构建一个 Prompt Learning 的数据飞轮。

以下是我们部署的 Prompt Learning 数据飞轮的过程:①使用开源数据集如 Alpaca,并对其进行泛化,生成合成数据,然后优化质量(机器生成的数据质量可能不高);②进行质量评测,包括人工编辑,得到高质量的子集;③对这些数据进行模型评价,再让模型生产新数据。

这个数据飞轮的核心是 Prompt 优化,通过自动优化模型 CoachLM 对训练数据进行优化。

图片

我们目前在做的是通用的模型,可以应用于 AIOps 领域,但不仅限于 AIOps,目的是解决机生 Prompt 训练数据质量不稳定和模型性能下降的问题。以 Alpaca 开源数据集为例,它是通过 GPT 合成的,这样的数据可以用于 AIOps。但数据质量需要人工评估和优化,这非常耗时耗力。实验表明,人工优化确实有效,但效率极低。

为了解决这个问题,我们提出了一个自动优化数据的模型。这个模型不仅解决表面问题(如缺少输入),还处理深层次问题(如事实错误)。关键是避免低质量 Prompt 数据堆积,防止训练效果下降和 AI 能力受损。

业界的解决办法是对大模型生成的数据集进行小批量过滤,只有 10% 的数据用于训练。这导致大量数据被过滤,损害了全面性。例如,Alpagasus 模型的代码逻辑被过滤掉,缺失了数学推算能力。

图片

本质上我们使用的是一种称为 Coach Instruction Tuning 的方法。目前,我们让语言专家标注了大约 2000 条数据,并经过了专家的人工优化。然后,我们使用大模型的指令微调技术,构造了这些修改范例,让模型学习专家的优化思路。最终,在真正训练之前,我们使用 CoachLM 模仿专家的修改思路对生成的合成数据进行优化。

图片

上图中给出了一些例子,可以看到,原始数据较为简洁甚至是简陋的,经过 CoachLM 优化后,其逻辑链和思维链变得更为完整丰富,给出了许多思辨过程。

图片

我们进行了一些实验,看到了数据质量的全面提升。左侧是原始的 Alpaca 数据集,右侧是我们优化过的 5 万条数据,使用 ChatGPT 对这些数据进行评分,结果显示优化后的数据质量普遍较高,得分 4.5 以上的数据占比从 17% 增长到了 78%。此外,我们还从六个维度对数据进行了人工评分,对其进行了全面的评估。

图片

我们用这批数据训练了一个模型,并在开源的 benchmark 上进行了测试。结果显示,我们的 7B 模型取得了最佳成绩,超越了所有开源模型。我们还与更强的模型进行了对比,结果发现我们全面超过了 Vicuna-13B 模型,并在五项测试中取得了最佳成绩。

图片

接下来,我们计划将工作扩展到多语言方向。目前大量开源模型主要用英语训练,对多语言支持不佳。我们的实验表明,Coach 的优化效果与基座关系密切,如果基座效果不好,Coach 的效果也会不好。因此,我们未来的方向是通过增量预训练或多语言指令微调,增强模型的多语言能力。

04

未来畅想

图片

结尾部分是对未来的畅想。现在已经进入全模态时代,到 2026 年可能会由两大引擎推动全模态 LLMOps 的发展,即 Prompt application 对齐引擎和 Prompt learning 学习引擎。文本和图片模态将得到进一步支持,语音助手可以一键解决问题,甚至视频平台也可能纳入其中,为 LLMOps 提供全模态支撑。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

标签:Prompt,训练,模型,引擎,LLMOps,日志,数据,我们
From: https://blog.csdn.net/zhishi0000/article/details/141707510

相关文章

  • 科普文:软件架构数据库系列之【MySQL存储引擎InnoDB】
    概叙科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】-CSDN博客前面我们梳理了MySQL体系结构,涉及到innodb的并未进行详细说明,故在此文中进行补充说明。为了更好的理解Innodb,这里还是和前面MySQL体系结构一文中一样,保持一样的结构。重复的章节就不再描述,重点描......
  • The Power of Scale for Parameter-Efficient Prompt Tuning
    系列论文研读目录文章目录系列论文研读目录论文题目含义Abstract1Introduction2PromptTuning2.1DesignDecisions2.2UnlearningSpanCorruption3Results3.1ClosingtheGap3.2AblationStudy4ComparisontoSimilarApproaches5ResiliencetoDomainShif......
  • 电商领域的新引擎:API接口的革命性应用
     在数字化转型的大潮中,电商行业正经历着前所未有的变革。API接口,作为连接不同系统和服务的桥梁,正在成为电商领域的新引擎。本文将探讨电商API接口如何助力企业释放数据潜力,驱动业务增长。一、电商API接口:连接的力量API(ApplicationProgrammingInterface)接口是软件系统之间交互的......
  • 电商领域的新引擎:API接口的革命性应用
    在数字化转型的大潮中,电商行业正经历着前所未有的变革。API接口,作为连接不同系统和服务的桥梁,正在成为电商领域的新引擎。本文将探讨电商API接口如何助力企业释放数据潜力,驱动业务增长。一、电商API接口:连接的力量API(ApplicationProgrammingInterface)接口是软件系统之间交互......
  • AI大模型prompt "自洽性"和"思维树" 这两种的区别
    一个是从多个角度对同一问题给出不同解答,选择最好的那个另外一个就像一棵树,有主干,还有分支,每个分支上还有更细分的理由比如:自洽性夏季气温升高是因为太阳光线更直接地照射到地球上。在夏天,太阳的光线以更垂直的角度到达地球表面,导致热量更集中。夏天,白天时间长,太阳照射的......
  • 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 从不同的来源摄取数据
    摄取API在这节教程中,我们将介绍如何使用IngestAPI向Quickwit发送数据。要跟随这节教程,您需要有一个本地的Quickwit实例正在运行。https://quickwit.io/docs/get-started/installation要启动它,请在终端中运行./quickwitrun。创建索引首先,我们创建一个无模式的索......
  • 【Rust光年纪】解锁Rust开发新姿势:数据库客户端和搜索引擎库探秘
    用Rust打造高效应用:数据库客户端与搜索引擎库全攻略前言随着Rust语言的不断发展,越来越多的优秀库和工具涌现出来,为开发者提供了更多选择和便利。本文将介绍几个用于Rust语言的数据库客户端和搜索引擎库,它们在不同领域都展现出了强大的功能和灵活的应用场景。欢迎订阅专......
  • springboot+vue+mybatis计算机毕业设计电影影评的垂直搜索引擎+PPT+论文+讲解+售后
    近年来,科技飞速发展,在经济全球化的背景之下,大数据将进一步提高社会综合发展的效率和速度,大数据技术也会涉及到各个领域,而爬虫实现网站数据可视化在网站数据可视化背景下有着无法忽视的作用。管理信息系统的开发是一个不断优化的过程,随着网络大数据时代的到来,管理信息系统与大......
  • 分布式搜索引擎 数据聚合详解
    1.数据聚合**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效......
  • JuiceFS元数据引擎PostgreSQL
    使用PostgreSQL作为JuiceFS元数据引擎,各表的含义和字段做一个简单归纳juicefs数据库用于存储juicefs文件信息postgres=#\lListofdatabasesName|Owner|Encoding|LocaleProvider|Collate|......