Использование Hydra для работы с конфигами в Python

Andrey Lukyanenko

Senior DS, MTS AI

Содержание

  • Hydra и OmegaConf
  • Hydra: основные возможности
  • Примеры использования

Hydra и OmegaConf

  • OmegaConf - иерархические конфиги
  • Hydra - удобная обертка над этим
import hydra
from omegaconf import DictConfig, OmegaConf


@hydra.main(config_name="config")
def my_app(cfg: DictConfig) -> None:
    print(OmegaConf.to_yaml(cfg))
    print(f'User name: {cfg.user.name}.'
          f'Age: {cfg.user.age}')


if __name__ == "__main__":
    my_app()
user:
  name: UserName
  age: 42
>>> python my_app.py
user:
  name: UserName
  age: 42

User name: UserName. Age: 42

Hydra: возможности

  • Можно изменить любое значение в CLI
  • Вложенные конфиги
  • Interpolation
  • Structured configs
  • Multirun
  • Compose API
  • Instantiate
  • Логирование каждого запуска

Hydra: Мой пайплайн

Hydra: Мой пайплайн

    def configure_optimizers(self):
        optimizer = load_obj(self.cfg.optimizer.class_name)(self.model.parameters(),
        **self.cfg.optimizer.params)
        scheduler = load_obj(self.cfg.scheduler.class_name)(optimizer,
        **self.cfg.scheduler.params)

        return (
            [optimizer],
            [{'scheduler': scheduler,
            'interval': self.cfg.scheduler.step,
            'monitor': self.cfg.scheduler.monitor}],
        )

Hydra: возможности 2

  • Эксперименты (в разработке)
  • Read-only
  • Плагины

Links

Contacts

Sberloga hydra demo

By Andrey Lukyanenko

Sberloga hydra demo

A presentation for my talk about Hydra for Sberloga community

  • 453