00324 Hydra - Getting started 学习笔记


前言

Hydra:用于优雅配置复杂应用程序的框架。

无样板: Hydra让您可以专注于手头的问题,而不是将时间花在命令行标志、加载配置文件、日志记录等样板代码上。

强大的配置: 使用Hydra,您可以动态组合配置,使您能够轻松获得每次运行的完美配置。您可以从命令行覆盖所有内容,从而加快实验速度,并消除维护多个类似配置文件的需要。

可插拔架构: Hydra具有可插拔架构,使其能够与您的基础架构集成。未来的插件将允许直接从命令行在AWS或其他云提供商上启动您的代码。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. Hydra
  2. Getting started

介绍

Hydra是一个开源Python框架,它简化了研究和其他复杂应用程序的开发。关键特性是能够通过组合动态创建分层配置,并通过配置文件和命令行覆盖它。Hydra这个名字来源于它运行多个类似作业的能力——很像一个有多个头的Hydra。

主要特点:

  • 可从多个来源组合的分层配置
  • 可以从命令行指定或覆盖配置
  • 动态命令行tab完成
  • 在本地运行您的应用程序或启动它以远程运行
  • 使用单个命令运行具有不同参数的多个作业

版本

Hydra支持Linux、Mac和Windows。

快速入门指南

本指南将向您展示将应用程序编写为Hydra应用程序所获得的一些最重要的功能。如果您只想使用Hydra进行配置组合,请查看Hydra的撰写API以获取替代方案。还请阅读完整教程以获得更深入的理解。

安装

pip install hydra-core --upgrade

基本示例

配置:

# conf/config.yaml
db:
  driver: mysql
  user: omry
  pass: secret

应用:

# my_app.py
import hydra
from omegaconf import DictConfig, OmegaConf

@hydra.main(version_base=None, config_path="conf", config_name="config")
def my_app(cfg : DictConfig) -> None:
    print(OmegaConf.to_yaml(cfg))

if __name__ == "__main__":
    my_app()

您可以稍后在此处了解有关OmegaConf的更多信息。

config.yaml在您运行应用程序时自动加载

$ python my_app.py
db:
  driver: mysql
  pass: secret
  user: omry

您可以从命令行覆盖加载的配置中的值:

$ python my_app.py db.user=root db.pass=1234
db:
  driver: mysql
  user: root
  pass: 1234

组合示例

您可能希望在两个不同的数据库之间交替。为了支持这一点,创建一个名为db的配置组,并在其中为每个替代方案放置一个配置文件:我们应用程序的目录结构现在如下所示:

├── conf
│   ├── config.yaml
│   ├── db
│   │   ├── mysql.yaml
│   │   └── postgresql.yaml
│   └── __init__.py
└── my_app.py

这是新的配置:

# conf/config.yaml
defaults:
  - db: mysql

defaults是一个特殊指令,告诉Hydra在组合配置对象时使用db/mysql.yaml。生成的cfg对象是来自默认值的配置与config.yaml中指定的配置的组合。

您现在可以从命令行选择要使用的数据库配置并覆盖值:

$ python my_app.py db=postgresql db.timeout=20
db:
  driver: postgresql
  pass: drowssap
  timeout: 20
  user: postgres_user

您可以根据需要拥有任意数量的配置组。

Multirun

您可以使用–multirun|-m标志轻松地使用不同的配置多次运行您的函数。

$ python my_app.py --multirun db=mysql,postgresql
[HYDRA] Sweep output dir : multirun/2020-01-09/01-16-29
[HYDRA] Launching 2 jobs locally
[HYDRA]        #0 : db=mysql
db:
  driver: mysql
  pass: secret
  user: omry

[HYDRA]        #1 : db=postgresql
db:
  driver: postgresql
  pass: drowssap
  timeout: 10
  user: postgres_user

Hydra还有很多。阅读教程了解更多信息。

结语

第三百二十四篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录