@harold_matmul: 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 有一定的价值,并可能促使你重新思考你的工作流程 :)
如果你有问题,请随时联系我。我的私信始终开放,欢迎讨论有趣的研究和工程问题。
相似文章
@lateinteraction: dspy.GEPA 用于新微软 AI 努力的预训练数据整理 :-)
来自 dspy 的 GEPA 优化的 LLM 判断器用于微软 MAI-Thinking-1 模型预训练流程中的数据过滤。
@harold_matmul: 这是我的主意 :) 使用GEPA创建LLM程序是一种非常自然的工作流。迭代速度非常快,……
用户感谢GEPA工具,强调其为LLM程序提供了自然的工作流、快速的迭代速度,以及利用数据-derived priors偏置优化的能力。
@MaximeRivest: 面向图像的复合 AI 系统被严重低估了。我们需要 gepa、dspy、autoresearch 风格的优化方案,来实现从……
Maxime Rivest 指出,面向图像的复合 AI 系统目前被严重低估,他建议借助 DSPy 和 GEPA 等优化框架,实现涉及 SAM 与分类器的流水线自动化构建。
@shawntenam:GEPA(http://github.com/gepa-ai/gepa)通过自动优化提示指令,把 Haiku 4.5 的通过率从 65% 提升到 85%
GEPA 是一款开源工具,可基于执行轨迹和评分自动优化提示指令,无需更换模型,就能将 Claude Haiku 4.5 的通过率从 65% 提升到 85%。
GEPA:反思式提示演化可超越强化学习
GEPA 是一款提示优化器,利用自然语言反思从试错中学习,在多个任务中,以多达 35 倍的更少 rollout 次数超越了 GRPO 和 MIPROv2 等强化学习方法。