问题描述
为了理解 dvc,大多数教程都提到了通过运行 NaN
命令来生成 dvc.yaml。
但同时,定义 DAG 的 dvc.yaml 也是 well documented。此外,它是一种 yaml 格式且人类可读/可写的事实表明,它旨在成为用于指定数据管道的 DSL。
有人可以澄清哪种做法更好吗?
编写 dvc.yaml 还是让它由 dvc run
命令生成?
还是由用户自行选择,没有技术差异?
解决方法
两个,真的。
主要是 dvc run
(或较新的 dvc stage add
后跟 dvc exp run
)旨在管理您的 dvc.yaml
文件。对于大多数(包括临时)用户来说,这可能是最简单的,因此也是最好的。将保证格式正确(类似于在{git,dvc} config
之间选择和直接修改.{git,dvc}/config
)
然而,正如您所注意到的,dvc.yaml
是人类可读的。这是有意为之,以便更高级的用户可以手动编辑 YAML(可能会使某些验证检查短路,或解锁 foreach
stages 等高级功能)。
我建议手动编辑作为主要途径! (我相信这是自 DVC 2.0 以来官方推荐的)
dvc stage add
对于管道文件的程序化生成仍然非常有帮助,但它不支持 dvc.yaml
的所有功能,例如设置 vars
值或定义 {{3 }}。