Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:CarperAI Trlx Logging

From Leeroopedia


Knowledge Sources
Domains Infrastructure, Distributed_Training
Last Updated 2026-02-07 16:00 GMT

Overview

Concrete tool for multi-process aware logging in the trlx library, with configurable verbosity and rank-based log filtering.

Description

The logging module provides a comprehensive logging system for trlx, modeled after the HuggingFace transformers logging pattern. The MultiProcessAdapter class extends Python's LoggerAdapter to filter log messages by distributed rank, ensuring only rank 0 logs by default while allowing per-rank logging when needed. The module supports verbosity control via the TRLX_VERBOSITY environment variable, advisory warning suppression via TRLX_NO_ADVISORY_WARNINGS, and a globally toggleable tqdm progress bar wrapper (_tqdm_cls / EmptyTqdm).

Usage

Use get_logger(__name__) in any trlx module to obtain a rank-aware logger. Configure verbosity via set_verbosity() or the TRLX_VERBOSITY environment variable (debug, info, warning, error, critical).

Code Reference

Source Location

Signature

class MultiProcessAdapter(logging.LoggerAdapter):
    def log(self, level, msg, *args, **kwargs):
        """
        Log with rank filtering. Only logs if current rank is in the
        'ranks' kwarg (default: ["0"]).

        Args:
            level: Log level.
            msg: Log message.
            ranks: List of rank strings that should emit this log.
        """

    def process(self, msg, kwargs):
        """Prepend rank information to log messages."""


def get_logger(name: Optional[str] = None) -> MultiProcessAdapter:
    """
    Get a rank-aware logger for the given module name.

    Args:
        name: Module name (typically __name__).

    Returns:
        MultiProcessAdapter wrapping a Python logger.
    """


def get_verbosity() -> int:
    """Get the current log verbosity level."""

def set_verbosity(verbosity: int) -> None:
    """Set the log verbosity level for all trlx loggers."""

def enable_progress_bar() -> None:
    """Enable tqdm progress bars globally."""

def disable_progress_bar() -> None:
    """Disable tqdm progress bars globally (replaces with no-op)."""

Import

from trlx.utils.logging import get_logger, set_verbosity, disable_progress_bar

I/O Contract

Inputs

Name Type Required Description
name str No Module name for the logger (typically __name__)
verbosity int Yes Log level constant (DEBUG, INFO, WARNING, ERROR, CRITICAL)
TRLX_VERBOSITY env var No Environment variable to set default verbosity
TRLX_NO_ADVISORY_WARNINGS env var No Set to "1" to suppress advisory warnings

Outputs

Name Type Description
get_logger returns MultiProcessAdapter Rank-aware logger instance
get_verbosity returns int Current verbosity level

Usage Examples

Basic Logger Usage

from trlx.utils.logging import get_logger, set_verbosity
import logging

# 1. Get a logger for current module
logger = get_logger(__name__)

# 2. Set verbosity to DEBUG
set_verbosity(logging.DEBUG)

# 3. Log messages (only rank 0 by default)
logger.info("Training started")
logger.debug("Batch size: %d", batch_size)

# 4. Log from all ranks
logger.warning("Memory warning", ranks=None)

# 5. Log only from rank 1
logger.info("Rank 1 status", ranks=["1"])

Control Progress Bars

from trlx.utils.logging import disable_progress_bar, enable_progress_bar

# Disable tqdm bars in non-interactive environments
disable_progress_bar()

# Re-enable when needed
enable_progress_bar()

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment