前言
Hydra:用于优雅配置复杂应用程序的框架。
无样板: Hydra让您可以专注于手头的问题,而不是将时间花在命令行标志、加载配置文件、日志记录等样板代码上。
强大的配置: 使用Hydra,您可以动态组合配置,使您能够轻松获得每次运行的完美配置。您可以从命令行覆盖所有内容,从而加快实验速度,并消除维护多个类似配置文件的需要。
可插拔架构: Hydra具有可插拔架构,使其能够与您的基础架构集成。未来的插件将允许直接从命令行在AWS或其他云提供商上启动您的代码。
Operating System: Ubuntu 22.04.4 LTS
参考文档
介绍
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还有很多。阅读教程了解更多信息。
结语
第三百二十四篇博文写完,开心!!!!
今天,也是充满希望的一天。