使用MLflow追踪DSPy优化器
本教程演示如何使用MLflow来追踪和分析您的DSPy优化过程。MLflow内置的DSPy集成功能为您的DSPy优化体验提供了可追溯性和可调试性。它让您能够理解优化过程中的中间试验,存储优化后的程序及其结果,并为您的程序执行提供可观测性。
通过自动日志功能,MLflow 跟踪以下信息:
-
优化器参数
- 少量示例的数量
- 候选数量
- 其他配置设置
-
程序状态
- 初始指令和少量示例
- 优化后的指令和少量示例
- 优化过程中的中间指令和少量示例
-
数据集
- 使用的训练数据
- 使用的评估数据
-
性能进展
- 整体指标进展
- 每个评估步骤的性能
-
追踪
- 程序执行轨迹
- 模型响应
- 中间提示
快速入门
1. 安装 MLflow
首先,安装 MLflow (版本 2.21.1 或更高):
2. 启动 MLflow 追踪服务器
使用以下命令启动 MLflow 跟踪服务器。这将在 http://127.0.0.1:5000/ 启动一个本地服务器:
# It is highly recommended to use SQL store when using MLflow tracing
mlflow server --backend-store-uri sqlite:///mydb.sqlite
3. 启用自动日志记录
配置MLflow以追踪您的DSPy优化:
import mlflow
import dspy
# Enable autologging with all features
mlflow.dspy.autolog(
log_compiles=True, # Track optimization process
log_evals=True, # Track evaluation results
log_traces_from_compile=True # Track program traces during optimization
)
# Configure MLflow tracking
mlflow.set_tracking_uri("http://localhost:5000") # Use local MLflow server
mlflow.set_experiment("DSPy-Optimization")
4. 优化您的程序
以下是一个完整示例,展示如何跟踪数学问题求解器的优化过程:
import dspy
from dspy.datasets.gsm8k import GSM8K, gsm8k_metric
# Configure your language model
lm = dspy.LM(model="openai/gpt-4o")
dspy.configure(lm=lm)
# Load dataset
gsm8k = GSM8K()
trainset, devset = gsm8k.train, gsm8k.dev
# Define your program
program = dspy.ChainOfThought("question -> answer")
# Create and run optimizer with tracking
teleprompter = dspy.teleprompt.MIPROv2(
metric=gsm8k_metric,
auto="light",
)
# The optimization process will be automatically tracked
optimized_program = teleprompter.compile(
program,
trainset=trainset,
)
5. 查看结果
优化完成后,您可以通过MLflow的UI分析结果。让我们逐步了解如何探索您的优化运行。
步骤1: 访问MLflow UI
在您的网页浏览器中导航至http://localhost:5000以访问MLflow追踪服务器用户界面。
步骤2:理解实验结构
当你打开实验页面时,你将看到优化过程的分层视图。父运行代表你的整体优化过程,而子运行显示在优化过程中创建的每个中间版本程序。

步骤3: 分析父级运行
点击父运行可以查看优化过程的全貌。您将找到关于优化器配置参数的详细信息,以及评估指标随时间的变化情况。父运行还存储了最终优化的程序,包括所使用的指令、签名定义和少样本示例。此外,您可以查看优化过程中使用的训练数据。

步骤4:检查子运行
每个子运行提供了一个特定优化尝试的详细快照。当您从实验页面选择一个子运行时,可以探索该特定中间程序的多个方面。 在运行参数选项卡或工件选项卡上,您可以查看用于中间程序的指令和少量示例。 最强大的功能之一是轨迹选项卡,它提供了程序执行的逐步视图。在这里,您可以准确了解您的DSPy程序如何处理输入并生成输出。

6. 加载模型进行推理
您可以直接从MLflow跟踪服务器加载优化后的程序进行推理:
model_path = mlflow.artifacts.download_artifacts("mlflow-artifacts:/path/to/best_model.json")
program.load(model_path)
故障排除
- 如果未出现追踪记录,请确保
log_traces_from_compile=True - 对于大型数据集,考虑设置
log_traces_from_compile=False以避免内存问题 - 使用
mlflow.get_run(run_id)以编程方式访问 MLflow 运行数据
如需更多功能,请查阅MLflow Documentation。