Skip to content

使用MLflow追踪DSPy优化器

本教程演示如何使用MLflow来追踪和分析您的DSPy优化过程。MLflow内置的DSPy集成功能为您的DSPy优化体验提供了可追溯性和可调试性。它让您能够理解优化过程中的中间试验,存储优化后的程序及其结果,并为您的程序执行提供可观测性。

通过自动日志功能,MLflow 跟踪以下信息:

  • 优化器参数

    • 少量示例的数量
    • 候选数量
    • 其他配置设置
  • 程序状态

    • 初始指令和少量示例
    • 优化后的指令和少量示例
    • 优化过程中的中间指令和少量示例
  • 数据集

    • 使用的训练数据
    • 使用的评估数据
  • 性能进展

    • 整体指标进展
    • 每个评估步骤的性能
  • 追踪

    • 程序执行轨迹
    • 模型响应
    • 中间提示

快速入门

1. 安装 MLflow

首先,安装 MLflow (版本 2.21.1 或更高):

pip install 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:理解实验结构

当你打开实验页面时,你将看到优化过程的分层视图。父运行代表你的整体优化过程,而子运行显示在优化过程中创建的每个中间版本程序。

Experiments

步骤3: 分析父级运行

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

Parent Run

步骤4:检查子运行

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

Child Run

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

优云智算