gpt4 book ai didi

git - 数据版本控制 : Absolute Paths and Project Paths in the Pipeline Parameters?

转载 作者:行者123 更新时间:2023-12-04 15:09:52 26 4
gpt4 key购买 nike

在 DVC 中,可以定义管道。在 Unix 中,通常在根级别不起作用。此外,DVC 期望文件位于 git 存储库中。

所以,这似乎是一个典型的问题。

假设我有以下内容:

/home/user/project/content-folder/data/data-type/cfg.json
/home/user/project/content-folder/app/foo.py

Git 开始于 /home/user/project/

cd ~/project/content-folder/data/data-type
../../app/foo.py do-this --with cfg.json --dest $(pwd)

对我来说似乎是合理的:脚本采用存储在特定位置的配置,针对某些封装的功能运行它,并使用绝对路径将其输出到目的地。

--dest 的默认行为是输出到当前工作目录。这似乎是另一个合理的默认设置。


接下来,我要为 dvc 配置 params.yaml 文件,我立即感到困惑,不确定会发生什么。我写:

foodoo:
params: do-this --with ????/cfg.json --dest ????

我想写的(并且会在 shell 脚本中):

#!/usr/bin/env bash
origin:=$(git rev-parse --show-toplevel)

verb=do-this
params=--with $(origin)/content-folder/data/data-type/cfg.json --dest $(origin)/content-folder/data/data-type

但是,在 DVC 中,路径似乎是隐式的,我也不知道从哪里开始:

  1. DVC 将在本地计算我的脚本的路径
  2. 不在本地计算我的脚本的路径

这很好——我可以发现这一点。但我有理由相信 DVC 绝对不会在我的 params.yaml 中的目录和文件参数前面加上我的项目路径。


如何实现不假定固定项目位置的路径控制,就像我在 BASH 中所做的那样?

最佳答案

默认情况下,DVC 将从与 dvc.yaml 相同的目录运行您的 stage 命令。文件。如果您需要从不同的位置运行该命令,您可以通过 wdir 指定备用工作目录,该目录应该是相对于 dvc.yaml 位置的路径。

阶段中所有其他内容的路径(如 params.yaml)应指定为相对于 wdir(或相对于 dvc.yaml 如果未提供 wdir

查看您的示例,DVC 中的参数似乎也有些困惑。在 DVC 阶段,params 用于指定 parameter dependencies , 不用于指定命令行标志。包含标志/选项的完整命令应包含在您的阶段的 cmd 部分。如果您想确保每次 cfg.json 中的某些值发生变化时您的阶段都重新运行,您阶段的 params 部分将类似于:

params:
<relpath from dvc.yaml>/cfg.json:
- param1
- param2
...

因此您的示例 dvc.yaml 看起来像这样:

stages:
foodoo:
cmd: <relpath from dvc.yaml>/foo.py do-this --with <relpath from dvc.yaml>/cfg.json --dest <relpath from dvc.yaml>/...
deps:
<relpath from dvc.yaml>/foo.py
params:
<relpath from dvc.yaml>/cfg.json:
...
...

只要 foo.py 中的代码发生变化,或者 cfg.json 中的指定参数发生变化,这将使命令 dvc repro 重新运行您的阶段。

您可能还想引用 dvc run 的文档,可用于生成或更新 dvc.yaml 阶段(而不是手动编写 dvc.yaml)

关于git - 数据版本控制 : Absolute Paths and Project Paths in the Pipeline Parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65416056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com