@harold_matmul: dspy.GEPA 用于新微软AI工作中的预训练数据筛选 :-)

X AI KOLs Timeline 工具

摘要

本文解释了DSPy中的GEPA(基因-帕累托优化)如何用于高效的提示调优,特别是在微软AI的预训练数据筛选中应用,使研究人员能够用自动化的计算驱动优化取代手动提示工程。

dspy.GEPA 用于新微软AI工作中的预训练数据筛选 :-)
查看原文
查看缓存全文

缓存时间: 2026/06/24 20:29

dspy.GEPA 在新微软 AI 工作中的应用 :-)


你还在手动调优你的 LLM 吗?——GEPA 赞歌

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

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

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

Omar Khattab@lateinteraction·6月3日
dspy.GEPA 在新微软 AI 工作中的应用 :-)
引用
Lakshya A Agrawal@LakshyAAAgrawal·6月3日
很高兴看到 MAI-Thinking-1 模型的预训练流程中使用 GEPA 优化的 LLM 评判器进行数据过滤! x.com/mustafasuleyma…102525719K

如果必须用一句话总结这篇文章:

dspy.GEPA 让我通过花费算力而不是人类时间来调优任务特定的 LLM。

作为深度学习研究员,我的生产力和影响力在一定程度上取决于 我让 GPU 保持忙碌的能力,以及用算力代替手动劳作的能力

在这个思路下,GEPA(以及 DSPy)是非常棒的工具。

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

但我有点说远了。

为什么以及何时需要它?

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

我们应该如何处理这个任务?

最简单的方法就是调整提示。让我们看看 GEPA 为什么有帮助。

传统做法

  • 查看数据,理解任务细节(最好标记并构建评估)

  • 重复以下循环直到满意:

  • 编写提示

  • 运行推理

  • 手动分析失败模式(可能还有评估分数)

仅调优就可能花费数小时,而且取决于你选择的 LLM。

使用 GEPA:

  • 查看数据,理解任务细节(最好标记并构建评估)

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

  • 运行提示调优循环

  • 现在你有了针对任务优化的提示

这相当不错!唯一需要的手动工作就是查看数据。调优只需几分钟,而且可以轻易地对任何 LLM 重新运行。

GEPA 如何实现提示调优?

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

简单来说,它就是一个循环,根据某个评分器和反思 LLM 来优化任务提示。

请看这张图。

GEPA 提示调优概览

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 缓存、特定内核),然后使用这些具体的数值运行 GEPA 调优。

  • 可以使用推理。这会显著降低吞吐量,但对于困难问题(如评估数学正确性)可能是必需的。 使用嵌入分类器等更可扩展的方法无法做到这一点。

  • 优化循环速度快。这取决于搜索的详尽程度,但运行一个 GEPA 调优循环只需要几分钟到几小时。

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

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

结论

亲爱的读者,如果你读到了这里,谢谢你!希望这篇文章能让你相信 GEPA 有一定的价值,并可能促使你重新思考你的工作流程 :)

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

相似文章

GEPA:反思式提示演化可超越强化学习

Papers with Code Trending

GEPA 是一款提示优化器,利用自然语言反思从试错中学习,在多个任务中,以多达 35 倍的更少 rollout 次数超越了 GRPO 和 MIPROv2 等强化学习方法。