入门:实验跟踪
像 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 远程仓库,以便任何人都能恢复实验的完整状态。
了解更多关于实验共享机制的信息。
跟踪
按照上述步骤操作后,你可以使用多种方式监控训练进度:
VS Code 的 DVC 扩展也会显示 DVCLive 记录的所有数据:
如果你已完成上述共享部分的操作,你将在 DVC Studio 网页界面中看到实时更新:
比较
运行多个实验后,你可以对比它们的结果:
你可以使用 dvc exp show
和 dvc 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)
在 VS Code 的 DVC 扩展 中,你可以通过 Experiments
和 Plots
视图来比较和可视化实验结果。
了解更多关于 比较实验 的内容