问题标签 [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 投票
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 回答
439 浏览

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

这是文件目录:

并且example.yaml是:

csv_images.yaml

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

我这样定义ConfigStore

ConfigDatasetConfig以这种方式定义:

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

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

0 投票
1 回答
72 浏览

python - 在python中重新引用大量函数

我有一个文件functional.py,它定义了许多有用的功能。对于每个函数,我想创建一个别名,当调用它时会引用一个函数。像这样的东西:

foo/functional.py

foo/__init__.py

我可以通过functional.py使用inspect和动态定义一组适合我目的的新函数来获取这些函数。

但为什么?你可能会问... 我正在使用配置管理器Hydra,其中可以通过指定完全限定名称来实例化对象。我想利用functional.py配置中的函数,并在创建使用该函数的对象时让 hydra 传递对该函数的引用(更多详细信息可以在Hydra 文档中找到)。

有很多功能,我不想把它们都写出来……人们在类似的问题globals()中指出,为此目的进行修改是不好的做法。我的用例受到了相当大的限制——文档方面有一个一对一的映射(但显然 IDE 无法解决它)。

基本上,我想知道是否有更好的方法来做到这一点!

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 中是否有实现这一目标的好方法?

0 投票
2 回答
66 浏览

hydra-python - 如何在 hydra-python 中从同一组创建两个字段?

我的配置文件结构:

config.yaml的是:

如您所见,我的配置中有两个名为valid_datasetandtrain_dataset的字段,其值是从其自己的配置组中选择的。我应该怎么做才能使从同一组中选择的两个字段的值?

0 投票
1 回答
314 浏览

python - Hydra 通过配置文件删除默认值

我正在使用Hydra来配置我的 Python 应用程序。我真的很喜欢如何拥有默认配置并为某些配置属性创建“覆盖”。但是,我不知道如何从运行中删除属性(例如删除属性)。我看到通过终端可以做到这一点python run.py ~foo.bar,但我想知道如何用配置文件做同样的事情?

例如,在以下配置文件中,我将覆盖 max_epochs,但如何将属性 max_epochs 全部删除?

0 投票
1 回答
40 浏览

fb-hydra - 在具有多个 GPU 的单个节点上远程执行

我正在研究在单个节点上远程运行 hydra 的文档。我正在寻找可以运行本地计算机中存在的代码并在 GCP 实例上运行它的方法。

任何指针?

0 投票
2 回答
67 浏览

hydra-python - Hydras 清扫器,特别是 Ax-sweeper 如何释放/分配内存?

所以我使用 Hydra 1.1来管理我的配置,并在minerl environmenthydra-ax-sweeper==1.1.5上运行一些超参数优化。为此,我使用多处理(通过 pytorch)将大量数据加载到内存中(加载多处理时峰值约为 50Gb,完全加载后降至 30Gb)。

在正常运行中,这不是问题(我的机器有 90+Gb RAM),一次训练完成没有任何问题。

但是,当我使用-m选项(和hydra/sweeper: ax配置)运行相同的代码时,代码在大约 2-3 次清扫器运行后停止,卡在数据加载阶段,因为系统的所有内存(+交换内存)都被占用了。

首先,我认为这是环境代码的一些问题minerl,它在子进程中启动 java-code。所以我尝试在没有环境的情况下运行我的代码(只有 30Gb 数据),但我仍然遇到同样的问题。所以我怀疑我在 Hydra 清扫器之间有一些内存泄漏。

所以我的问题是,九头蛇扫地机(或斧头扫地机)如何在两次扫地之间工作?我一直有这样的印象,它运行main(cfg: DictConfig)装饰有@hydra.main(...),采用标量返回(分数)并以这个分数运行贝叶斯优化器,main()调用类似于函数(内部的所有内容都被正确地释放/在每次扫描运行之间收集垃圾)。

不是这样吗?然后我应该将数据加载到外部某处main()并在扫描之间保存吗?

非常感谢您!

0 投票
1 回答
55 浏览

fb-hydra - 使用显式嵌套专门化 Hydra 配置

我想拥有:

在 中config.yamltext/font.yaml分配给fonttext/regions.yaml的地方regions,例如:

或者

以上都行不通!

是否有可能以yaml某种方式在该级别达到预期的结果?

0 投票
1 回答
282 浏览

fb-hydra - 在 hydra-python 结构化配置中,如何插入值?

我正在使用@dataclass带有 hydra 1.1 的结构化配置(基于 -)并尝试插入一些值。具体来说,我想通过替换我的一些配置值来设置工作目录。

使用 yaml 时,我可以通过查阅文档来做到这一点:

如何使用结构化配置来做到这一点?