如何在DARTs中抑制PyTorch Lightning的日志输出
解决Darts predict循环调用重复输出设备信息的问题
我明白你遇到的麻烦——每次调用predict都输出一遍GPU/TPU设备信息,循环100次就刷100遍,确实很烦人。Darts底层依赖PyTorch Lightning,每次predict时可能会重新初始化Lightning的训练器组件,导致这些日志重复打印。下面几个方案应该能帮你解决:
方案1:初始化模型时传入Trainer参数抑制日志
在创建NBEATSModel(或其他Darts模型)时,通过trainer_kwargs传入PyTorch Lightning Trainer的配置,直接关闭日志和冗余输出组件:
from darts.models import NBEATSModel import torchmetrics model3 = NBEATSModel( input_chunk_length=20, output_chunk_length=1, n_epochs=50, torch_metrics=torchmetrics, # 配置Trainer参数,抑制日志输出 trainer_kwargs={ "logger": False, "enable_model_summary": False, "enable_progress_bar": False, "enable_checkpointing": False } )
这个方法从模型初始化阶段就阻止了Lightning生成那些设备状态日志,是最直接的解决方式。
方案2:全局调整PyTorch Lightning日志级别
如果方案1没完全生效,你可以全局把PyTorch Lightning的日志级别调到ERROR,只保留严重错误信息:
import logging # 抑制PyTorch Lightning的INFO级日志 logging.getLogger("pytorch_lightning").setLevel(logging.ERROR) logging.getLogger("pytorch_lightning.utilities.rank_zero").setLevel(logging.ERROR)
把这段代码放在导入Darts和PyTorch Lightning的代码之后,就能过滤掉那些重复的设备状态提示。
方案3:调整Darts自身的日志设置
Darts也有独立的日志体系,你可以直接把它的日志级别设为ERROR,进一步减少冗余输出:
import logging import darts darts.logging.set_logging_level(logging.ERROR)
这个可以和方案2配合使用,形成双重保险。
验证效果
修改后再运行你的循环代码,那些重复的GPU/TPU设备信息应该就不会再出现了。如果还有残留日志,可以检查是否有其他依赖库的日志源,但通常上面的方案足够解决问题。
内容的提问来源于stack exchange,提问作者Josh Purtell
相关产品推荐
相关产品推荐

