跳到内容

DSPy 中的优化

一旦你构建了一个系统并有了评估它的方法,就可以使用 DSPy 优化器来调整程序中的提示或权重。现在,除了用于探索的开发集之外,将数据收集工作扩展到构建训练集和保留测试集会很有用。对于训练集(及其子集,验证集),通常从 30 个示例中就能获得可观的价值,但目标是至少 300 个示例。有些优化器只接受 trainset。其他优化器则要求 trainsetvalset。对于提示优化器,我们建议从训练集的 20% 和验证集的 80% 的比例开始,这通常与 DNN 的做法相反

进行几次优化运行后,你可能会对一切都非常满意,或者取得了很大进展但对最终程序或指标的某些方面不满意。此时,请回到步骤 1(DSPy 编程)并重新审视主要问题。你是否很好地定义了任务?你需要为你的问题收集(或在线查找)更多数据吗?你想更新你的指标吗?你想使用更复杂的优化器吗?你需要考虑 DSPy Assertions 等高级功能吗?或者,也许最重要的是,你是否想在 DSPy 程序本身中添加更多的复杂性或步骤?你想按顺序使用多个优化器吗?

迭代开发是关键。DSPy 提供了让你逐步实现迭代的组件:迭代你的数据、程序结构、断言、指标和优化步骤。优化复杂的 LM 程序是一个全新的范例,在撰写本文时仅在 DSPy 中存在(更新:现在有许多 DSPy 扩展框架,所以这部分已不再真实 :-),因此自然地,关于如何做的规范仍在形成中。如果你需要帮助,我们最近为社区创建了一个 Discord 服务器