使用 Pytorch Lightning 时关闭 Hydra 的控制台日志记录

Posted

技术标签:

【中文标题】使用 Pytorch Lightning 时关闭 Hydra 的控制台日志记录【英文标题】:Turn off console logging for Hydra when using Pytorch Lightning 【发布时间】:2021-06-01 10:29:23 【问题描述】:

有没有办法关闭 Hydra 的控制台日志记录,但保留文件日志记录?我遇到了 Hydra 复制所有控制台打印的问题。这些打印由 Pytorch Lightning 处理,我希望它们保持这种状态。但是,我可以将 hydra 记录到文件中(每次打印一次),但我不想在控制台中看到我的打印两次。

【问题讨论】:

我在调用我的 python 脚本时尝试使用 hydra/job_logging=disabled 和 hydra/hydra_logging=disabled,但这也禁用了一些 Pytorch Lightning 日志记录。 【参考方案1】:

我认为我们在这里遇到了类似的问题https://github.com/facebookresearch/hydra/issues/1012

你试过设置吗

hydra/job_logging=none
hydra/hydra_logging=none

按照问题中的建议,看看是否更适合您?

【讨论】:

感谢您的快速回答,它奏效了。由于我对文档有点挣扎,我将发布一个附加答案,详细说明您需要使用 Hydra 1.0 执行哪些操作以禁用日志记录。【参考方案2】:

我在 hydra 文档方面有点挣扎,这就是为什么我想在这里写一个详细的解释,以便其他人可以轻松使用。为了能够使用@j_hu提出的答案,即:

hydra/job_logging=none
hydra/hydra_logging=none

使用 hydra 1.0(这是我撰写此答案时的稳定版本),您首先需要:

    在您的配置目录中创建一个名为 hydra 的目录。 创建两个子目录:job_logging 和 hydra_logging。 在这两个目录中创建两个 none.yaml 文件,如下所述。
# @package _group_
version: 1
root: null
disable_existing_loggers: false

完成此操作后,您可以使用none.yaml 配置通过命令行覆盖日志记录:

python main.py hydra/job_logging=none hydra/hydra_logging=none

或通过config.yaml 文件:

defaults:
  - hydra/hydra_logging: none
  - hydra/job_logging: none

【讨论】:

谢谢! none 选项在 Hydra 1.1 中开箱即用,但在 Hydra 1.0 中不可用。

以上是关于使用 Pytorch Lightning 时关闭 Hydra 的控制台日志记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从Pytorch 到 Pytorch Lightning | 简要介绍

使用 Pytorch Lightning DDP 时记录事物的正确方法

将 ddp 后端与 PyTorch Lightning 一起使用时验证整个验证集

pytorch-lightning 中的正态分布采样

将 Captum 与 Pytorch Lightning 一起使用?

由于使用了 wandb,PyTorch Lightning 想要在导入时创建一个文件夹,这会在 AWS Lambda 上引发错误