微软SAMMO:结构化感知的多目标Prompt优化框架,大幅提升SFT与RAG微调效果!
来源:互联网
时间:2026-07-29 15:45:33
随着大型语言模型的能力越来越强——比如GPT-4、Mixtral 8x7B这些大家伙——它们现在能啃下更长、更复杂的输入文本,这让精细设计的提示词有了用武之地。但问题在于,真到了部署环节,这些提示词往往得调一调才能发挥出最佳性能。虽说最近冒出了不少自动优化提示的方法,但提示越来越复杂,模型也越来越聪明,很多老办法就不太灵了。所以,得换个思路,来优化这些“元提示程序”(meta prompt programs)。
上图展示了一个针对评论分类任务的简单元提示。SAMMO的核心思路,是把元提示表示成一个动态函数图:每个节点根据子节点的结果、输入数据X以及节点自身的参数θ,来计算一个新值。图中用浅灰色标记的节点,就是使用了输入数据X的节点。
**SAMMO**是一个专门用于优化LLM中元提示的框架。它把提示看作结构化对象,在“编译时”就能进行丰富的转换搜索——这正好解决了前面提到的痛点。具体来说,SAMMO将提示中的各个操作和部分表示为调用图中的组件(跟DSpy类似),但它不仅允许改变调用图本身,还能深入表示提示的内部结构,把“编译时”优化推广到所有提示组件上,比如文本内容、超参数等等。基于不同的变异操作符集合,SAMMO提供了两类搜索算法,灵活性相当高。
那么,SAMMO是怎么做到高效优化的呢?靠下面几个关键特性:
1. **结构感知**:SAMMO能识别并操作提示的内部结构,把它看作由多个组件构成的程序。这样一来,就能对提示的不同部分做细粒度的调整,而不是笼统地改一改。
2. **多目标优化**:它不只盯着单一指标(比如准确率),而是能同时兼顾多个目标,比如缩短提示长度、提升响应速度、降低计算成本。哪个重要,你说了算。
3. **丰富的变异操作**:SAMMO内置了一组变异操作符,可以对提示的结构和内容做各种修改,比如改写文本、调整格式、增减示例等。玩法很多。
4. **灵活的搜索算法**:根据使用的变异操作符不同,搜索策略也可以切换,从穷举搜索(像网格搜索)到迭代搜索(比如束搜索、随机搜索),按需选择。
5. **编译时优化**:它专注于提示部署之前的一次性优化,效果可以反复利用,不用每次调用都重新折腾。
6. **黑盒优化**:SAMMO设计成在黑盒环境下工作,用户只能从LLM的输出中采样,这正好匹配当前绝大多数API的实际情况。
通过三个具体场景,SAMMO的实用性得到了验证:指令调整、检索增强生成(RAG)管道调整,以及注释任务的提示压缩。实验结果非常亮眼——**指令调整提升10%–200%,RAG调整提升133%,提示压缩提升超过40%**。有意思的是,复杂的提示需要针对每个LLM单独优化,而且对于能力较弱的LLM,性能提升更明显。
**指令微调评测**:SAMMO在所有对比方法中始终领先。Llama-2-70B的进步最夸张——**大约提升了2倍**;Mixtral 7x8B的改进适中;GPT-3.5的提升最小(相比基线指令**大约10%**)。
**RAG优化评测**:只用24个候选评估,SAMMO就有效提升了所有语义解析数据集和后端LLM的基线提示准确率。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
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名