3

I'm using hydra to log hyperparameters of experiments.

@hydra.main(config_name="config", config_path="../conf")
def evaluate_experiment(cfg: DictConfig) -> None:
    print(OmegaConf.to_yaml(cfg))
    ...

Sometimes I want to do a dry run to check something. For this I don't need any saved parameters, so I'm wondering how I can disable the savings to the filesystem completely in this case?

kielnino
  • 160
  • 1
  • 7
  • I don't understand what you mean by "this logs the parameters again". – Omry Yadan Dec 03 '20 at 02:00
  • Sorry for beeing unspecific. I've updated the question. The main question is "How to disable the logging to the filesystem completely when using hydra." – kielnino Dec 04 '20 at 06:57
  • Your question is wrong. using compose does not configure the logging. If you think it does please open an issue with a minimal repro. – Omry Yadan Dec 05 '20 at 07:05
  • @OmryYadan You are absolutely right. I made a mistake and updated the question. But the main question remains the same. – kielnino Dec 06 '20 at 15:05

2 Answers2

12

The answer from Omry Yadan works well if you want to solve this using the CLI. However, you can also add these flags to your config file such that you don't have to type them every time you run your script. If you want to go this route, make sure you add the following items in your root config file:

defaults:  
  - _self_  
  - override hydra/hydra_logging: disabled  
  - override hydra/job_logging: disabled  
  
hydra:  
  output_subdir: null  
  run:  
    dir: .
J smit
  • 121
  • 2
  • 5
  • 1
    Hello, thank you very much for the clarification. In my particular case, I would like the logging to appear in the terminal but not to create the files. Also, I would like the log to be coloured. The hydra field would be tha same but the defaults will be set as colorlog. Is that correct? – Javier Naranjo Alcázar Jul 15 '22 at 10:37
8

There is an enhancement request aimed at Hydra 1.1 to support disabling working directory management. Working directory management is doing many things:

  • Creating a working directory for the run
  • Changing the working directory to the created dir.

There are other related features:

  • Saving log files
  • Saving files like config.yaml and hydra.yaml into .hydra in the working directory.

Different features has different ways to disable them:

  1. To prevent the creation of a working directory, you can override hydra.run.dir to ..
  2. To prevent saving the files into .hydra, override hydra.output_subdir to null.
  3. To prevent the creation of logging files, you can disable logging output of hydra/hydra_logging and hydra/job_logging, see this.

A complete example might look like:

$ python foo.py hydra.run.dir=. hydra.output_subdir=null hydra/job_logging=disabled hydra/hydra_logging=disabled

Note that as always you can also override those config values through your config file.

Omry Yadan
  • 31,280
  • 18
  • 64
  • 87