如何在 Python DVC 管道中以编程方式注册依赖项

问题描述 投票:0回答:1

我想运行一系列实验,每个实验将使用某些输入数据文件(依赖项),我想在运行实验时准备每个输入数据文件。 (有些实验将使用相同的输入数据集,因此在后续实验中不需要重新生成)。

起初我以为我可以用一个循环每个实验的“主”管道来做到这一点:

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 文件中完成,因为它涉及到所有的实验。

我是否需要为每个实验构建单独的管道来注册特定的依赖项? 如果是这样,可以通过编程方式完成吗,还是我需要手动构建它们?

python dependencies pyyaml dvc
1个回答
0
投票
运行缓存

文档:

每次使用 DVC 运行管道时,它都会记录每个阶段运行的唯一签名(在 .dvc/cache/runs 中)。如果以前从未发生过,则其命令将正常执行。随后每次阶段在相同条件下运行时,都可以立即恢复之前的结果,而不会浪费时间或计算资源。

它与您的情况相关吗?您能检查一下它是否已经在工作吗?

© www.soinside.com 2019 - 2024. All rights reserved.