Link to this sectionClearML 集成#
Link to this section关于 ClearML#
ClearML 是一个开源的 MLOps 平台,旨在简化机器学习工作流程并节省工程时间。
- 🔨 在 experiment manager 中跟踪每一次 YOLOv5 训练运行。
- 🔧 使用集成的 ClearML data versioning tool 对你的自定义训练数据进行版本控制和访问。
- 🔦 使用 ClearML Agent 远程训练并监控 YOLOv5 运行。
- 🔬 使用 ClearML hyperparameter optimization 找到最佳 mAP。
- 🔭 使用 ClearML Serving,只需几个命令即可将你训练好的 YOLOv5 model into an API。
你可以根据需要使用这些工具中的任意数量——仅从实验管理器开始,或者将所有内容连接成一个完整的管道。

Link to this section🦾 设置准备工作#
ClearML 需要与服务器通信以跟踪你的实验和数据。你有两个选择:
- 注册免费的 ClearML Hosted Service,或者
- 部署你自己的 ClearML server —— 它是开源的,因此即使对于敏感数据,它也是一个可行的选择。
然后安装 clearml Python 包并将 SDK 连接到你的服务器:
pip install clearml在 Settings → Workspace → Create new credentials(ClearML UI 右上角)生成凭据,然后运行:
clearml-init按照提示操作。就是这样——设置完成了。
Link to this section🚀 使用 ClearML 训练 YOLOv5#
要启用实验跟踪,请安装 ClearML pip 包(如果你尚未安装):
pip install clearml这将启用与 YOLOv5 训练脚本的集成。从现在开始,每次训练运行都将由 ClearML experiment manager 捕获并存储。
要自定义项目和任务名称,请将 --project 和 --name 传递给 train.py。默认值为 YOLOv5 和 Training。ClearML 使用 / 作为子项目分隔符,因此在自定义项目名称中请避免使用 /。
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache或者使用自定义名称:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache每次运行都会捕获:
- 源代码和未提交的更改
- 已安装的包
- 超参数
- 模型检查点(使用
--save-period n每n个 epoch 保存一次) - 控制台输出
- 标量(mAP_0.5、mAP_0.5:0.95、准确率、召回率、损失、学习率)
- 机器详情、运行时和创建日期
- 生成的图表,例如标签相关图和混淆矩阵
- 每个周期带有边界框的图像
- 每个周期的马赛克可视化
- 每个周期的验证图像
所有内容都会出现在 ClearML UI 中,以便你可以在一个地方监控训练。添加自定义列(例如 mAP_0.5)以按表现最好的模型排序,或选择多个实验进行并排比较。
继续阅读以了解超参数优化和远程执行。
Link to this section🔗 数据集版本管理#
将数据与代码分开进行版本控制,可以轻松拉取最新版本并确保完全可重复性。此存储库接受数据集版本 ID,如果数据缺失则自动获取,并将 ID 记录为任务参数,以便你始终知道哪个实验使用了哪份数据。

Link to this section准备你的数据集#
YOLOv5 存储库通过 YAML 配置文件支持许多数据集。默认情况下,数据集会下载到相对于存储库根目录的 ../datasets 文件夹中。下载 coco128 后,文件夹结构如下:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt任何数据集只要保持这种结构都可以使用。
接下来,将数据集的 YAML 文件复制到数据集根文件夹中 —— ClearML 会读取该文件以正确使用数据集。你可以按照示例布局编写自己的 YAML,确保它定义了 path、train、test、val、nc 和 names。
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtLink to this section上传你的数据集#
要将数据集注册为带版本的 ClearML 数据集,请切换到其根文件夹并运行:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync 是以下序列的简写,你也可以显式运行它:
# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeLink to this section在 ClearML 数据集上进行训练#
注册数据集后,通过 ID 指向它进行训练:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cacheLink to this section👀 超参数优化#
通过对实验和数据进行版本控制,你可以在此基础上进行构建。由于每个被跟踪的实验都会捕获完整的环境(代码、已安装的包和配置),因此运行是完全可重复的。ClearML 允许你克隆一个实验,更改其参数,并自动重新运行它,这就是超参数优化 (HPO) 的基础。
要在本地运行 HPO,请使用随附的脚本。首先确保实验管理器中存在训练任务 —— 脚本会克隆它并改变其超参数。
在 utils/loggers/clearml/hpo.py 中填写模板任务 ID,然后运行:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py将 task.execute_locally() 切换为 task.execute(),将作业推送到 ClearML 队列,供远程代理获取。

Link to this section🤯 远程执行(进阶)#
在本地运行 HPO 很方便,但你通常会希望在更强大的硬件(本地 GPU 机器或云实例)上进行实验。这就是 ClearML Agent 的作用:
每个被跟踪的实验都包含在另一台机器上复现它所需的一切(已安装的包、未提交的更改和配置)。ClearML 代理会监听队列,获取传入的任务,重新创建环境,运行作业,并将标量和图表流式传输回实验管理器。
使用以下命令将任何机器(云虚拟机、本地 GPU 机器或笔记本电脑)变成 ClearML 代理:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Link to this section克隆、编辑和排队#
运行代理后,你可以直接从 UI 为其分配工作:
- 🪄 右键点击一个实验并克隆它。
- 🎯 编辑其超参数。
- ⏳ 右键点击克隆的任务并将其排队到目标队列。

Link to this section远程执行任务#
你也可以通过在实例化 ClearML 记录器后添加 task.execute_remotely(),以编程方式标记正在运行的脚本进行远程执行。将突出显示的行添加到 train.py:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINE
# data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
data_dict = loggers.clearml.data_dict
# ...进行此更改后,运行训练脚本会执行到该行,打包代码并将其发送到队列。
Link to this section自动伸缩工作节点#
ClearML 附带 autoscalers,当队列中有待处理的实验时,它们会在 AWS、GCP 或 Azure 中启动远程机器,将其转换为 ClearML 代理,并在工作完成后将其关闭 —— 因此你只需为实际运行的计算付费。
观看下方的入门视频:
Link to this section了解更多#
有关将 ClearML 与 Ultralytics 模型集成的更多信息,请查看我们的 ClearML 集成指南,并探索如何使用其他实验跟踪工具增强你的 MLOps 工作流程。