问题标签 [fb-hydra]

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 投票
1 回答
1845 浏览

python - 从 python 文件在 hydra DictConfig 中创建一个新密钥

我想在加载 Hydra Config 后添加一个键 + 值。本质上,我想运行我的代码并检查 gpu 是否可用。如果是,则将设备记录为 gpu,否则保留 cpu。

本质上保存的输出:

当我尝试使用“setdefault”添加一个键时:

如果我这样做,同样的错误:

我得到错误:

我目前的解决方法是只使用 OmegaConfig:

当然必须有更好的方法来做到这一点?

0 投票
1 回答
594 浏览

fb-hydra - 使用文件而不是 Hydra 配置中的变量专门配置

我想根据 Hydra 文档在 Common Patterns -> Specializing Configuration 中使用专门的配置。不同之处在于我的专门配置是在一个文件中,而不仅仅是一个变量。在下面的示例中,我想根据模型和数据集选择转换。不同转换的配置在文件中。如果我在 dataset_model/cifar10_alexnet.yaml 文件中指定了所有转换配置,这将起作用,但这会破坏目的,因为在这种情况下我无法重用转换配置。在 Hydra 的其他地方,如果您指定文件名,它会自动获取该文件中的配置,但它似乎不适用于专门的配置。

我已将文档中的示例修改如下:

配置.yaml:

在该目录中添加了名为 transform 的目录和两个文件:

作物.yaml:

调整大小.yaml:

更改文件 dataset_model/cifar10_alexnet.yaml:

其他一切都完全按照文档。当我运行它时,我得到一个异常:

所以,问题是 - 是否支持此功能,如果支持,我做错了什么?

0 投票
2 回答
434 浏览

python - 使用 Pytorch Lightning 时关闭 Hydra 的控制台日志记录

有没有办法关闭 Hydra 的控制台日志记录,但保留文件日志记录?我遇到了 Hydra 复制所有控制台打印的问题。这些打印由 Pytorch Lightning 处理,我希望它们保持这种状态。但是,我很喜欢 hydra 将它们记录到文件中(每次打印一次),但我不想在控制台中看到我的打印两次。

0 投票
1 回答
178 浏览

python - Hydra runtime type checking does not work when config name specified in command line

The following code snippet works as expected when running the script without any parameters (execution stops because of missing argument in config):

How ever, when i specify this config name via command line, it seems that type checking is not happening:

0 投票
1 回答
217 浏览

python - Pipreqs 为 Hydra 生成不正确的需求

我正在使用pipreqs生成requirements.txt. 我开始使用 hydra 包(请参阅https://hydra.cc/或PyPI 上的 hydra-core包)。所以我想在运行时自动pipreqs添加hydra-core依赖项。

但是,当我检查pipreqs(直接在requirements.txt运行时pipreqs --force或从控制台输出中pipreqs --print)的输出时,有Hydra==2.5. 但它是不正确的包(导致Hydra是带有高性能布隆过滤器的包)。我希望看到hydra-core==1.0.6哪个是我的 hydra(hydra-core正确)包的正确版本。

有什么我应该做的不同的吗?或者有什么问题pipreqs吗?


  • Python 3.8.6
  • pipreqs 版本:0.4.10
0 投票
1 回答
124 浏览

fb-hydra - Hydra:使用 Compose API 覆盖 hydra.run.dir/working 目录管理

我正在尝试使用 Hydra 的compose API以编程方式而不是通过 CLI 启动运行。这在大多数情况下都有效。但是,在使用 compose API 时,覆盖hydra.run.dir更改基本目录似乎没有效果。IE:

生成DictConfig带有 的适当条目的a hydra.run.dir,但工作目录未更改。

compose API 文档指出,不使用@hydra.main意味着放弃 Hydra 的工作目录管理。有解决方法吗?

0 投票
1 回答
842 浏览

fb-hydra - 如何从以前的作业中加载 Hydra 参数(无需使用 argparse 和 compose API)?

我正在使用 Hydra 来训练机器学习模型。它非常适合执行复杂的命令,例如python train.py data=MNIST batch_size=64 loss=l2. 但是,如果我想使用相同的参数运行经过训练的模型,我必须执行类似python reconstruct.py --config_file path_to_previous_job/.hydra/config.yaml. 然后我使用argparse加载之前的 yaml 并使用 compose API 来初始化 Hydra 环境。训练模型的路径是从 Hydra.yaml文件的路径推断出来的。如果我想修改其中一个参数,我必须添加其他argparse参数并运行类似python reconstruct.py --config_file path_to_previous_job/.hydra/config.yaml --batch_size 128. 然后,该代码使用命令行上指定的参数手动覆盖任何 Hydra 参数。

这样做的正确方法是什么?

我当前的代码如下所示:

train.py

reconstruct.py

这是我第一次发帖,所以如果我需要澄清什么,请告诉我。

0 投票
1 回答
439 浏览

python - Hydra 的默认值列表中的插值原因和错误

这是文件目录:

并且example.yaml是:

csv_images.yaml

我的意图是 hydra 将替换csv_imagescsv_images.yaml. 意思是,example.yaml在运行时的解释将是:

我这样定义ConfigStore

ConfigDatasetConfig以这种方式定义:

但是,当我运行我的程序时,我收到以下错误:

当我定义data_confcsv_images工作正常并执行运行时检查时。但是,插值${}不会。那是什么,我能做什么?

0 投票
1 回答
179 浏览

fb-hydra - 在目录结构中的配置组中组织配置文件是 hydra 支持的功能吗?

让我们假设一个配置组foo和配置文件组织在以下目录结构中:

每个 yaml 文件都将包设置为foousing # @package foo。在运行相应的应用程序时,我可以简单地foo通过指定类似的东西来覆盖foo=bar/aor foo=baz/f。因此,子目录barbaz指示具有更大的可能配置集合的某个类别。

虽然这适用于 hydra 的标准使用,但 hydra 的一些更高级的功能似乎与这种结构不兼容。例如,我想将 glob 与这样的目录结构结合使用foo=glob(bar/*)来扫描某个类别的所有配置。但是,这似乎不起作用,因为 glob 在此示例中找不到任何配置。此外,如果我分配了一个无效的配置foo并且 hydra 列出了可用的选项,那么该列表是空的。

这让我想知道在配置组中进行结构化是否是 hydra 中普遍支持的功能,并且还没有涵盖一些极端情况,或者我是否错误地使用了 hydra 并且不应该使用目录来组织组中的配置?

0 投票
1 回答
98 浏览

python - 有没有办法自动匹配多个参数相同?

我的模型中有多个深度神经网络,并希望它们具有相同的输入大小(网络属于不同的类别)。例如,我的模型是:

这里,Net1 和 Net2 有不同的超参数集,但其中的input_size参数是 Net1 和 Net2 共享的,必须匹配,即 cfg.net1_hparams.input_size == cfg.net2_hparams.input_size

我可以在父级定义 input_size:cfg.input_size并手动将它们传递给 Net1 和 Net2。但是,我希望每个 Net 的 hparams-configs 都是完整的,以便以后我可以只使用cfg.net1_hparams.

在 hydra 中是否有实现这一目标的好方法?