如何禁用 PyTorch-Lightning 记录器的日志记录?
Posted
技术标签:
【中文标题】如何禁用 PyTorch-Lightning 记录器的日志记录?【英文标题】:How to disable logging from PyTorch-Lightning logger? 【发布时间】:2021-10-18 19:17:57 【问题描述】:PyTorch-Lightning 中的 Logger 打印有关要训练(或评估)的模型以及训练过程中的进度的信息,
但是,就我而言,我想隐藏来自记录器的所有消息,以免将输出淹没在Jupyter Notebook
。
我在官方文档页面https://pytorch-lightning.readthedocs.io/en/latest/common/trainer.html#trainer-flags 上查看了 Trainer 类的 API,似乎没有关闭来自记录器的消息的选项。
有一个参数log_every_n_steps
可以设置成很大的值,但还是会显示每个epoch后的记录结果。
如何禁用日志记录?
【问题讨论】:
【参考方案1】:我假设在输出流泛滥方面有两件事特别困扰您:
一、“体重汇总”:
| Name | Type | Params
--------------------------------
0 | l1 | Linear | 100 K
1 | l2 | Linear | 1.3 K
--------------------------------
...
二、进度条:
Epoch 0: 74%|███████████ | 642/1874 [00:02<00:05, 233.59it/s, loss=0.85, v_num=wxln]
PyTorch Lightning 为关闭它们提供了非常清晰和优雅的解决方案:Trainer(progress_bar_refresh_rate=0)
用于关闭进度条,Trainer(weights_summary=None)
用于关闭重量摘要。
【讨论】:
progress_bar_refresh_rate
现在似乎已被弃用。推荐使用enable_progress_bar=False
。或者添加一个TQDMProgressBar
回调并修改为refresh_rate
【参考方案2】:
或许可以这样试试?
logging.getLogger("package").propagate = False
【讨论】:
感谢您的建议。但是,问题仍然存在【参考方案3】:解决方案是结合@Artyrm Sergeev 的建议和此处建议的答案https://***.com/a/52559560/13614416。
获取所有pytorch_lightning
记录器:
pl_loggers = [ logging.getLogger(名称) logging.root.manager.loggerDict 中的名称 如果名称中有“pytorch_lightning” ]
将trainer.fit
放入以下构造中:
捕获 io.capture_output():trainer.fit(...)
【讨论】:
以上是关于如何禁用 PyTorch-Lightning 记录器的日志记录?的主要内容,如果未能解决你的问题,请参考以下文章
Pytorch-Lightning 是不是具有多处理(或 Joblib)模块?
无法从 Pytorch-Lightning 中的检查点加载模型