Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(logging): 🔊 add logging configuration for PyTorch Lightning and Transformers #128

Merged
merged 3 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions maestro/trainer/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from .logger import configure_logging, set_lightning_logging, set_transformers_progress

# Configure default logging settings on import
configure_logging()

__all__ = ["set_lightning_logging", "set_transformers_progress"]
66 changes: 66 additions & 0 deletions maestro/trainer/logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import logging
import os

from transformers.utils.logging import disable_progress_bar, enable_progress_bar


def configure_logging() -> None:
"""Configure global logging settings for PyTorch Lightning and Transformers.

Sets up logging based on environment variables:
MAESTRO_LIGHTNING_LOG_LEVEL: Sets Lightning's logging level (default: "INFO")
MAESTRO_TRANSFORMERS_PROGRESS: Controls Transformers progress bar (1=enabled, 0=disabled)

Example:
import os
os.environ["MAESTRO_LIGHTNING_LOG_LEVEL"] = "DEBUG"
os.environ["MAESTRO_TRANSFORMERS_PROGRESS"] = "1"
from maestro.trainer import configure_logging
configure_logging()
"""
lightning_level = os.getenv("MAESTRO_LIGHTNING_LOG_LEVEL", "INFO")
set_lightning_logging(lightning_level)

if os.getenv("MAESTRO_TRANSFORMERS_PROGRESS", "") == "1":
set_transformers_progress(True)
else:
set_transformers_progress(False)


def set_lightning_logging(level: str) -> None:
"""Set PyTorch Lightning logging level while preserving transformers state.

Args:
level (str): Logging level (e.g., "INFO", "DEBUG", "WARNING", "ERROR")

Example:
from maestro.trainer import set_lightning_logging
set_lightning_logging("DEBUG")
"""

lightning_logging = logging.getLogger("lightning")
pytorch_lightning_logging = logging.getLogger("pytorch_lightning")
cuda_logging = logging.getLogger("lightning.pytorch.accelerators.cuda")
rank_zero_logging = logging.getLogger("lightning.pytorch.utilities.rank_zero")

lightning_logging.setLevel(getattr(logging, level))
pytorch_lightning_logging.setLevel(getattr(logging, level))
cuda_logging.setLevel(getattr(logging, level))
rank_zero_logging.setLevel(getattr(logging, level))


def set_transformers_progress(status: bool) -> None:
"""Control visibility of Transformers progress bars.

Args:
status (bool): True to enable progress bars, False to disable

Example:
from maestro.trainer import set_transformers_progress
set_transformers_progress(True) # Enable progress bars
set_transformers_progress(False) # Disable progress bars
"""
if status:
enable_progress_bar()
else:
disable_progress_bar()
Loading