跳到主要内容

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 configuration Hydra configuration

修改 Hydra 值

通过命令行

您可以使用 Hydra 的命令行语法修改您的 OmegaConf:覆盖、追加或移除配置值

  • 覆盖配置值:foo.bar=value
  • 追加配置值:+foo.bar=value
  • 移除配置值:~foo.bar~foo.bar=value

更多信息请参阅Hydra 文档

通过 UI

在 UI 中,您可以多次克隆任务,并修改它以便由ClearML Agent 执行。Agent 将使用您在 UI 中所做的修改来执行代码,甚至会覆盖硬编码的值。

克隆您的任务,然后通过 UI 以下列方式之一修改您的 Hydra 参数

  • 直接修改 OmegaConf

    1. 在任务的配置 > 超参数 > HYDRA 部分,将 _allow_omegaconf_edit_ 设置为 True
    2. 在任务的配置 > 配置对象 > OmegaConf 部分,修改 OmegaConf 值
  • 添加任务超参数

    1. 在任务的配置 > 超参数 > HYDRA 部分,确保 _allow_omegaconf_edit_ 设置为 False
    2. 在同一部分,点击 Edit,这将提供添加参数的选项。使用点表示法输入要从 OmegaConf 修改的参数。例如,如果您的 OmegaConf 如下所示

    dataset:
    user: root
    main:
    number: 80

    使用 dataset.main.number 指定 number 参数,然后设置其新值

将定制的任务加入队列执行。任务在执行期间将使用新值。如果您使用上面提到的第二种选项,请注意配置 > 配置对象 > OmegaConf 中的 OmegaConf 会根据您添加的参数而改变。

代码示例

查看演示如何将 ClearML 集成到使用 Hydra 的脚本的示例此处