[英]How to access the Hydra config object at runtime
我需要更改 hydra 配置框架的输出/工作目录,使其位于我的项目目录之外。 根据我的理解和文档,config.yaml 需要如下所示:
exp_nr: 0.0.0.0
condition: something
hydra:
run:
dir: /absolute/path/to/folder/${exp_nr}/${condition}/
在我的代码中,我尝试访问并设置如下路径:
import os
import hydra
from omegaconf import DictConfig
@hydra.main(config_path="../../config", config_name="config", version_base="1.3")
def main(cfg: DictConfig):
print(cfg)
cwd = os.getcwd()
print(f"The current working directory is {cwd}")
owd = hydra.utils.get_original_cwd()
print(f"The Hydra original working directory is {owd}")
work_dir = cfg.hydra.run.dir
print(f"The work directory should be {work_dir}")
但我得到以下 output 和错误:
{'exp_nr': '0.0.0.0', 'condition': 'something'}
The current working directory is /project/path/subdir/subsubdir
The Hydra original working directory is /project/path/subdir/subsubdir
Error executing job with overrides: ['exp_nr=1.0.0.0', 'condition=somethingelse']
Traceback (most recent call last):
File "/project/path/subdir/subsubdir/model.py", line 13, in main
work_dir = cfg.hydra.run.dir
omegaconf.errors.ConfigAttributeError: Key 'hydra' is not in struct
full_key: hydra
object_type=dict
我看到 hydra.run.dir 没有出现在首先打印的 cfg 字典中,但是如果 os.getcwd() 尚未设置,我如何通过配置访问路径? 或者我做错了什么?
路径是正确的,因为我在集成 hydra 之前已经将文件保存到文件夹中,如果进程由于错误没有被终止,文件夹也会被创建,但是 hydra 不会向其中保存任何文件,甚至是带有它应该默认保存的参数。 我还尝试设置相对于标准 output 路径的路径,或者设置一个额外的配置参数work_dir: ${hydra.run.dir}
(返回插值错误)。
您可以通过此处记录的 HydraConfig singleton 访问 Hydra 配置。
from hydra.core.hydra_config import HydraConfig
@hydra.main()
def my_app(cfg: DictConfig) -> None:
print(HydraConfig.get().job.name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.