Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO 的 MLflow 集成#

MLflow experiment tracking with Ultralytics YOLO

Link to this section简介#

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

本说明文档是设置和使用 MLflow 日志记录功能来处理你的 Ultralytics YOLO 项目的综合指南。

Link to this section什么是 MLflow?#

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

Link to this section功能#

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

Link to this section设置与先决条件#

确保已安装 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()

Link to this section如何使用#

Link to this section命令#

  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

Link to this section日志记录#

日志记录由 on_pretrain_routine_endon_fit_epoch_endon_train_end 回调函数 处理。这些函数在训练过程的相应阶段自动调用,并负责处理参数、指标和产物的记录。

Link to this section示例#

  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

Link to this section禁用 MLflow#

要关闭 MLflow 日志记录:

yolo settings mlflow=False

Link to this section结论#

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

Link to this section常见问题解答#

Link to this section如何设置 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

Link to this section使用 Ultralytics YOLO 和 MLflow 可以记录哪些指标和参数?#

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

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

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

Link to this section启用 MLflow 日志记录后可以禁用它吗?#

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

yolo settings mlflow=False

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

Link to this section如何启动和停止用于 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

参考 命令部分 获取更多命令选项。

Link to this section如何在训练结束后保持 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 会启用此行为。

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

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

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

若要深入了解如何设置和利用 Ultralytics YOLO 的 MLflow,请浏览 Ultralytics YOLO 的 MLflow 集成 文档。

评论