Python 针对不同环境的 Hydra 配置
Python Hydra configuration for different environments
背景
我目前有一个脚本可以进行一些 API 数据收集。该脚本部署到两个环境,test
和 user
。每个环境都有不同的设置,我已经创建了相应的配置文件。我目前正在迁移我的项目以使用 hydra-core
包。
Objective
如果可能的话,我想这样配置 Hydra。从 test
或 user
加载所有配置文件。默认应该是 test
环境,除非通过 CLI 指定加载 user
环境。
当前配置结构
Project Root
|
├── config
│ ├── config.yaml
│ ├── test
│ │ ├── config1.yaml
│ │ ├── config2.yaml
│ │ ├── config3.yaml
│ │ └── config4.yaml
│ └── user
│ ├── config1.yaml
│ ├── config2.yaml
│ ├── config3.yaml
│ └── config4.yaml
当前默认配置 - config.yaml
defaults:
- test: [config1.yaml, config2.yaml, config3.yaml, config4.yaml]
如何通过 CLI 覆盖上述默认值?
你可以引入一个配置组,例如env
将包含您要用于每个环境的默认列表的配置。
├── config
│ ├── config.yaml
│ ├── env
│ │ ├── user.yaml
│ │ └── test.yaml
│ ├── test
│ │ └── user.yaml
│ └── user
│ └── config1.yaml
env/user.yaml:
defaults:
- /user/config1
- /user/config2
env/test.yaml:
defaults:
- /test/config1
- /test/config2
小学config.yaml:
defaults:
- env: test # Overridable
有了上面的内容,您应该可以像这样覆盖环境:
$ python foo.py env=user
这类似于 configure experiment 模式。
这依赖于递归默认列表,这是 Hydra 1.1 中的新功能。您可以了解更多关于它们的信息 here
背景
我目前有一个脚本可以进行一些 API 数据收集。该脚本部署到两个环境,test
和 user
。每个环境都有不同的设置,我已经创建了相应的配置文件。我目前正在迁移我的项目以使用 hydra-core
包。
Objective
如果可能的话,我想这样配置 Hydra。从 test
或 user
加载所有配置文件。默认应该是 test
环境,除非通过 CLI 指定加载 user
环境。
当前配置结构
Project Root
|
├── config
│ ├── config.yaml
│ ├── test
│ │ ├── config1.yaml
│ │ ├── config2.yaml
│ │ ├── config3.yaml
│ │ └── config4.yaml
│ └── user
│ ├── config1.yaml
│ ├── config2.yaml
│ ├── config3.yaml
│ └── config4.yaml
当前默认配置 - config.yaml
defaults:
- test: [config1.yaml, config2.yaml, config3.yaml, config4.yaml]
如何通过 CLI 覆盖上述默认值?
你可以引入一个配置组,例如env
将包含您要用于每个环境的默认列表的配置。
├── config
│ ├── config.yaml
│ ├── env
│ │ ├── user.yaml
│ │ └── test.yaml
│ ├── test
│ │ └── user.yaml
│ └── user
│ └── config1.yaml
env/user.yaml:
defaults:
- /user/config1
- /user/config2
env/test.yaml:
defaults:
- /test/config1
- /test/config2
小学config.yaml:
defaults:
- env: test # Overridable
有了上面的内容,您应该可以像这样覆盖环境:
$ python foo.py env=user
这类似于 configure experiment 模式。 这依赖于递归默认列表,这是 Hydra 1.1 中的新功能。您可以了解更多关于它们的信息 here