在 GitHub 上编辑

入门:实验跟踪

Jupyter Notebook 这样的工具适用于快速原型开发,但很难追踪变更并复现实验。你可以开始使用 DVC 在不离开 Jupyter Notebook 的情况下对实验进行版本管理。每个 DVC 实验 都会被版本化,且不会污染你的仓库,这比将每次运行保存到独立目录或为每次实验创建 Git 分支要更高效。

运行

开始所需的一切是一个已设置好的DVC 仓库以及安装了DVCLive Python 库:

$ pip install dvclive

在你的 Python 代码中,你可以通过 DVCLive 的 Live API 或特定框架的回调函数开始对实验进行版本管理。

以下是一些示例(支持更多框架):

from dvclive import Live
from dvclive.lightning import DVCLiveLogger

...
    trainer = Trainer(
        logger=DVCLiveLogger(log_model=True)
    )
    trainer.fit(model)
from dvclive import Live
from dvclive.huggingface import DVCLiveCallback

...
with Live() as live:
    trainer.add_callback(
        DVCLiveCallback(live=live)
    )
    trainer.train()
    trainer.save_model("mymodel")
    live.log_artifact("mymodel", type="model")
from dvclive import Live
from dvclive.keras import DVCLiveCallback

...
with Live() as live:
    model.fit(
        train_dataset,
        validation_data=validation_dataset,
        callbacks=[
            DVCLiveCallback(live=live)
        ]
    )
    model.save("mymodel")
    live.log_artifact("mymodel", type="model")
from dvclive import Live

with Live() as live:
    live.log_param("epochs", NUM_EPOCHS)

    for epoch in range(NUM_EPOCHS):
        train_model(...)
        metrics = evaluate_model(...)
        for metric_name, value in metrics.items():
            live.log_metric(metric_name, value)
        live.next_step()

    live.log_artifact("model.pkl", type="model")

完成上述操作后,每次执行代码都会创建一个包含结果及复现所需更改的DVC 实验

DVCLive 会自动从机器学习框架中记录一些指标、参数和图表,以及任何由 DVC跟踪的数据,但你也可以记录额外信息以包含在实验中。live.log_artifact("mymodel", type="model")使用 DVC 跟踪你的模型,并支持通过模型注册表对其进行管理。

了解更多关于DVCLive 工作原理的信息

共享

你可以在本地计算机上开始跟踪实验,但通常你需要与他人共享结果或进行备份。可选择性地继续本节内容以实现共享,或者如果你想仅在本地运行,可跳过此部分进入下一节。

DVC 使用 Git 跟踪每个实验的代码和元数据。如果你有 Git 远程仓库(例如 GitHub),并且可以执行 git push,请前往 DVC Studio,配置你的 Git 提供商,并将你的 Git 仓库添加为项目。

接下来,你可以从命令行登录到 Studio:

$ dvc studio login

配置完成后,DVC Studio 将为所有正在运行的实验提供实时更新。实验结果也会被推送到你的 Git 和 DVC 远程仓库,以便任何人都能恢复实验的完整状态。

了解更多关于实验共享机制的信息。

跟踪

按照上述步骤操作后,你可以使用多种方式监控训练进度:

默认情况下,DVCLive 会生成或更新报告,展示所有已记录的数据。

如果向 DVCLive 传入 report="notebook",报告将在单元格输出中显示并实时更新:

Notebook report

VS Code 的 DVC 扩展也会显示 DVCLive 记录的所有数据:

VS Code Report

如果你已完成上述共享部分的操作,你将在 DVC Studio 网页界面中看到实时更新:

DVC Studio Report

比较

运行多个实验后,你可以对比它们的结果:

你可以使用 dvc exp showdvc plots 来比较和可视化不同实验之间的指标、参数和图表。

$ dvc exp show
─────────────────────────────────────────────────────────────────────────────────────
Experiment                 Created    train.loss   eval.loss   dice_multi   base_lr
─────────────────────────────────────────────────────────────────────────────────────
workspace                  -            0.024942    0.013983        0.922   0.001
master                     05:26 PM      0.78426    0.054157      0.49599   0.1
├── 950c3b5 [bifid-says]   05:33 PM     0.024942    0.013983        0.922   0.001
├── 06090d7 [potty-sash]   05:31 PM     0.026193    0.015237      0.91494   0.01
└── d1ad0a9 [soupy-leak]   05:28 PM     0.075223    0.034786      0.49596   0.1
─────────────────────────────────────────────────────────────────────────────────────
$ dvc plots diff $(dvc exp list --name-only)

plots diff

VS Code 的 DVC 扩展 中,你可以通过 ExperimentsPlots 视图来比较和可视化实验结果。

VS Code Comparison

了解更多关于 比较实验 的内容

内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天