禁用 hydra 的文件输出

Disable file output of hydra

我正在使用 hydra 记录实验的超参数。

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

有时我想干运行检查一些东西。为此,我不需要任何保存的参数,所以我想知道在这种情况下如何完全禁用对文件系统的保存?

有一个针对 Hydra 1.1 的 enhancement request 以支持禁用工作目录管理。 工作目录管理正在做很多事情:

  • 正在为 运行
  • 创建一个工作目录
  • 正在将工作目录更改为创建的目录。

还有其他相关功能:

  • 正在保存日志文件
  • 将 config.yaml 和 hydra.yaml 等文件保存到工作目录中的 .hydra 中。

不同的功能有不同的禁用方法:

  1. 要防止创建工作目录,您可以将 hydra.run.dir 覆盖为 .
  2. 要防止将文件保存为 .hydra,override hydra.output_subdir to null
  3. 要防止创建日志文件,您可以禁用 hydra/hydra_logginghydra/job_logging 的日志输出,请参阅 this

一个完整的示例可能如下所示:

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

如果您想使用 CLI 解决这个问题,Omry Yadan 的答案很有效。但是,您也可以将这些标志添加到您的配置文件中,这样您就不必在每次 运行 您的脚本时都输入它们。如果你想走这条路,请确保在你的根配置文件中添加以下项目:

defaults:  
  - _self_  
  - override hydra/hydra_logging: disabled  
  - override hydra/job_logging: disabled  
  
hydra:  
  output_subdir: null  
  run:  
    dir: .