Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Experiment Tracking

实验跟踪会记录每次机器学习训练运行的参数、代码和数据版本、指标及制品,以便比较和复现各次运行。

实验跟踪是记录每次机器学习训练运行全部信息的实践,包括代码版本、数据版本、设置、环境、随时间变化的指标,以及权重和图表等输出文件,并将这些信息存储在一个可搜索的位置。项目尝试数十种学习率、数据增强设置和模型尺寸时,各次运行在磁盘上的文件看起来都很相似;实验跟踪会保存每项结果背后的配置,以便日后比较、复现最佳运行并追溯其来源。TensorBoard 随 TensorFlow 于 2015 年发布,让实时训练曲线成为标准;Databricks 于 2018 年将 MLflow 开源,并将实验跟踪列为其最初的三个组件之一。Weights & Biases、Comet、ClearML 和 DVC 也是广泛使用的跟踪工具。

跟踪工具会记录什么#

每次运行都会获得一个唯一 ID,并归属于某个实验,也就是一组具有相同名称的相关运行。一次运行记录通常包含:

  • 超参数:学习率、批次大小、优化器、模型架构、随机种子,以及影响训练的其他所有设置。
  • 指标:按步骤或轮次记录的训练和验证损失及得分,以及 GPU 内存和利用率等系统指标。
  • 工件:检查点、混淆矩阵、样本预测和配置文件。
  • 溯源信息:生成这次运行所用的 Git 提交、数据集版本、软件包版本、硬件和作者。

日志记录可以通过逐个值调用客户端来完成,也可以通过自动日志集成来完成;后者能自动捕获框架的参数和指标,无需编写额外代码。共享跟踪服务器会收集团队中所有笔记本电脑、云端机器和 CI 任务的运行记录;其仪表板可以叠加所选运行的损失曲线,并按任何参数或指标筛选运行,让过拟合等问题一目了然。

Ultralytics YOLO 训练会将每次运行的参数写入 args.yaml,并将每轮的损失和指标写入 results.csv;安装相应软件包后,内置集成会立即将相同的数据发送到 MLflow、Comet、ClearML 或 DVC。通过 yolo settings 启用 TensorBoard 和 Weights & Biases。MLflow 会将 project 和 name 训练参数作为实验名称和运行名称,因此 YOLO26 参数搜索运行结束后,在跟踪工具中就已经整理妥当。

比较与复现运行#

仪表板会绘制不同运行中某个指标与参数的关系,或绘制平行坐标图,将每次运行的设置与得分连接起来,从而显示参数扫描中哪些设置最重要。在 Ultralytics Platform中,项目可以通过重叠的指标曲线和损失曲线以及并排表格比较模型;比较运行并选出最佳方案课程会将这种比较转化为脚本化的晋级门槛。复现一次运行所需的信息不止超参数:记录还必须包含代码提交、精确的数据快照、软件包版本和随机种子,因为即使其他条件完全相同,GPU 内核和数据加载顺序也可能让结果略有变化。

这个 MLflow 脚本会使用 scikit-learn 的手写数字数据集,在四种树深度下训练决策树,将每种深度记录为参数,并将验证准确率记录为指标,然后像查询表格一样查询实验:

import mlflow
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# Store runs in a local SQLite file and group them under one experiment
mlflow.set_tracking_uri("sqlite:///mlflow.db")
mlflow.set_experiment("digits-tree-depth")
X_train, X_val, y_train, y_val = train_test_split(*load_digits(return_X_y=True), random_state=0)

# One tracked run per setting: the parameter goes in, the metric comes out
for depth in [2, 4, 8, 16]:
    with mlflow.start_run(run_name=f"depth-{depth}"):
        model = DecisionTreeClassifier(max_depth=depth, random_state=0).fit(X_train, y_train)
        mlflow.log_param("max_depth", depth)
        mlflow.log_metric("val_accuracy", model.score(X_val, y_val))

# Query the experiment like a table, best run first
runs = mlflow.search_runs(order_by=["metrics.val_accuracy DESC"])
print(runs[["params.max_depth", "metrics.val_accuracy"]])

在全新数据库中,表格首先列出深度为 16、验证准确率为 0.838 的结果,其次是深度为 8、准确率为 0.818;接下来是深度为 4、准确率为 0.533,以及深度为 2、准确率为 0.318。在同一文件夹中使用 --backend-store-uri sqlite:///mlflow.db 运行 mlflow ui,即可在浏览器中查看相同的运行记录。

实验跟踪是机器学习运维(MLOps)的一个阶段,另外还有三种常与其混淆的实践:

  • 模型注册表:保存值得部署的少数训练模型,并将每个版本关联到生成该模型的跟踪运行记录。
  • 模型监控:在开发期间的跟踪工作完成后,监控已部署模型在生产环境中的输入、输出和准确率。
  • 超参数调优:Optuna 和 Ray Tune 等搜索工具会自动启动大量运行,而跟踪工具会存储并排序每一次运行。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来