dvc.yaml 应该由 dvc 运行 命令编写或生成吗?

Is dvc.yaml supposed to be written or generated by dvc run command?

试图理解 dvc,大多数教程都提到通过 运行 dvc run 命令生成 dvc.yaml。

但同时定义DAG的dvc.yaml也是well documented。此外,它是一种 yaml 格式和人类 readable/writable 的事实表明它是一个用于指定数据管道的 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 值或定义 foreach stages.