Skip to main content

Hydra

tip

If you are not already using ClearML, see Getting Started for setup instructions.

Hydra is a Python framework for managing experiment parameters. ClearML integrates seamlessly with Hydra and automatically logs the OmegaConf which holds all the configuration files, as well as values overridden during runtime.

All you have to do is add two lines of code:

from clearml import Task

task = Task.init(task_name="<task_name>", project_name="<project_name>")

ClearML logs the OmegaConf as a blob and can be viewed in the WebApp, in the experiment's CONFIGURATION > CONFIGURATION OBJECTS > OmegaConf section.

Hydra configuration

Modifying Hydra Values

Via Command Line

You can use Hydra's command line syntax to modify your OmegaConf: override, append, or remove configuration values:

  • Override config value: foo.bar=value
  • Append config value: +foo.bar=value
  • Remove config value: ~foo.bar or ~foo.bar=value

See the Hydra documentation for more information.

Via UI

In the UI, you can clone a task multiple times and modify it for execution by the ClearML Agent. The agent executes the code with the modifications you made in the UI, even overriding hardcoded values.

Clone your experiment, then modify your Hydra parameters via the UI in one of the following ways:

  • Modify the OmegaConf directly:

    1. In the experiment's CONFIGURATION > HYPERPARAMETERS > HYDRA section, set _allow_omegaconf_edit_ to True
    2. In the experiment's CONFIGURATION > CONFIGURATION OBJECTS > OmegaConf section, modify the OmegaConf values
  • Add an experiment hyperparameter:

    1. In the experiment's CONFIGURATION > HYPERPARAMETERS > HYDRA section, make sure _allow_omegaconf_edit_ is set to False
    2. In the same section, click Edit, which gives you the option to add parameters. Input parameters from the OmegaConf that you want to modify using dot notation. For example, if your OmegaConf looks like this:

    dataset:
    user: root
    main:
    number: 80

    Specify the number parameter with dataset.main.number, then set its new value

Enqueue the customized experiment for execution. The task will use the new values during execution. If you use the second option mentioned above, notice that the OmegaConf in CONFIGURATION > CONFIGURATION OBJECTS > OmegaConf changes according to your added parameters.

Code Example

See example which demonstrates integrating ClearML into script that uses Hydra here.