我想运行一系列实验,每个实验将使用某些输入数据文件(依赖项),我想在运行实验时准备每个输入数据文件。 (有些实验将使用相同的输入数据集,因此在后续实验中不需要重新生成)。
起初我以为我可以用一个循环每个实验的“主”管道来做到这一点:
dvc.yaml
stages:
prepare_data:
foreach: ${experiment_names}
do:
cmd: python stages/prepare_data.py "${item}"
deps:
- source_data
- stages/prepare_data.py
params:
- prepare_data
outs:
- input_data
run_simulations:
foreach: ${experiment_names}
do:
...
每个实验使用的具体源数据文件可能不同,它将根据我传递给它的实验名称和它将加载的一些
prepare_data.py
文件或可能来自exp_spec.yaml
确定文件。我正在努力解决的是如何注册特定的依赖项,以便
(i) 当实验需要已准备好的输入数据文件时,它不会重新生成它
(ii) 当源数据文件之一更改时,仅重新运行使用该文件的模拟。
显然这不能在上面的 dvc.yaml 文件中完成,因为它涉及到所有的实验。
我是否需要为每个实验构建单独的管道来注册特定的依赖项? 如果是这样,可以通过编程方式完成吗,还是我需要手动构建它们?