YOLOv10 与 MLflow 集成实战:实验跟踪、指标记录与产物管理的完整指南

发布时间:2026/9/15 17:02:51
YOLOv10 与 MLflow 集成实战:实验跟踪、指标记录与产物管理的完整指南 YOLOv10 与 MLflow 集成实战实验跟踪、指标记录与产物管理的完整指南【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10导读本文基于当前仓库的 MLflow 集成实现系统讲解如何为 YOLOv10以及仓库中同样适用的 YOLOv8 等检测模型接入 MLflow 实验追踪平台。你将掌握 MLflow 的安装与启用、实验名与运行名配置、本地 Tracking Server 的启动与关闭、训练过程中指标/参数/产物的自动记录原理以及自定义指标与运行生命周期控制的进阶用法让每一次训练都能沉淀为可复现、可对比的实验记录。MLflow 是什么为什么 YOLO 训练需要它MLflow 是开源的机器学习全生命周期管理平台提供实验跟踪、代码打包为可复现运行、模型共享与部署等能力设计上兼容任意机器学习库与编程语言。对于 YOLO 这类需要反复调节数据集、模型结构、超参数与训练时长的任务实验跟踪的价值在于可复现性每次训练的超参数、环境信息与权重产物被完整归档可随时回溯高效调优通过曲线与表格对比不同实验的 mAP、loss 等指标快速定位有效方向问题排查训练中断或性能异常时可从日志与指标序列中定位原因。本仓库已在 ultralytics/utils/callbacks/mlflow.py 中内置了完整回调实现无需额外编写业务代码训练即可自动上报三类核心数据指标记录Metrics Logging每个 epoch 结束时记录学习率、训练损失等指标训练结束前记录最终指标参数记录Parameter Logging训练启动时记录全部训练参数产物记录Artifacts Logging训练结束时上传权重文件与配置文件等产物。安装与启用 MLflow安装 MLflowpip install mlflow在 Ultralytics 设置中启用 MLflowMLflow 的启用开关由 Ultralytics 设置中的mlflow键控制。该键由 设置管理器 统一管理默认值为True设置文件位于用户配置目录下的settings.yaml首次运行时会自动生成。可通过 Python API 或 CLI 两种方式修改。Python 方式from ultralytics import settings # 更新设置开启 MLflow settings.update({mlflow: True}) # 重置设置为默认值 settings.reset()CLI 方式# 更新设置此处以修改 runs_dir 为例展示语法mlflow 同理 yolo settings runs_dir/path/to/runs # 重置设置为默认值 yolo settings reset注意文档原文中的设置键写作mflow仓库实际实现中该键为mlflow请以仓库实现为准。可以运行yolo settings查看当前设置或直接查看settings.yaml文件确认mlflow键的值。核心实现回调机制与记录时序MLflow 的日志记录由on_pretrain_routine_end、on_train_epoch_end、on_fit_epoch_end、on_train_end四个回调函数承担它们会在训练流程的对应阶段被自动调用。从源码看这些回调在 mlflow.py 中以字典形式导出callbacks ( { on_pretrain_routine_end: on_pretrain_routine_end, on_train_epoch_end: on_train_epoch_end, on_fit_epoch_end: on_fit_epoch_end, on_train_end: on_train_end, } if mlflow else {} )关键在于仅当环境变量与设置满足条件时回调才会注册。模块导入时通过assert SETTINGS[mlflow] is True与import mlflow验证集成是否启用任一条件不满足则mlflow None回调字典为空训练流程完全不感知 MLflow 的存在mlflow.py。此外单元测试运行期间默认不会写入日志除非当前 pytest 用例名为test_mlflow。回调的注册链路为训练器初始化时调用add_integration_callbacksbase.py从clearml、comet、dvc、mlflow、neptune、raytune、tensorboard、wb等模块合并回调执行阶段则由训练循环在对应节点调用self.run_callbacks(...)触发见 trainer.py 中on_pretrain_routine_end、on_train_epoch_end、on_fit_epoch_end、on_train_end等调用点。四个回调各司其职时序如下回调触发时机记录内容on_pretrain_routine_end预训练例行程序结束时设置 tracking URI、实验名、运行名启动 run记录全部训练参数on_train_epoch_end每个训练 epoch 结束时学习率、训练损失带train前缀on_fit_epoch_end每个 fit epochtrain val结束时验证与整体训练指标trainer.metricson_train_end训练结束时权重目录与save_dir下的图表、CSV、权重、YAML 等产物并结束 run其中on_fit_epoch_end的注释明确说明 fit train val即该回调覆盖了训练与验证两个阶段合并后的指标快照。运行配置实验名、运行名与 Tracking Server设置实验名Project / Experiment环境变量方式export MLFLOW_EXPERIMENT_NAMEyour_experiment_name训练参数方式使用projectproject参数例如yolo train projectmy_project。从源码mlflow.py可见优先级为MLFLOW_EXPERIMENT_NAME环境变量 trainer.args.project 默认值/Shared/YOLOv8。设置运行名Run Name环境变量方式export MLFLOW_RUNyour_run_name训练参数方式使用namename参数例如yolo train projectmy_project namemy_name。源码优先级为MLFLOW_RUN环境变量 trainer.args.name未设置时run_name为None由 MLflow 自动生成。启动本地 MLflow Servermlflow server --backend-store-uri runs/mlflow该命令默认在http://127.0.0.1:5000启动本地服务并将所有日志保存到runs/mlflow目录。如需指定其他 URI可设置环境变量export MLFLOW_TRACKING_URIyour_tracking_uri未显式设置时仓库实现默认将 tracking URI 指向RUNS_DIR / mlflow即全局 runs 目录下的mlflow子目录对应设置项runs_dirmlflow.py。训练启动时若检测到该目录为本地目录控制台会打印提示指引你用mlflow server --backend-store-uri uri在http://127.0.0.1:5000查看结果。关闭 MLflow Server 实例ps aux | grep mlflow | grep -v grep | awk {print $2} | xargs kill -9该命令查找所有包含mlflow的进程、剔除 grep 自身提取 PID 并强制结束。请确认执行环境为类 Unix 系统且确实需要结束所有 MLflow 相关进程。进阶用法自定义指标与运行生命周期控制记录自定义指标文档提供的官方扩展点在trainer.metrics字典在on_fit_epoch_end被调用之前向其中追加键值即可让该指标随每个 fit epoch 一并上报。结合源码可知on_fit_epoch_end会调用SANITIZE(trainer.metrics)其中SANITIZE会将键中的左右括号移除如metrics/mAP50-95变为metrics/mAP5095并转为浮点数mlflow.py因此自定义指标名应避免使用括号。对应地on_train_epoch_end使用trainer.lr与trainer.label_loss_items(...)记录学习率与逐组件训练损失。使用MLFLOW_KEEP_RUN_ACTIVE控制 run 生命周期默认情况下训练结束时 run 会自动结束mlflow.end_run()。若希望训练结束后继续向该 run 写入数据例如事后补充指标或对比可设置export MLFLOW_KEEP_RUN_ACTIVETrue此时训练结束后 run 保持活跃控制台会提示用mlflow.end_run()手动关闭。该行为在仓库测试 test_integrations.py 中有完整验证设True时 run 状态为RUNNING设False或不设置时状态为FINISHED。一个端到端的最小示例# 1. 安装依赖 pip install mlflow # 2. 启用集成默认已开启此处显式确认 yolo settings mlflowTrue # 3. 指定实验与运行名 export MLFLOW_EXPERIMENT_NAMEyolov10-experiments export MLFLOW_RUNfirst-run # 4. 启动本地 Tracking Server后台 mlflow server --backend-store-uri runs/mlflow # 5. 开始训练训练结束会自动上报指标、参数与产物 yolo train datacoco8.yaml modelyolov10n.yaml epochs50 imgsz640训练完成后打开http://127.0.0.1:5000选择实验与对应 run 即可查看指标曲线、超参数表格以及上传的权重和配置文件等产物。查看实验结果查看实验Experiment在 MLflow 界面默认http://127.0.0.1:5000中选择实验可看到该实验下所有 run 的指标对比。查看运行Run实验内的每个 Run 对应一次独立的模型训练。点击 Run 进入详情页可查看该次训练的完整记录包括上传的产物与模型权重best.pt、last.pt等。禁用 MLflow需要关闭集成时执行yolo settings mlflowFalse由于回调注册依赖SETTINGS[mlflow] is Truemlflow.py关闭后 MLflow 回调字典为空训练全程不会产生任何 MLflow 日志对训练流程零侵入。测试验证与源码阅读指引仓库通过 test_integrations.py 覆盖 MLflow 集成test_mlflow开启设置后直接训练分类模型验证日志链路可用test_mlflow_keep_run_active验证 run 生命周期控制。若需深入理解实现建议按以下顺序阅读回调定义与注册ultralytics/utils/callbacks/mlflow.py回调合并机制ultralytics/utils/callbacks/base.py设置管理mlflow键与默认值ultralytics/utils/init.py训练循环中的回调触发点ultralytics/engine/trainer.py总结MLflow 与 Ultralytics YOLO 的集成通过四个训练阶段回调实现了参数、指标与产物的全自动记录训练前自动初始化跟踪环境并上报超参数训练中逐 epoch 上报学习率与损失、逐 fit epoch 上报整体指标训练结束时归档权重与配置文件。配合MLFLOW_EXPERIMENT_NAME、MLFLOW_RUN、MLFLOW_TRACKING_URI等环境变量和project/name训练参数即可搭建一套完整、可复现、可对比的实验追踪体系为 YOLO 模型的持续迭代提供数据支撑。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询