跨多个模型的 Pytorch Lightning Tensorboard 记录器

Posted

技术标签:

【中文标题】跨多个模型的 Pytorch Lightning Tensorboard 记录器【英文标题】:Pytorch Lightning Tensorboard Logger Across Multiple Models 【发布时间】:2021-10-12 21:33:58 【问题描述】:

相对于手动跟踪指标,我对 Lightning 和 Loggers 比较陌生。我正在尝试训练两个不同的模型,并将它们的准确性和损失绘制在 Colab 中 tensorboard(或任何其他记录器)的相同图表上。

我现在拥有的基本上是:

trainer1 = pl.Trainer(gpus=n_gpus, max_epochs=n_epochs, progress_bar_refresh_rate=20, num_sanity_val_steps=0)

trainer2 = pl.Trainer(gpus=n_gpus, max_epochs=n_epochs, progress_bar_refresh_rate=20, num_sanity_val_steps=0)

trainer1.fit(Model1, train_loader, val_loader)
trainer2.fit(Model2, train_loader, val_loader)

#Then later:

%load_ext tensorboard

%tensorboard --logdir lightning_logs/

此时我希望看到的是在同一张图表上一起绘制的那些记录的指标,我们将不胜感激。我花了一些时间试图玩弄这个,但我对此有点不知所措,谢谢!

【问题讨论】:

【参考方案1】:

用于记录特定指标的确切图表取决于您在 .log() 调用中提供的键名(这是 Lightning 从 TensorBoard 本身继承的功能)

def validation_step(self, batch, _):
  #  This string decides which chart to use in the TB web interface
  #         vvvvvvvvv
  self.log('valid_acc', acc)

只需对两个.log() 调用使用相同的字符串,并将两个运行保存在同一个目录中。

logger = TensorBoardLogger(save_dir='lightning_logs/', name='model1')
logger = TensorBoardLogger(save_dir='lightning_logs/', name='model2')

如果您运行 tesnsorboard --logdir ./lightning_logs 指向父目录,您应该能够在同一个图表中看到这两个指标,键名为 valid_acc

【讨论】:

以上是关于跨多个模型的 Pytorch Lightning Tensorboard 记录器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyTorch Lightning 中编写多个训练设置

在 DDP Pytorch Lightning 中跨 GPU 拆分训练数据

PyTorch Lightning 中的批量测试及其存在的问题

无法从 Pytorch-Lightning 中的检查点加载模型

PyTorch-lightning 模型在第一个 epoch 后内存不足

使用 pytorch-lightning 实现 Network in Network CNN 模型