适用于 Ultralytics YOLO 的 MLflow 集成

MLflow experiment tracking with Ultralytics YOLO

介绍

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

本篇文档是关于如何为你的 Ultralytics YOLO 项目设置和使用 MLflow 记录功能的综合指南。

什么是 MLflow?

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

功能特性

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

设置与先决条件

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

pip install mlflow

确保在 Ultralytics 设置中启用了 MLflow 记录。通常,这是由设置中的 mlflow 键控制的。有关详细信息,请参阅 设置 页面。

更新 Ultralytics MLflow 设置

Within the Python environment, call the update method on the settings object to change your 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_endon_fit_epoch_endon_train_end 回调函数 处理。这些函数会在训练过程的相应阶段自动调用,并负责处理参数、指标和工件的记录。

示例

  1. Logging Custom Metrics: You can add custom metrics to be logged by modifying the trainer.metrics dictionary before on_fit_epoch_end is called.

  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

总结

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

常见问题 (FAQ)

如何设置 Ultralytics YOLO 与 MLflow 的记录功能?

要设置 Ultralytics YOLO 与 MLflow 的记录功能,你需要首先确保已安装 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

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

结合 MLflow 的 Ultralytics YOLO 支持在整个训练过程中记录各种指标、参数和工件:

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

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

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

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

yolo settings mlflow=False

如需进一步自定义和重置设置,请参考 设置指南

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

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

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 集成 文档。

评论