适用于 Ultralytics YOLO 的 MLflow 集成
介绍
实验记录是 机器学习 工作流程中的关键环节,能够跟踪各种指标、参数和工件。它有助于增强模型的可重复性、调试问题并提升模型性能。Ultralytics YOLO 以其实时 目标检测 能力而闻名,现在提供了与 MLflow 的集成,后者是一个用于完整机器学习生命周期管理的开源平台。
本篇文档是关于如何为你的 Ultralytics YOLO 项目设置和使用 MLflow 记录功能的综合指南。
什么是 MLflow?
MLflow 是一个由 Databricks 开发的开源平台,用于管理端到端的机器学习生命周期。它包含用于跟踪实验、将代码打包成可重复运行的程序、以及共享和部署模型的工具。MLflow 旨在与任何机器学习库和编程语言配合使用。
功能特性
- 指标记录:在每个 epoch 结束和训练结束时记录指标。
- 参数记录:记录训练中使用的所有参数。
- 工件记录:在训练结束时记录模型工件,包括权重和配置文件。
设置与先决条件
确保已安装 MLflow。如果尚未安装,请使用 pip 进行安装:
pip install mlflow确保在 Ultralytics 设置中启用了 MLflow 记录。通常,这是由设置中的 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()如何使用
命令
-
设置项目名称:你可以通过环境变量设置项目名称:
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 服务器实例:要停止所有正在运行的 MLflow 实例,请运行:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
日志记录
记录工作由 on_pretrain_routine_end、on_fit_epoch_end 和 on_train_end 回调函数 处理。这些函数会在训练过程的相应阶段自动调用,并负责处理参数、指标和工件的记录。
示例
-
Logging Custom Metrics: You can add custom metrics to be logged by modifying the
trainer.metricsdictionary beforeon_fit_epoch_endis called. -
查看实验:要查看你的日志,请访问你的 MLflow 服务器(通常为
http://127.0.0.1:5000)并选择你的实验和运行。
-
查看运行:运行是实验中的单个模型。点击某个运行即可查看运行详情,包括上传的工件和模型权重。

禁用 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 键进行控制。有关详细信息,请参阅 设置指南。
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 集成 文档。