Logging & Experiment Tracking

PyTorch Lightning integrates with all major experiment tracking platforms.

Built-in Loggers

CSVLogger

Writes metrics to a CSV file (default when no logger is specified):

from lightning.pytorch.loggers import CSVLogger

logger = CSVLogger(save_dir="logs/", name="mnist_experiment")
trainer = Trainer(logger=logger)

TensorBoardLogger

from lightning.pytorch.loggers import TensorBoardLogger

logger = TensorBoardLogger(
    save_dir="tb_logs/",
    name="resnet50_imagenet",
    version="v1",
    log_graph=True,
)

# Launch TensorBoard
# tensorboard --logdir tb_logs/

Weights & Biases

from lightning.pytorch.loggers import WandbLogger

logger = WandbLogger(
    project="image-classification",
    name="resnet50-run-42",
    tags=["resnet", "imagenet"],
    log_model="all",       # upload checkpoints to W&B Artifacts
)

trainer = Trainer(logger=logger, max_epochs=100)

MLflow

from lightning.pytorch.loggers import MLFlowLogger

logger = MLFlowLogger(
    experiment_name="lightning-demo",
    tracking_uri="http://mlflow-server:5000",
    run_name="experiment-001",
)

Multiple Loggers

from lightning.pytorch.loggers import WandbLogger, CSVLogger, TensorBoardLogger

trainer = Trainer(
    logger=[
        WandbLogger(project="my-project"),
        CSVLogger(save_dir="logs/"),
        TensorBoardLogger(save_dir="tb_logs/"),
    ]
)

Custom Logger

from lightning.pytorch.loggers import Logger
from argparse import Namespace
from typing import Dict, Optional, Union

class MyCustomLogger(Logger):
    @property
    def name(self) -> str:
        return "MyCustomLogger"

    @property
    def version(self) -> Optional[Union[int, str]]:
        return "1.0"

    def log_hyperparams(self, params: Namespace, *args, **kwargs) -> None:
        print(f"Hyperparams: {vars(params)}")

    def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None):
        print(f"Step {step}: {metrics}")

    def save(self) -> None:
        pass

    def finalize(self, status: str) -> None:
        pass