张芷铭的个人博客

Hydra 是 Facebook 开发的配置管理框架,支持层次化配置、动态参数修改,适合机器学习实验管理。

核心特性

特性说明
层次化配置拆分多文件,支持继承覆盖
动态配置命令行覆盖参数
配置组动态选择配置文件
多格式支持YAML、JSON、INI

安装

1
pip install hydra-core

基本用法

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