首页 > 解决方案 > Hydra:使用 Compose API 覆盖 hydra.run.dir/working 目录管理

问题描述

我正在尝试使用 Hydra 的compose API以编程方式而不是通过 CLI 启动运行。这在大多数情况下都有效。但是,在使用 compose API 时,覆盖hydra.run.dir更改基本目录似乎没有效果。IE:

    with hydra.experimental.initialize_config_module(config_module=config_module):
        cfg = hydra.experimental.compose(
            config_name=config_name,
            overrides=["hydra.run.dir=/tmp/workdir", ...],
            return_hydra_config=True
        )

        hydra.core.hydra_config.HydraConfig.instance().set_config(cfg)

        with omegaconf.open_dict(cfg):
            del cfg["hydra"]

生成DictConfig带有 的适当条目的a hydra.run.dir,但工作目录未更改。

compose API 文档指出,不使用@hydra.main意味着放弃 Hydra 的工作目录管理。有解决方法吗?

标签: fb-hydrahydra-python

解决方案


Compose API 是无状态的,有意不更改工作目录、配置日志记录或更改全局状态,也不与命令行集成。如果您需要这些功能,您应该考虑使用@hydra.main().

作为一种解决方法,您可以最终以编程方式调用 chdir(使用os.chdir)。您可能还需要先 mkdir。


推荐阅读