Hydra
提示
如果您尚未使用 ClearML,请参阅ClearML 设置说明。
Hydra 是一个用于管理任务参数的 Python 框架。ClearML 与 Hydra 无缝集成,并自动记录包含所有配置文件以及运行时覆盖值的 OmegaConf
。
您只需添加两行代码即可
from clearml import Task
task = Task.init(task_name="<task_name>", project_name="<project_name>")
ClearML 将 OmegaConf 记录为 blob,可在WebApp 中任务的配置 > 配置对象 > OmegaConf 部分查看。
修改 Hydra 值
通过命令行
您可以使用 Hydra 的命令行语法修改您的 OmegaConf:覆盖、追加或移除配置值
- 覆盖配置值:
foo.bar=value
- 追加配置值:
+foo.bar=value
- 移除配置值:
~foo.bar
或~foo.bar=value
更多信息请参阅Hydra 文档。
通过 UI
在 UI 中,您可以多次克隆任务,并修改它以便由ClearML Agent 执行。Agent 将使用您在 UI 中所做的修改来执行代码,甚至会覆盖硬编码的值。
克隆您的任务,然后通过 UI 以下列方式之一修改您的 Hydra 参数
-
直接修改 OmegaConf
- 在任务的配置 > 超参数 > HYDRA 部分,将
_allow_omegaconf_edit_
设置为True
- 在任务的配置 > 配置对象 > OmegaConf 部分,修改 OmegaConf 值
- 在任务的配置 > 超参数 > HYDRA 部分,将
-
添加任务超参数
- 在任务的配置 > 超参数 > HYDRA 部分,确保
_allow_omegaconf_edit_
设置为False
- 在同一部分,点击
Edit
,这将提供添加参数的选项。使用点表示法输入要从 OmegaConf 修改的参数。例如,如果您的 OmegaConf 如下所示
dataset:
user: root
main:
number: 80使用
dataset.main.number
指定number
参数,然后设置其新值 - 在任务的配置 > 超参数 > HYDRA 部分,确保
将定制的任务加入队列执行。任务在执行期间将使用新值。如果您使用上面提到的第二种选项,请注意配置 > 配置对象 > OmegaConf 中的 OmegaConf 会根据您添加的参数而改变。
代码示例
查看演示如何将 ClearML 集成到使用 Hydra 的脚本的示例此处。