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.
试图理解 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.