在hydra-python结构化配置中如何实现值插值以设置工作目录?
Hydra 1.1 结构化配置实现值插值(自定义工作目录示例)
结构化配置的插值语法和YAML完全兼容,直接按照以下步骤实现即可:
- 导入所需依赖
- 定义业务配置结构体并覆盖Hydra工作目录配置
- 注册配置到配置存储
- 启动Hydra应用
完整实现代码如下:
from dataclasses import dataclass import hydra from hydra.core.config_store import ConfigStore from hydra.conf import RunConfig as HydraRunConfig from omegaconf import DictConfig # 自定义业务运行配置,对应YAML中的run节点 @dataclass class UserRunConfig: dir: str = "outputs" name: str = "try1" # 根配置结构体 @dataclass class RootConfig: run: UserRunConfig = UserRunConfig() # 直接在dataclass字段中使用插值表达式,和YAML写法完全一致 hydra: HydraRunConfig = HydraRunConfig( dir="${run.dir}/${run.name}" ) # 注册配置到Hydra配置存储 cs = ConfigStore.instance() cs.store(name="base_config", node=RootConfig) @hydra.main(version_base="1.1", config_name="base_config") def main(cfg: DictConfig) -> None: # 验证工作目录配置结果 run_dir = hydra.core.hydra_config.HydraConfig.get().run.dir print(f"当前运行工作目录为: {run_dir}") # 输出为 outputs/try1 if __name__ == "__main__": main()
额外说明:如果是多轮sweep场景,仅需将插值表达式配置到
HydraSweepConfig的dir字段即可,语法规则完全相同。
内容的提问来源于stack exchange,提问作者nzer0
相关产品推荐
相关产品推荐

