专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
中核集团  ·  校园招聘🤗 ·  昨天  
松阳警方  ·  以“新”为帆,奋力开拓外贸新空间 ·  昨天  
松阳警方  ·  以“新”为帆,奋力开拓外贸新空间 ·  昨天  
中核集团  ·  校园招聘🤩 ·  2 天前  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

提示作为程序:一种编译时结构-觉察高效提示优化的方法

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2024-06-07 00:42

正文

24年5月来自微软研究院的论文“Prompts As Programs: A Structure-Aware Approach to Efficient Compile-Time Prompt Optimization”。

大语言模型 (LLM) 现在可以处理更长、更复杂的输入,从而有助于使用更复杂的提示。但是,提示通常需要进行一些调优才能提高部署性能。最近的研究提出了自动提示优化方法,但随着提示复杂性和 LLM 强度的增加,许多提示优化技术已不够,需要一种新的方法来优化元提示程序。为了解决这个问题,SAMMO,用于编译时优化元提示程序的框架,它将提示表示为结构化目标,允许在优化期间搜索一组丰富的转换。

代码开源 https://github.com/microsoft/sammo


SAMMO 是一种通用的提示程序编译时优化框架。各个操作和提示部分用一个调用图中的组件表示,其精神类似于 DSpy (Khattab,2023)。然而,SAMMO 超越了之前的工作,(i) 允许更改调用图 (ii) 表示提示的内部结构,以及 (ii) 将“编译时”优化推广到所有提示组件(例如文本内容、超参数)。它将元提示视为程序——允许模块化构建复杂提示并促进更有效的提示的编译。

具体来说,SAMMO 将元提示表示为结构化目标,这允许在优化过程中搜索更丰富的转换集。将优化形式化为搜索复杂元提示 π 结构的问题,其中可能包括许多结构化组件,例如:任务描述、指南、示例和输入/输出格式。请注意,元提示被设计为在运行时与不同的输入数据 X 动态组合,即 LLM(π[X]) = Y 。

如图是用于一个评论分类任务的简单元提示。SAMMO 将元提示表示为动态函数图,其中每个节点根据其子节点的结果、输入数据 X 以及特定于节点的参数 θ 计算新值。此处,输入数据 X 的节点标记为浅灰色。


这里专注于在部署元提示之前只能进行一次优化,称之为编译时优化。 更正式地说,优化本身是一个返回另一个函数(元提示)的函数。 这与运行时优化不同,运行时优化使用已填入的元提示调用优化器,然后提示 LLM。 此优化过程需要针对每个不同的输入数据 X 重复执行。 由于目标是在多次使用元提示时分摊优化成本,因此不再考虑运行时优化。 但是,如果有足够的资源,运行时优化可以补充编译时优化。

为了在所有元提示的指数级大空间中高效搜索,考虑它们的复杂程序结构,该结构通常由按顺序执行的参数化组件组成。更具体地说,将元提示 π 的结构表示为有向无环函数图 G。这里 Gπ = (V, E) 是一个具有单个根节点 vr 的 DAG。有向边 eij ∈ E 表示元提示结构组件中的父 (vi) 到子 (vj) 的关系。每个节点 v ∈ V 都有一个函数类 ψv 和静态参数 θv。

SAMMO 是一个用于优化元提示性能的通用框架。SAMMO 使用通用搜索算法和一组丰富的变异算子来探索提示空间。如图概述 SAMMO 的主要组件,这些组件可实现高效的提示优化。首先,有一个编程原语的基础层,可以从中构建更复杂的提示程序。这些构成了元提示函数图 G 的节点。在此之上是一个提示变异算子层,然后将其与最顶层的搜索算法一起使用。


如表是变异算子的示例,按影响元提示π的部分分组。 SAMMO 允许一组丰富的操作,而传统的提示优化技术仅关注改变文本的操作。


SAMMO 提供两类搜索算法。 首先,如果使用的所有变量都是有限的,那么 SAMMO 可以通过枚举搜索探索这个空间,要么彻底搜索(网格搜索),要么随机抽样搜索点(随机搜索)。







请到「今天看啥」查看全文