随着大型语言模型(如GPT-4和Mixtral 8x7B)的发展,现在可以处理更长、更复杂的输入,这使得使用更精细的提示成为可能。然而,为了提高部署性能,这些提示通常需要进行一些调整。尽管最近有研究提出了自动提示优化方法, 但随着提示的复杂性和LLM的强大程度增加,许多现有的提示优化技术已经不再适用 。因此,需要一种新的方法来优化元提示程序(meta prompt programs)。
一个针对评论分类任务的简单元提示 。SAMMO将元提示表示为一个动态函数图,其中每个节点根据其子节点的结果、输入数据X以及节点特定的参数θ计算出一个新值。在这里,使用输入数据X的节点用浅灰色标记。
SAMMO 是一个用于优化大型语言模型(LLMs)中元提示(metaprompts)的框架,通过将提示表示为结构化对象,允许在编译时进行丰富的转换搜索,从而解决了这一问题。该框架将提示的各个操作和部分表示为调用图中的组件,类似于DSpy。SAMMO不仅允许改变这个调用图,还代表了提示的内部结构,并将“编译时”优化泛化到所有提示组件(例如文本内容、超参数)。
SAMMO 是一个灵活的框架,用于结构化提示优化,根据所使用的变异操作符集,提供了两类搜索算法。
SAMMO框架通过以下几个关键特性来实现高效的提示优化:
-
结构感知:SAMMO能够识别和操作提示的内部结构,将其视为由多个组件构成的程序。这种方法使得SAMMO可以对提示的不同部分进行细粒度的调整。
-
多目标优化:SAMMO不仅关注单一的性能指标,如准确性,还能够同时考虑多个优化目标,例如减少提示的长度、提高响应速度或降低计算成本。
-
丰富的变异操作:SAMMO提供了一系列变异操作符,这些操作符可以对提示的结构和内容进行各种修改,如改写文本、调整格式、增减示例等。
-
灵活的搜索算法:根据所使用的变异操作符的不同,SAMMO可以采用不同的搜索策略,例如穷举搜索(如网格搜索)和迭代搜索(如束搜索、随机搜索等)。
-
编译时优化:SAMMO专注于在提示部署之前的编译时阶段进行优化,这意味着通过一次性的优化过程,可以生成适用于多次调用的高效提示。
-
黑盒优化:SAMMO设计为在黑盒设置中工作,其中用户只能从LLMs的输出中采样,这反映了当前API能力的常见情况。
通过三个场景展示了SAMMO的实用性:(1)指令调整,(2)检索增强生成(RAG)管道调整,以及(3)注释任务的提示压缩。实验表明,SAMMO在这些任务中的性能提升显著,分别在 指令调整、RAG调整和提示压缩方面提高了10-200%、133%和超过40%的性能 。复杂的提示需要针对每个LLM进行单独优化,且对于较弱的LLMs,性能提升更为明显。
指令微调评测: SAMMO始终优于所有其他指令调整方法,Llama-2-70B观察到相对性能提升最大( 大约2倍 ),Mixtral 7x8B提升适中,而GPT-3.5的提升最小(与基线指令相比 约为10% ) 。
RAG优化评测: SAMMO在仅有24个候选评估的情况下,有效地提高了所有语义解析数据集和后端大型语言模型(LLMs)的基线提示准确性。Llama-2的平均提升率为 133% ,
Mixtral为 44% 。然而,即使是GPT-4也能从SAMMO探索的变化中受益,平均相对提升
率为
30%。
SAMMO能够在保持 高准确性的同时实现高压缩率 。而GPT-4的重写导致简短的提示,在测试集上的表现不佳。
Prompts As Programs: A Structure-Aware Approach to Efficient Compile-Time Prompt Optimization
https://arxiv.org/pdf/2404.02319.pdf
https://github.com/microsoft/sammo.
推荐阅读
- • 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。