Lightning-AI/pytorch-lightning

`TensorBoardLogger` does not save logs correctly on GCS

Open

#17 037 ouverte le 11 mars 2023

Voir sur GitHub
 (5 commentaires) (2 réactions) (0 assignés)Python (3 233 forks)batch import
bughelp wantedlogger: tensorboard

Métriques du dépôt

Stars
 (26 687 stars)
Métriques de merge PR
 (Merge moyen 9j 15h) (3 PRs mergées en 30 j)

Description

Bug description

TensorBoardLogger records only one scalar when save_dir is a GCS URI (e.g., gs://path/to/logs/).

How to reproduce the bug

import os

import pytorch_lightning as pl
from pytorch_lightning.loggers import TensorBoardLogger
from torch import nn, optim, utils
from torchvision.datasets import MNIST
from torchvision.transforms import ToTensor

# define any number of nn.Modules (or use your current ones)
encoder = nn.Sequential(nn.Linear(28 * 28, 64), nn.ReLU(), nn.Linear(64, 3))
decoder = nn.Sequential(nn.Linear(3, 64), nn.ReLU(), nn.Linear(64, 28 * 28))


# define the LightningModule
class LitAutoEncoder(pl.LightningModule):
    def __init__(self, encoder, decoder):
        super().__init__()
        self.encoder = encoder
        self.decoder = decoder

    def training_step(self, batch, batch_idx):
        # training_step defines the train loop.
        # it is independent of forward
        x, y = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = nn.functional.mse_loss(x_hat, x)
        # Logging to TensorBoard (if installed) by default
        self.log("train_loss", loss)
        return loss

    def configure_optimizers(self):
        optimizer = optim.Adam(self.parameters(), lr=1e-3)
        return optimizer


# init the autoencoder
autoencoder = LitAutoEncoder(encoder, decoder)

# setup data
dataset = MNIST(os.getcwd(), download=True, transform=ToTensor())
train_loader = utils.data.DataLoader(dataset)

# train the model (hint: here are some helpful Trainer arguments for rapid idea iteration)
# logger = TensorBoardLogger('.')
logger = TensorBoardLogger("gs://path/to/logs/")
trainer = pl.Trainer(limit_train_batches=100, max_epochs=1, logger=logger)
trainer.fit(model=autoencoder, train_dataloaders=train_loader)

Error messages and logs

No explicit error messages. Instead, TensorBoard screenshots are attached below.

Save to local Save to GCS

Environment

* CUDA:
        - GPU:
                - Tesla T4
        - available:         True
        - version:           11.7
* Lightning:
        - lightning-utilities: 0.8.0
        - pytorch-lightning: 1.9.4
        - torch:             1.13.1
        - torchmetrics:      0.11.4
        - torchvision:       0.14.1
* Packages:
        - absl-py:           1.4.0
        - aiohttp:           3.8.4
        - aiosignal:         1.3.1
        - async-timeout:     4.0.2
        - attrs:             22.2.0
        - cachetools:        5.3.0
        - certifi:           2022.12.7
        - charset-normalizer: 3.1.0
        - decorator:         5.1.1
        - frozenlist:        1.3.3
        - fsspec:            2023.3.0
        - gcsfs:             2023.3.0
        - google-api-core:   2.11.0
        - google-auth:       2.16.2
        - google-auth-oauthlib: 0.4.6
        - google-cloud-core: 2.3.2
        - google-cloud-storage: 2.7.0
        - google-crc32c:     1.5.0
        - google-resumable-media: 2.4.1
        - googleapis-common-protos: 1.58.0
        - grpcio:            1.51.3
        - idna:              3.4
        - lightning-utilities: 0.8.0
        - markdown:          3.4.1
        - markupsafe:        2.1.2
        - multidict:         6.0.4
        - numpy:             1.24.2
        - nvidia-cublas-cu11: 11.10.3.66
        - nvidia-cuda-nvrtc-cu11: 11.7.99
        - nvidia-cuda-runtime-cu11: 11.7.99
        - nvidia-cudnn-cu11: 8.5.0.96
        - oauthlib:          3.2.2
        - packaging:         23.0
        - pillow:            9.4.0
        - pip:               22.3.1
        - protobuf:          4.22.1
        - pyasn1:            0.4.8
        - pyasn1-modules:    0.2.8
        - pytorch-lightning: 1.9.4
        - pyyaml:            6.0
        - requests:          2.28.2
        - requests-oauthlib: 1.3.1
        - rsa:               4.9
        - setuptools:        65.5.0
        - six:               1.16.0
        - tensorboard:       2.12.0
        - tensorboard-data-server: 0.7.0
        - tensorboard-plugin-wit: 1.8.1
        - torch:             1.13.1
        - torchmetrics:      0.11.4
        - torchvision:       0.14.1
        - tqdm:              4.65.0
        - typing-extensions: 4.5.0
        - urllib3:           1.26.15
        - werkzeug:          2.2.3
        - wheel:             0.38.4
        - yarl:              1.8.2
* System:
        - OS:                Linux
        - architecture:
                - 64bit
                - ELF
        - processor:         x86_64
        - python:            3.10.9
        - version:           #34-Ubuntu SMP Fri Jan 6 01:03:08 UTC 2023

More info

No response

cc @awaelchli

Guide contributeur