Customizing working directory pattern
Run output directory grouped by day:
hydra:
run:
dir: ./outputs/${now:%Y-%m-%d}/${now:%H-%M-%S}
Sweep sub directory contains the the job number and the override parameters for the job instance:
hydra:
sweep:
subdir: ${hydra.job.num}_${hydra.job.num}_${hydra.job.override_dirname}
Run output directory grouped by job name:
hydra:
run:
dir: outputs/${hydra.job.name}/${now:%Y-%m-%d_%H-%M-%S}
Run output directory can contain user configuration variables:
hydra:
run:
dir: outputs/${now:%Y-%m-%d_%H-%M-%S}/opt:${optimizer.type}
Run output directory can contain override parameters for the job
hydra:
run:
dir: output/${hydra.job.override_dirname}
Configuring hydra.job.override_dirnameβ
hydra.job.override_dirname
can be configured via hydra.job.config.override_dirname.
You can exclude keys such as random_seed
or change the separator used to construct override_dirname.
hydra:
job:
config:
# configuration for the ${hydra.job.override_dirname} runtime variable
override_dirname:
kv_sep: '='
item_sep: ','
exclude_keys: []
Customizing outputs with substitution through the CLIβ
Outputs can also be configured through the CLI, like any other configuration.
python train.py model.nb_layers=3 hydra.run.dir=3_layers
This feature can become really powerful to write multiruns without boilerplate using substitution.
python train.py --multirun model.nb_layers=1,2,3,5 hydra.sweep.dir=multiruns/layers_effect hydra.sweep.subdir=\${model.nb_layers}
With bash, be careful to escape the $ symbol. Otherwise, bash will try to resolve the substitution, instead of passing it to Hydra.