了解如何实现快速工程自动化,并显著提高 LLM 工作量的性能
这是关于什么的?欢迎来到雲闪世界。
自动提示工程 (APE) 是一种自动生成和优化大型语言模型 (LLM) 提示的技术,旨在提高模型在特定任务上的性能。它采用了提示工程的理念,即手动制作和测试各种提示,并自动执行整个过程。我们将看到,它与传统监督机器学习中的自动超参数优化非常相似。
在本教程中,我们将深入研究 APE:我们将首先了解其工作原理、可用于生成提示的一些策略以及其他相关技术(例如样本选择)。然后,我们将进入实践部分,从头开始编写 APE 程序,即我们不会使用任何像 DSPy 这样的库来为我们完成这项工作。通过这样做,我们将更好地了解 APE 的工作原理,并更好地利用提供此功能的框架。
为什么它很重要?
在与组织合作时,我发现他们经常很难找到针对特定任务的 LLM 最佳提示。他们依靠手动制定和完善提示并对其进行评估。这非常耗时,并且通常会阻碍 LLM 的实际使用和生产。
有时感觉就像炼金术一样,因为我们在尝试不同的提示,尝试不同的结构和说明元素,希望找到最终能达到预期效果的提示。与此同时,我们实际上甚至不知道什么有效,什么无效。
这只是针对一个提示、一个 LLM 和一个任务而言的。想象一下,在有多个 LLM 和数百个任务的企业环境中必须这样做。手动提示工程很快就会成为瓶颈。它很慢,甚至更糟的是,它限制了我们探索 LLM 提供的所有可能性的能力。我们还倾向于陷入可预测的思维模式,这会限制我们提示的创造力和有效性。
例如,我总是倾向于在 LLM 提示中使用相同的老技巧,例如思路链和少量提示。这没有什么错——通常,它们会带来更好的结果。但我总是想知道我是否从模型中“榨干了最多的精华”。另一方面,LLM 可以探索更广泛的提示设计空间,通常会想出意想不到的方法,从而带来显着的性能提升。
我的意思是,谁会想出这样的提示?但在过去几周尝试 APE 时,我一次又一次地看到,LLM 在提出此类提示时非常有创意,我们也将在本教程的后面部分看到这一点。APE 使我们能够自动化提示优化过程,并挖掘 LLM 应用程序的未开发潜力!
自动提示工程的原理
及时工程
经过大量实验后,各组织现在正考虑在生产中使用 LLM 执行各种任务,例如情绪分析、文本摘要、翻译、数据提取和代码生成等。其中许多任务都有明确定义的指标,并且可以立即评估模型性能。
以代码生成为例:我们可以通过在编译器或解释器中运行代码来检查语法错误和功能,从而立即评估生成的代码的准确性。通过测量成功编译的代码百分比以及代码是否真正执行了我们想要的操作等指标,可以快速确定 LLM 在该任务上的表现。
在指标定义明确的给定任务上,提高模型性能的最佳方法之一是提示工程。简而言之,提示工程是设计和改进给 LLM 的输入提示以得出最准确、最相关和最有用的响应的过程。换句话说:提示是可以调整和改进以提高模型性能的超参数之一(其他超参数包括温度、top K等)。
然而,事实证明,手动提示设计非常耗时,需要很好地理解提示结构和模型行为。某些任务也很难准确而简洁地传达指令。而且它本质上不是最优的,因为作为人类,我们没有时间尝试每一个可能的提示及其变化。
这有点像监督机器学习 (ML) 的旧时代中的超参数优化(HPO):手动尝试不同的学习率、时期数、批次大小等不是最优的,也不实用。就像当时自动化 HPO 的兴起一样,我认为,手动快速工程的挑战将导致自动快速工程 (APE)的兴起。
APE 背后的核心思想
在监督式 ML 的自动化 HPO 中,可以使用各种策略系统地探索超参数值的不同组合。随机搜索非常简单直接,只需从定义的搜索空间中抽取固定数量的超参数组合即可。考虑到这一点,一种更先进的技术是贝叶斯搜索,它建立了目标函数的概率模型,以智能地选择最有希望的超参数组合进行评估。 我们可以将相同的原则应用于 APE,但我们首先需要解决的事实是,提示是一种不同类型的超参数,因为它是基于文本的。相比之下,传统的 ML 超参数是数字的,因此可以直接以编程方式为它们选择值。但是,自动生成文本提示要困难得多。但是,如果我们有一个永不疲倦的工具,能够生成无数各种风格的提示,同时不断改进它们,那会怎样?我们需要一个精通语言理解和生成的工具……那会是什么呢?没错,它将是一个 LLM! 事情还不止于此:为了以编程方式评估 LLM 的响应,我们经常需要提取模型响应的本质并将其与基本事实进行比较。有时可以使用正则表达式来完成,但通常这并不容易——模型的响应可以以某种方式制定,以至于正则表达式很难提取实际答案。假设 LLM 需要评估推文的情绪。它可能会分析推文并做出回应 “这条推文的整体情绪是负面的。用户表达了对音乐会体验的不满,并提到他们没有获得积极的体验,因为音乐声太大,他们听不到歌手的声音。” 通过正则表达式提取此分析的本质将非常困难,尤其是因为响应中有两个词(positive和negative)。如果您认为 LLM 擅长快速将这种情绪分析与基本事实(通常只是negative这个词)进行比较,那么您是对的。因此,我们将使用另一个 LLM 来评估模型的响应并计算指标。 之所以有效,是因为我们用 LLM 来完成不同的任务。与 LLM 撰写论文,然后由同一个 LLM 审查和评论该论文的情况不同,我们使用 LLM 来完成彼此独立且完全在其能力范围内的任务。
APE 工作流程
将我们迄今为止讨论的所有内容综合起来,我们得出了以下 APE 运行的工作流程:
添加图片注释,不超过 140 字(可选)
让我们讨论一下这里发生的事情:
-
要开始使用 APE,我们需要准备以下要素:(1) 一个标记数据集,代表我们要为其创建优化提示的任务,(2) 一个初始提示,以及 (3) 一个我们可以进行爬山测试的评估指标。这再次与监督式 ML 中的 HPO 非常相似,我们将在其中带来训练数据集、超参数的初始起始值以及评估指标。
-
从初始提示开始:我们通过将初始提示和数据集发送到目标 LLM 来启动 APE 工作流程,这是我们想要在生产中使用并想要为其创建优化提示的 LLM。
-
生成响应: LLM 将根据数据集和初始提示生成响应。例如,如果我们有 10 条推文,初始提示是“识别此推文中的情绪”,则目标 LLM 将创建 10 个响应,每条推文一个情绪分类。
-
评估响应:由于我们的数据集已贴上标签,因此我们掌握了每条推文的基本事实。评估器 LLM 现在将比较基本事实与目标 LLM 的输出,并确定目标 LLM 的性能并存储结果。
-
优化提示:现在优化器 LLM 将提出一个新的提示。我们将在下面讨论它的具体操作方式。但正如已经讨论过的,这类似于如何选择超参数的新值,并且它们有不同的策略。
-
重复步骤 3-5:生成答案、评估答案和优化提示的过程会反复进行。每次迭代,提示都会得到改进,从而(希望)获得越来越好的 LLM 答案。
-
选择最佳提示:经过一定次数的迭代或达到令人满意的性能水平后,我们可以停止工作流程。此时,性能最佳的提示(以及所有提示的分数)将发送回用户。
这种自动化过程使得 APE 能够在短时间内尝试大量不同的提示,速度比人类快得多。
快速优化策略
现在,让我们深入研究即时优化的策略,从最简单的开始:随机即时优化。尽管简单,但这种策略可以产生令人惊讶的有效结果。
随机提示优化
与随机搜索的 HPO 一样,随机提示优化采用“蛮力”方法。通过这种策略,我们让优化器 LLM 生成一系列随机提示,独立于之前的提示和结果。系统不会尝试从之前的结果中学习;相反,它只是随机探索各种潜在提示。
通过 PROmpting 进行优化 (OPRO)
如果说随机提示优化类似于 HPO 中的随机搜索,那么 OPRO 就类似于贝叶斯搜索。Google Deepmind 在本篇论文中介绍了这一策略。在 OPRO 中,我们利用之前迭代的结果,并积极尝试针对评估指标进行爬山。OPRO 会跟踪所有之前提示的分数,并根据它们在优化轨迹中的表现对这些提示历史进行排序,这成为一个宝贵的信息来源,可引导优化器 LLM 找到更有效的提示。如果这听起来有点抽象,请不要担心——一旦我们从头开始实施这一策略,它就会很快变得清晰。 OPRO 的关键是元提示,它用于指导优化者 LLM。这个元提示不仅包括通常的任务描述和示例,还包括优化轨迹。通过这个提示,优化者 LLM 可以分析优化轨迹中的模式,识别成功提示的要素并避免不成功提示的陷阱。这个学习过程允许优化者随着时间的推移生成越来越有效的提示,从而迭代地提高目标 LLM 的性能。
我们已经回顾了从头开始实施我们自己的 APE 工作流程所需的所有理论概念。但在此之前,我想快速介绍两件事:(1) 介绍小样本提示及其在 APE 中的位置和 (2) 现有的 APE 框架。
超越即时优化:样本选择的一瞥
虽然提示优化在 APE 中起着至关重要的作用,但它并不是我们工具箱中唯一的工具。在深入研究另一种强大的技术之前,让我们快速绕道讨论一下少样本提示。您可能已经知道,LLM 有时需要一些正确的指导。我们可以为他们提供一些所需输出的示例,而不是仅仅向他们提供说明并希望他们获得最好的结果。这称为少样本提示,它可以显著增强 LLM 对手头任务的理解和表现。
可以通过样本选择将小样本提示添加到 APE ,旨在为给定任务找到最佳的小样本示例,从而进一步提高优化提示的有效性。想法是,一旦我们通过 OPRO 找到了表现良好的优化提示,我们就可以使用一些示例来尝试进一步提高目标 LLM 的性能。这就是样本选择的用武之地:它系统地测试不同的示例集并跟踪它们的性能。就像提示优化一样,它会自动确定给定任务和给定(优化)提示的最佳小样本示例。 这是 APE 领域中另一个具有巨大潜力的研究领域,但就本篇博文而言,我们将只关注即时优化。我将把探索样本选择留作一项练习,供您改进即时优化。
现有的 APE 框架
您可能还会想:“如果 APE 如此强大,那么是否有工具/库/框架可以为我做到这一点?”答案当然是肯定的!像DSPy这样的库提供了现成的解决方案来实现快速优化(和样本选择)技术。这些库在幕后处理复杂的算法,因此您可以专注于使用 APE,而不必陷入技术细节中。 但是,虽然这些库无疑很有用,但它们通常像黑匣子一样运行,隐藏了优化过程的内部工作原理。然而,这篇博文和教程的目的是让我们了解幕后发生了什么。为此,我们将亲自动手编写一些代码,我们现在就开始吧!
标签:指南,prompt,提示,实用,LLM,自动化,优化,我们,APE From: https://blog.csdn.net/2401_85233349/article/details/141906944