Skip to main content

用于 Ultralytics YOLO 的 MLflow 集成

MLflow experiment tracking with Ultralytics YOLO

简介

实验记录是机器学习 工作流中至关重要的一环,它支持跟踪各种指标、参数和工件。这有助于提高模型的可重复性、调试问题并提升模型性能。Ultralytics YOLO 以其实时目标检测 能力著称,现在提供了与 MLflow的集成,这是一个用于完整机器学习生命周期管理的开源平台。

本文档页面是设置和利用 MLflow 记录功能来辅助你的 Ultralytics YOLO 项目的综合指南。

什么是 MLflow?

MLflow 是一个由 Databricks 开发的开源平台,用于管理端到端的机器学习生命周期。它包含用于跟踪实验、将代码打包成可重复运行的程序,以及共享和部署模型的工具。MLflow 旨在与任何机器学习库和编程语言配合使用。

功能

  • 指标记录:在每个 epoch 结束和训练完成时记录指标。
  • 参数记录:记录训练中使用的所有参数。
  • 工件记录:在训练结束时记录模型工件,包括权重和配置文件。

设置与先决条件

确保已安装 MLflow。如果未安装,请使用 pip 进行安装:

pip install mlflow

确保在 Ultralytics 设置中启用了 MLflow 记录。通常,这由设置中的 mlflow 键控制。查看 settings 页面以获取更多信息。

更新 Ultralytics MLflow 设置

在 Python 环境中,调用 update 方法作用于 settings 对象以更改你的设置:

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

如何使用

命令

  1. 设置项目名称:你可以通过环境变量设置项目名称:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    或者在训练 YOLO 模型时使用 project=<project> 参数,例如 yolo train project=my_project.

  2. 设置运行名称:与设置项目名称类似,你可以通过环境变量设置运行名称:

    export MLFLOW_RUN=YOUR_RUN_NAME

    或者在训练 YOLO 模型时使用 name=<name> 参数,例如 yolo train project=my_project name=my_name.

  3. 启动本地 MLflow 服务器:要开始跟踪,请使用:

    mlflow server --backend-store-uri runs/mlflow

    这将在默认的 http://127.0.0.1:5000 启动本地服务器,并将所有 mlflow 日志保存到 'runs/mlflow' 目录。要将你的训练运行指向不同的跟踪服务器,请在训练前导出 MLFLOW_TRACKING_URI

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 终止 MLflow 服务器实例:要停止所有正在运行的 MLflow 实例,请运行:

    ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

日志记录

记录功能由 on_pretrain_routine_end, on_fit_epoch_end,以及 on_train_end 回调函数处理。这些函数在训练过程的相应阶段自动调用,并负责处理参数、指标和工件的记录。

示例

  1. 记录自定义指标:你可以通过在调用 trainer.metrics 之前修改 on_fit_epoch_end 字典来添加要记录的自定义指标。

  2. 查看实验:要查看日志,请导航至你的 MLflow 服务器(通常为 http://127.0.0.1:5000)并选择你的实验和运行。MLflow experiment tracking interface for YOLO

  3. 查看运行:运行是实验中的单个模型。点击一个运行即可查看详细信息,包括已上传的工件和模型权重。MLflow run details with YOLO artifacts

禁用 MLflow

要关闭 MLflow 记录:

yolo settings mlflow=False

document processing

与 Ultralytics YOLO 集成的 MLflow 记录提供了一种精简的方式来跟踪你的 机器学习实验。它使你能够有效地监控性能指标并管理工件,从而助力稳健的模型开发和部署。有关详细信息,请访问 MLflowofficial documentation.

FAQ

如何设置 MLflow 记录以用于 Ultralytics YOLO?

要设置 MLflow 记录以用于 Ultralytics YOLO,首先需要确保安装了 MLflow。你可以使用 pip 安装它:

pip install mlflow

接下来,在 Ultralytics 设置中启用 MLflow 记录。这可以使用 mlflow 键进行控制。有关更多信息,请参阅 设置指南.

更新 Ultralytics MLflow 设置
from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

最后,启动一个本地 MLflow 服务器进行跟踪:

mlflow server --backend-store-uri runs/mlflow

使用 MLflow 和 Ultralytics YOLO 可以记录哪些指标和参数?

Ultralytics YOLO 与 MLflow 集成后支持在整个训练过程中记录各种指标、参数和工件:

  • 指标记录:跟踪每个 epoch 结束时以及训练完成时的指标。
  • 参数记录:记录训练过程中使用的所有参数。
  • 工件记录:在训练后保存模型工件,如权重和配置文件。

有关更详细的信息,请访问 Ultralytics YOLO 跟踪文档.

启用 MLflow 记录后可以将其禁用吗?

是的,你可以通过更新设置来禁用 Ultralytics YOLO 的 MLflow 记录。以下是使用 CLI 执行此操作的方法:

yolo settings mlflow=False

有关进一步的自定义和重置设置,请参考 设置指南.

如何启动和停止用于 Ultralytics YOLO 跟踪的 MLflow 服务器?

要启动用于跟踪 Ultralytics YOLO 实验的 MLflow 服务器,请使用以下命令:

mlflow server --backend-store-uri runs/mlflow

此命令默认在 http://127.0.0.1:5000 启动本地服务器。如果需要停止正在运行的 MLflow 服务器实例,请使用以下 bash 命令:

ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

你可以运行以下命令来开始验证:命令部分 以获取更多命令选项。

将 MLflow 与 Ultralytics YOLO 集成进行实验跟踪有什么好处?

将 MLflow 与 Ultralytics YOLO 集成为管理你的机器学习实验提供了多种好处:

  • 增强的实验跟踪:轻松跟踪和比较不同的运行及其结果。
  • 改进的模型可重复性:通过记录所有参数和工件,确保你的实验是可重复的。
  • 性能监控:可视化随时间变化的性能指标,从而为模型改进做出数据驱动的决策。
  • 精简工作流:自动化记录过程,使你能够更专注于模型开发而不是手动跟踪。
  • 协作开发:与团队成员共享实验结果,以实现更好的协作和知识共享。

如需深入了解如何设置和利用 MLflow 与 Ultralytics YOLO,请浏览 用于 Ultralytics YOLO 的 MLflow 集成导出模式

评论