问题标签 [hydra-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
9632 浏览

python-3.x - 如何在不使用 @hydra.main() 的情况下获取 Hydra 配置

假设我们有以下设置(从Hydra 文档复制并缩短):

配置文件:config.yaml

蟒蛇文件:my_app.py

当我们可以在函数上使用装饰器时,这很有效my_app。现在我想(对于小脚本和测试目的,但这并不重要)cfg在任何函数之外获取这个对象,只是在一个普通的 python 脚本中。据我了解装饰器的工作原理,应该可以调用

但 thencfg只是None而不是所需的配置对象。所以看起来装饰器没有传递返回的值。还有其他方法可以做到cfg吗?

0 投票
1 回答
873 浏览

python-3.x - 如何通过命令行传递 Hydra 配置

已经有一个相关的问题,但是提议的Compose API不再支持 Hydra 0.11.3 将配置作为参数传递。

我想知道是否有办法通过命令行传递配置,或者此功能是否在最新版本中被禁用?

0 投票
2 回答
662 浏览

python-3.x - 在配置中调用 hydra.utils.instantiate

以下作品:

但它是early_stopping一个必需的参数。有没有更好的方法或方法在配置中指定所有这些,类似于以下内容?

这样我就可以做到:

0 投票
1 回答
647 浏览

hydra-python - 传递多个配置组

在我的 config.yaml 中,如何同时传递两个数据集,例如 cifar 和 cinic?我可以将多个配置组传递给默认列表吗?

这适用于我想在混合数据集上训练我的模型,但我不想为每个可能的组合创建一个配置组的情况。

我尝试如下:

这导致以下错误:

Could not load train_dataset/['cifar', 'cinic']. Available options 'cifar ... '

0 投票
1 回答
250 浏览

fb-hydra - 使用 SLURM 和 Horovod 运行 hydra 配置的项目

现在,我正在使用 Horovod 对我的 pytorch 模型进行分布式训练。我想开始为 --multirun 功能使用 hydra 配置,并使用 SLURM 将所有作业排入队列。我知道有 Submitid 插件。但我不确定,整个管道如何与 Horovod 合作。现在,我的训练命令如下所示:

假设我想使用 hydra --multirun 运行多个多 GPU 实验,我想使用 slurm 将运行排入队列,因为我的资源有限并且大部分时间会按顺序运行,我想使用 Horovod 来同步我的梯度网络。这个设置会开箱即用吗?如果 slurm 负责资源,我需要指定 CUDA_VISIBLE_DEVICES 吗?我需要如何调整我的运行命令或其他设置以使此设置合理?我对多运行功能如何处理 GPU 资源特别感兴趣。欢迎任何建议。

0 投票
1 回答
79 浏览

fb-hydra - 递归 i 初始化以及如何在另一个配置组中使用配置组

我正在探索 hydra 中递归初始化的选项。我能够基于此 PR设置一个工作示例。在尝试更高级的东西时,我偶然发现了以下问题。我的目录结构如下:

配置包含:

我想递归地实例化 Tokenizer 而不需要显式地编写 Normalizer 的所有参数,因为它们都已经在 Normalizer.yaml 文件中提到了。换句话说,我想在标记器配置组中使用规范器配置组。现在,如果我调用tokenizer = instantiate(cfg.tokenizer),结果是一个 Tokenizer 类对象,但是tokenizer.normalizer是一个 string Normalizer。如果我使用值插值并按如下方式设置项目:

结果变量tokenizer.normalizer是一个包含 Normalizer 的 args 的 dict,{"_target_": ...}而不是初始化的 Normalizer 类。如何避免需要在标记器配置中显式重复规范器的定义?

0 投票
3 回答
2800 浏览

python - 如何从脚本中覆盖 hydra 工作目录?

我知道我可以通过hydra.run.dir=XXX从命令行设置来更改配置中的工作目录。但是如何在不使用 CLI 参数的情况下从脚本中正确地做到这一点,即使日志也保存在我设置的目录中?

此代码不起作用,因为:

  1. 当我尝试更改目录和
  2. 没有这样的属性cfg.hydra

UPD:我在评论中得到了一个指针。我可以在调用 hydra 之前更改块中的 hydra 参数if __name__ == 'main':hydra.run.dir但是如何从脚本中获取和修改呢?

我的 hydra 配置如下所示:

0 投票
1 回答
146 浏览

hydra - 在装饰器中设置 Hydra 默认配置

有没有办法在 hydra 装饰器中定义默认配置并且不将其保存到任何 yaml 文件中?对于一些小脚本,它可能非常方便。

像这样的东西:

0 投票
3 回答
279 浏览

pyinstaller - 将 hydra 与 pyinstaller 一起使用

我一直在尝试将 Hydra 与 PyInstaller 一起使用,但失败了。我创建了一个与此处示例类似的配置示例。

我注意到 PyInstaller 没有找到 hydra 包,所以我使用以下代码创建了一个简单的钩子文件 hook-hydra.py:

这似乎解决了模块导入失败,但是当我尝试在命令行中运行可执行文件时,出现以下错误:

我似乎无法弄清楚,有什么想法吗?
我正在使用 PyInstaller 3.6 和 Hydra 1.0.4

0 投票
2 回答
1868 浏览

fb-hydra - 禁用 hydra 的文件输出

我正在使用hydra记录实验的超参数。

有时我想做一个空运行来检查一些东西。为此,我不需要任何保存的参数,所以我想知道在这种情况下如何完全禁用对文件系统的保存?