微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 dvc 2.0

如何解决在 dvc 2.0

使用 dvc 版本 2.0.18 和 python 3.9.2 我想在配置 dvc.yaml 中阶段的参数时使用与 params.yaml 不同的配置文件中定义的参数。但是,它并没有像我预期的那样工作。

MWE: Git repo + 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'.

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

解决方法

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

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 创建阶段时,您可以明确提供 params 文件名作为前缀:

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 是自定义参数文件。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。