使用dvc版本2.0.18和python 3.9.2,当在dvc.yaml中配置阶段的参数时,我希望使用在不同于params.yaml的配置文件中定义的参数。然而,它并没有像我预期的那样工作。
MWE: Git repo + dvc init:
.
├── dvc.yaml
├── preproc.yaml
└── test.pydvc.yaml:
vars:
- preproc.yaml
stages:
test:
cmd: python test.py
deps:
- test.py
params:
- important_parameterpreproc.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'.我遗漏了什么?使用模板功能可以做到这一点吗?
发布于 2021-04-23 05:34:02
我认为在这种情况下您不需要模板功能。如此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创建后台文件时,可以明确提供参数文件名作为前缀:
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是一个自定义的参数文件。
请让我知道它是否解决了问题,如果您有任何其他问题:)
https://stackoverflow.com/questions/67215839
复制相似问题