YOLO Vision 2026:

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 设置键控制。有关更多信息,请参阅设置页面。

更新 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 运行处于活动状态:默认情况下,Ultralytics 会在训练结束时自动结束 MLflow 运行。若要保持运行处于打开状态(例如,从同一笔记本记录其他指标或工件),请在训练前将 MLFLOW_KEEP_RUN_ACTIVE 设置为 True

    export MLFLOW_KEEP_RUN_ACTIVE=True

    该值在解析时不区分大小写;只有字符串 true 会启用此行为,任何其他值(包括未设置)都将保持默认的关闭运行状态。请记得事后使用 mlflow.end_run() 手动将其关闭。

  5. 终止 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. 记录自定义指标:你可以通过在调用 on_fit_epoch_end 之前修改 trainer.metrics 字典来添加要记录的自定义指标。

  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 官方文档

常见问题解答#

如何设置 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 支持在训练过程中记录各种指标、参数和产物:

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

有关更详细的信息,请访问 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 运行处于激活状态?#

在训练前将 MLFLOW_KEEP_RUN_ACTIVE 环境变量设置为 True

export MLFLOW_KEEP_RUN_ACTIVE=True

默认情况下这是 False,因此 Ultralytics 会在训练完成后调用 mlflow.end_run()。通过 MLFLOW_KEEP_RUN_ACTIVE=True,运行将保持打开状态,以便你可以从同一个 Python 会话中记录额外的指标、参数或工件——完成后请使用 mlflow.end_run() 自行将其关闭。该值的解析不区分大小写;只有 true 才能启用此行为。

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

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

  • 增强实验跟踪:轻松跟踪和比较不同的运行及其结果。
  • 改进模型可重复性:通过记录所有参数和产物,确保你的实验是可重复的。
  • 性能监控:随时间可视化性能指标,以便为模型改进做出数据驱动的决策。
  • 精简工作流程:自动化日志记录过程,从而将更多精力集中在模型开发而非手动跟踪上。
  • 协作开发:与团队成员共享实验结果,以促进更好的协作和知识共享。

若要深入了解如何设置和利用 MLflow 与 Ultralytics YOLO,请探索 MLflow Integration for Ultralytics YOLO 文档。

评论