Ultralytics YOLO27:
Get Started

Ultralytics YOLO 的 MLflow 集成#

MLflow experiment tracking with Ultralytics YOLO

简介#

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

本文档页面全面介绍了如何为你的 Ultralytics YOLO 项目设置和使用 MLflow 日志记录功能。

什么是 MLflow?#

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

功能#

  • 指标日志记录:在每个训练轮次结束时记录学习率、训练损失和验证指标。
  • 参数日志记录:记录训练中使用的所有参数。
  • 产物日志记录:在训练结束时记录模型产物,包括权重和配置文件。

设置和先决条件#

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

pip install mlflow

确保已在 Ultralytics 设置中启用 MLflow 日志记录。通常,此项由设置键 mlflow 控制。更多信息请参阅设置页面。

更新 Ultralytics MLflow 设置

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

from ultralytics import settings

# 更新一项设置
settings.update({"mlflow": True})

# 将设置重置为默认值
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

    值 1、true、yes、on、y 和 t(不区分大小写)可启用此行为。任何其他值(包括未设置变量)都会保留默认行为,即关闭运行。记得之后使用 mlflow.end_run() 手动关闭运行。

日志记录#

日志记录由 on_pretrain_routine_end、on_train_epoch_end、on_fit_epoch_end 和 on_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 日志记录,首先需要确保已安装 MLflow。你可以使用 pip 安装:

    pip install mlflow

    接下来,在 Ultralytics 设置中启用 MLflow 日志记录。你可以使用 mlflow 键来控制此功能。更多信息请参阅设置指南。

    更新 Ultralytics MLflow 设置
    from ultralytics import settings
    
    # 更新一项设置
    settings.update({"mlflow": True})
    
    # 将设置重置为默认值
    settings.reset()

    最后,启动本地 MLflow 服务器以跟踪实验:

    mlflow server --backend-store-uri runs/mlflow
  • Ultralytics YOLO 与 MLflow 集成后,支持在整个训练过程中记录各种指标、参数和产物:

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

    如需了解更多详情,请访问 Ultralytics YOLO 跟踪文档。

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

    yolo settings mlflow=False

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

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

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

    此命令默认会在本地 http://127.0.0.1:5000 启动服务器。在该终端中按 Ctrl+C 即可停止服务器。

    更多命令选项请参阅命令部分。

  • 在开始训练前,将环境变量 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() 手动关闭运行。值 1、true、yes、on、y 和 t(不区分大小写)可启用此行为。

  • 将 MLflow 与 Ultralytics YOLO 集成,可以为管理机器学习实验带来多项好处:

    • 增强实验跟踪能力:轻松跟踪并比较不同的运行及其结果。
    • 提高模型可复现性:记录所有参数和产物,确保实验可以复现。
    • 性能监控:直观查看性能指标随时间的变化,以便依据数据做出模型改进决策。
    • 简化工作流:自动执行日志记录,让你能将更多精力投入模型开发,而不是手动跟踪。
    • 协作开发:与团队成员分享实验结果,促进协作和知识共享。

    若想深入了解如何设置 MLflow 并将其与 Ultralytics YOLO 配合使用,请参阅 Ultralytics YOLO 的 MLflow 集成文档。

评论