Hydra 是 Facebook 开发的配置管理框架,支持层次化配置、动态参数修改,适合机器学习实验管理。
核心特性
| 特性 | 说明 |
|---|
| 层次化配置 | 拆分多文件,支持继承覆盖 |
| 动态配置 | 命令行覆盖参数 |
| 配置组 | 动态选择配置文件 |
| 多格式支持 | YAML、JSON、INI |
安装
基本用法
1
2
3
4
5
6
7
8
9
| import hydra
from omegaconf import OmegaConf
@hydra.main(config_path="conf", config_name="config.yaml")
def main(cfg):
print(OmegaConf.to_yaml(cfg))
if __name__ == "__main__":
main()
|
配置文件结构
config.yaml
1
2
3
4
5
6
7
| model:
name: resnet50
lr: 0.001
batch_size: 64
optimizer:
type: adam
weight_decay: 0.0001
|
配置组
1
2
3
4
5
| conf/
├── config.yaml
└── model/
├── resnet.yaml
└── vgg.yaml
|
命令行选择配置:
1
2
| python train.py model=vgg # 使用 vgg.yaml
python train.py model=resnet # 使用 resnet.yaml
|
动态参数覆盖
1
| python train.py model=resnet lr=0.0005 batch_size=128
|
配置继承
base.yaml
1
2
3
| optimizer:
type: adam
weight_decay: 0.0001
|
resnet.yaml
1
2
3
4
5
6
7
| name: resnet50
lr: 0.001
defaults:
- /base
optimizer:
weight_decay: 0.0005 # 覆盖 base
|
多任务运行
1
| python train.py --multirun model=resnet,vgg lr=0.001,0.0001
|
自动组合运行所有配置组合。
Comments