Ultralytics YOLO 的 MLflow 集成#
简介#
实验日志记录是机器学习工作流的重要环节,可用于跟踪各种指标、参数和构件。它有助于增强模型可复现性、调试问题并提升模型性能。以实时目标检测能力著称的 Ultralytics YOLO 现已支持与 MLflow 集成。MLflow 是一个用于完整机器学习生命周期管理的开源平台。
本文档页面全面介绍如何为你的 Ultralytics YOLO 项目设置和使用 MLflow 日志记录功能。
什么是 MLflow?#
MLflow 是由 Databricks 开发的开源平台,用于管理端到端的机器学习生命周期。它包含用于实验跟踪、将代码打包为可复现运行以及共享和部署模型的工具。MLflow 旨在支持任何机器学习库和编程语言。
功能#
- 指标日志记录:在每个 epoch 结束时以及训练结束时记录指标。
- 参数日志记录:记录训练中使用的所有参数。
- 构件日志记录:在训练结束时记录模型构件,包括权重和配置文件。
设置和先决条件#
确保已安装 MLflow。如果尚未安装,请使用 pip 进行安装:
pip install mlflow确保已在 Ultralytics 设置中启用 MLflow 日志记录。通常,这由设置中的 mlflow 键控制。更多信息请参阅设置页面。
在 Python 环境中,对 settings 对象调用 update 方法来更改设置:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()使用方法#
命令#
-
设置项目名称:你可以通过环境变量设置项目名称:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME或者在训练 YOLO 模型时使用
project=<project>参数,例如yolo train project=my_project。 -
设置运行名称:与设置项目名称类似,你可以通过环境变量设置运行名称:
export MLFLOW_RUN=YOUR_RUN_NAME或者在训练 YOLO 模型时使用
name=<name>参数,例如yolo train project=my_project name=my_name。 -
启动本地 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 -
训练后保持 MLflow 运行处于活动状态:默认情况下,训练完成后 Ultralytics 会自动结束 MLflow 运行。若要保持运行处于打开状态(例如,从同一笔记本记录其他指标或构件),请在训练前将
MLFLOW_KEEP_RUN_ACTIVE设置为True:export MLFLOW_KEEP_RUN_ACTIVE=True1、true、yes、on、y和t这些值(不区分大小写)会启用此行为。任何其他值(包括未设置变量)都会保持默认设置,即关闭运行。记得之后使用mlflow.end_run()手动关闭运行。
日志记录#
日志记录由 on_pretrain_routine_end、on_fit_epoch_end 和 on_train_end 这几个回调函数负责。这些函数会在训练过程的相应阶段自动调用,并负责记录参数、指标和构件。
示例#
-
记录自定义指标:你可以在调用
on_fit_epoch_end之前修改trainer.metrics字典,以添加要记录的自定义指标。 -
查看实验:要查看日志,请导航到你的 MLflow 服务器(通常为
http://127.0.0.1:5000),然后选择实验和运行。
-
查看运行:运行是实验中的独立模型。点击某个运行,查看运行详情,包括已上传的工件和模型权重。

禁用 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 # Update a setting settings.update({"mlflow": True}) # Reset settings to default values settings.reset()最后,启动用于跟踪的本地 MLflow 服务器:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO 与 MLflow 支持在整个训练过程中记录各种指标、参数和构件:
- 指标日志记录:在每个epoch结束时以及训练完成后跟踪指标。
- 参数日志记录:记录训练过程中使用的所有参数。
- 构件日志记录:在训练后保存模型构件,例如权重和配置文件。
如需更详细的信息,请访问 Ultralytics YOLO 跟踪文档。
可以,你可以通过更新设置来禁用 Ultralytics YOLO 的 MLflow 日志记录。以下是使用 CLI 的方法:
yolo settings mlflow=False如需进一步自定义和重置设置,请参阅设置指南。
要启动用于跟踪 Ultralytics YOLO 实验的 MLflow 服务器,请使用以下命令:
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 集成文档。