跨多个模型的 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 中的检查点加载模型