告别手动调优LLM:GEPA提示优化实践

harold_matmul 发布于 2026-06-04 阅读 59

本文介绍了dspy.GEPA(一种基于遗传帕累托的提示优化工具),强调其在机器学习社区中尚未得到足够重视。

图像

我认为 GEPA(也称为 dspy.GEPA)在机器学习社区仍然被严重低估了。

感谢 @lateinteraction@LakshyAAAgrawal(以及其他贡献者)。非常感谢他们作为先驱,创建了“现代 AI 工程”的基石。

我在微软 AI 的预训练数据整理中成功使用了 GEPA,所以我想简要概述一下为什么我会选择这个工具 :)

引用文章

如果要我用一句话总结这篇文章:

dspy.GEPA 让我能够通过花费计算资源(而非人类时间)来调优特定任务的 LLM。

作为一名深度学习研究员,我的生产力和影响力一定程度上取决于我能否保持 GPU 忙碌,以及能否通过花费计算资源来有效替代手动劳动。

在这种思维模式下,GEPA(以及 DSPy)是非常棒的工具。

但不仅如此。围绕 GEPA 组织你的工作,还能成为一个很好的强制机制,让你养成良好的实验习惯,因为它会奖励你为任务创建评估(这一点你应该始终做到!)。

不过,我有点说得太远了。

为什么以及何时需要它?

我们作为用户,希望让一个 LLM 很好地完成一项任务(例如分类、排序、代码生成、评分)。

我们如何处理这个任务?

最简单的方法就是直接调整提示词。下面让我们看看 GEPA 如何提供帮助。

旧方法

查看你的数据,理解任务细节(最好标注并构建一个评估)。

重复这个循环直到满意为止:

  • 编写提示词
  • 运行推理
  • 手动分析失败模式(或许你还有一个评估分数)

仅调优本身可能就需要几个小时,而且只对你选择的特定 LLM 有效。

使用 GEPA:

查看你的数据,理解任务细节(最好标注并构建一个评估)。

编写一个 dspy.GEPA 优化循环。

运行提示词调优循环。

现在你拥有了针对任务优化的提示词。

这非常棒!唯一需要的手动劳动就是查看数据。调优只需几分钟,并且可以轻松地对任何 LLM 重新运行。

使用 GEPA 进行提示词调优是如何工作的?

我不会深入细节,因为其他人解释得更好(参见 GEPA 网站)。

在高层面上,它就是一个循环,根据某个评分器和反思 LLM 来优化任务提示词。

看看这个图表。

图像

GEPA 提示词调优概览

反思 LLM 通常是一个非常强大的 LLM,例如 Opus 或 GPT 5.5,能够理解并总结主 LLM 所犯的错误。

准确地说,在这个循环中,GEPA 是优化器,其缩写意为“遗传-帕累托”,这很好地概括了优化器如何选择其最佳候选方案。

可以预料,优化循环的好坏取决于目标函数,因此当我们构建良好的评估时,会得到明确的回报!

关于评估的说明

在前面的段落中,“评估”这个词有点过载,因为它实际上包含:

  • 训练/验证样本,
  • 以及评分器本身(评分器是特定于任务的,可以由人类标签和/或奖励模型组成——可以是任何东西,但一个或多个 LLM 评分规则通常就能解决问题)。

请注意,在上面的循环中,评分器会同时返回分数和文本反馈。

这是额外的灵活性,因为我们的优化是由 LLM 驱动的。这可以给优化器提供更多信号,指示哪个解更受青睐。

使用案例

为了激励读者,我在这里列举几个我使用 dspy.GEPA 的场景。

  • 网页质量分类。这在 MAI-Thinking-1 论文 中提到。对于 STEM 网页,评分器是一个 LLM 规则评分器,用于评判格式和推理。对于代码网页,评分器主要是人类标签。
  • 人类与 GEPA 协同的循环 接口,用于引导标注几千个标签,以训练一个嵌入分类器。
  • 逆向工程未充分指定的人类偏好/先验。你可以标注 100 个样本(好/坏),然后调优 GPT-5.5 以匹配人类标签。然后你可以读取提示词,看看你的先验是否可以明确表达出来。

为什么选择提示词调优?

有人可能会问一个非常合理的问题:“我为什么要使用提示词调优,而不是微调模型,或者使用基于嵌入的分类器?”

答案归结于这三个因素对你的重要程度:

  • 质量
  • 获得第一个解决方案的时间
  • 规模(或成本)

前两个因素通常对我来说最重要,而使用 LLM 进行提示词调优很容易满足这两点。

确实,我们得到了:

  • 无需托管即可调优强大的外部模型。
  • 灵活性。 我们可以非常轻松地切换主 LLM 并重新运行优化循环,这使我们能够计算出质量与成本的帕累托前沿。
  • 易用性。 在运行任务管道时,对于同一个模型,我们可以随时切换许多不同的提示词,以适应数据的不同分布。
  • 无训练-推理不匹配。 假设我想大规模运行 LLM 推理,我可以预先选择推理设置(nvpf4、fp8 kv cache、特定内核),然后使用这些特定数值运行 GEPA 调优。
  • 我们可以使用推理能力。 这会显著降低吞吐量,但对于难题(如评估数学正确性)可能是必要的。这在使用更可扩展的方法(如基于嵌入的分类器)时是不可能的。
  • 优化循环速度快。 这取决于搜索的详尽程度,但运行一个 GEPA 调优循环可以从几分钟到几小时不等。

得益于上述灵活性,我可以在一天内为我的任务找到一个解决方案,计算出任务的质量与成本帕累托前沿,或许运行一个消融实验,然后决定是否需要扩大规模。

我们可以降低成本,例如,将调优后的 LLM 决策蒸馏到基于嵌入的分类器中,或者使用更小的量化 LLM。

结论

亲爱的读者,如果你读到了这里,谢谢你!我希望这篇文章能让你相信 GEPA 有一些价值,也许还能让你重新思考你的工作流程 :)

如果你有问题,欢迎联系我。我的私信始终对有趣的研究和工程问题开放。

  • 原文链接: x.com/harold_matmul/stat...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论