Hydra:使用 Compose API 覆盖 hydra.run.dir/working 目录管理
Hydra: Overriding hydra.run.dir/working directory management with Compose API
我正在尝试使用 Hydra 的 compose API 以编程方式而不是通过 CLI 启动运行。这在大多数情况下都有效。但是,覆盖 hydra.run.dir
以更改基本目录在使用组合 API 时似乎没有效果。即:
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
,其中包含 hydra.run.dir
的适当条目,但工作目录未更改。
compose API 文档声明不使用 @hydra.main
意味着放弃 Hydra 的工作目录管理。有解决办法吗?
Compose API 是无状态的,有意不更改工作目录、配置日志记录或更改全局状态,并且不与命令行集成。如果您需要这些功能,您应该考虑使用 @hydra.main()
.
作为一种变通方法,您可以在您的一端以编程方式调用 chdir(使用 os.chdir)。您可能还需要先 mkdir。
我正在尝试使用 Hydra 的 compose API 以编程方式而不是通过 CLI 启动运行。这在大多数情况下都有效。但是,覆盖 hydra.run.dir
以更改基本目录在使用组合 API 时似乎没有效果。即:
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
,其中包含 hydra.run.dir
的适当条目,但工作目录未更改。
compose API 文档声明不使用 @hydra.main
意味着放弃 Hydra 的工作目录管理。有解决办法吗?
Compose API 是无状态的,有意不更改工作目录、配置日志记录或更改全局状态,并且不与命令行集成。如果您需要这些功能,您应该考虑使用 @hydra.main()
.
作为一种变通方法,您可以在您的一端以编程方式调用 chdir(使用 os.chdir)。您可能还需要先 mkdir。