首页 > 解决方案 > 在 dvc 2.0 中使用其他配置中的参数

问题描述

使用 dvc 版本 2.0.18 和 python 3.9.2 在配置dvc.yaml. 但是,它并没有像我预期的那样工作。

MWE:Git 存储库 + dvc 初始化:

.
├── dvc.yaml
├── preproc.yaml
└── test.py

dvc.yaml:

vars:
  - preproc.yaml
stages:
  test:
    cmd: python test.py
    deps:
      - test.py
    params:
      - important_parameter

preproc.yaml:

important_parameter: 123

运行dvc repro导致如下错误:

ERROR: failed to reproduce 'dvc.yaml': dependency 'params.yaml' does not exist

创建一个没有内容的虚拟 params.yaml 给出:

WARNING: 'params.yaml' is empty.
ERROR: failed to reproduce 'dvc.yaml': Parameters 'important_parameter' are missing from 'params.yaml'.

我错过了什么?模板功能完全可以做到这一点吗?

标签: pythondvc

解决方案


我认为在这种情况下您不需要模板功能。如本所示:

stages:
  train:
    cmd: python train.py
    deps:
      - users.csv
    params:
      - params.py:
          - BOOL
          - INT
          - TrainConfig.EPOCHS
          - TrainConfig.layers
    outs:
      - model.pkl

重新定义默认值的方法params.yaml是在部分中明确指定文件名params:

params:
  - preproc.yaml:
    - important_parameter

dvc run此外,当您使用(不推荐)或创建阶段时dvc stage add,您可以显式提供参数文件名作为前缀:

dvc run -n train -d train.py -d logs/ -o users.csv -f \
          -p parse_params.yaml:threshold,classes_num \
          python train.py

这里 ^^parse_params.yaml是一个自定义参数文件。

请让我知道它是否解决了问题,如果您有任何其他问题:)


推荐阅读