这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战
在数据科学项目上取得进展需要大量的实验(尝试调整参数、尝试不同的数据、改进代码、收集更好的指标等)。跟踪所有这些变化是必不可少的,因为我们可能希望在比较结果时检阅它们。以后恢复这些条件(参数、数据等)对于重现结果或恢复工作是有必要的。
DVC 提供了一个开箱即用的实验管理特性(无需特殊的服务器或网站)。在您的工作空间中运行 DVC 实验会自动获取相关的变更集(输入数据、源代码、超参数、制品等)。这是能做到的,因为您的整个 ML 流水线都使用 DVC 进行编码。
其他工具倾向于通过保存流水线产生的指标和制品以及指向代码修改的脆弱的连接来专注于实验追踪。 DVC 的方法通过在 Git 之上工作而不是作为并行系统来保证可重复性。
DVC 实验按照项目版本(Git 提交、分支、标签等)组织,如下所示。
────────────────────────────────────────────────────────────────────
Experiment loss acc epochs model.conv_u
────────────────────────────────────────────────────────────────────
workspace 0.23508 0.9151 10 24
main - - 10 16
├── e2647ef [exp-ee8a4] 0.23146 0.9145 10 64
├── 15c9451 [exp-a9be6] 0.25231 0.9102 10 32
└── 9c32227 [exp-17dd9] 0.23687 0.9167 10 256
7317bc6 - - 100 16
├── 299dc5e [monograms] 0.24838 0.9176 100 128
└── 8a9cb15 [bigrams] 0.24459 0.9134 100 64
────────────────────────────────────────────────────────────────────
使用 DVC 进行实验跟踪的主要好处:
- 通过自动记录数据依赖关系、代码、参数、制品、ML 模型及其指标,快速迭代实验想法。
- 执行机制可以控制; 运行一个实验或队列,包含多个实验。(如果需要,可以并行运行)。
- 从您的代码中创建深度学习检查点(
checkpoints),并跟踪实时指标。 - 根据参数或指标来审查和比较结果; 从缓存中恢复它们或从头开始重现它们。
- 采用一个 Git 工作流(分布式协作)和服务托管(如:GitHub)。
- 能够对实验进行版本控制。
在其他差异化因素中,DVC 实验跟踪在该领域是独一无二的,因为它们提供了一种简单而灵活的本地优先实验。 您的代码保持不变,您可以控制数据的保存和共享的位置。
DVC 还可以通过缓存提高存储效率并节省您的时间,防止重复数据传输或必须即时重新训练模型。
| DVC 实验 | 已存在的工具 | |
|---|---|---|
| UI(界面) | Terminal + web | Web (通常为 SaaS) |
| Logging(日志) | 基于Git的格式 | 自定义格式 |
| Storage(存储) | 对数据和模型版本控制 | 记录制品和指标 |
| Execution(执行训练) | dvc exp run | Code API (通常使用 Python) |
| Collaboration(协作) | Distributed(分布式) | Centralized(中心化) |
注意:
其他实验跟踪工具可以作为 DVC 的补充。例如,使用专门的可视化工具来记录详细的实验环境。
最后,DVC 完全与语言无关,无论您使用 Jupyter notebooks 还是 Scala、CSV 数据帧或 HDFS,都提供相同的功能。
为了完善您的堆栈,还可以使用 DVC Studio,这是一个用于在线协作的 DVC 项目的高级 Web 界面,包括完整的实验管理支持。 您还可以使用 CML 与 CI/CD 进行集成,并直接在 Studio 中运行您的实验!