import os class Logger: _instance = None def __init__(self): Logger._instance = self self.enabled = True self.rank = self._get_true_rank() @staticmethod def _get_true_rank(): try: import torch.distributed as dist if dist.is_available() and dist.is_initialized(): return dist.get_rank() except ImportError: pass return int(os.environ.get("RANK", 0)) @staticmethod def log(message, prefix="[LOG] "): instance = Logger.get_instance() if not instance.enabled or instance.rank != 0: return if prefix is None: print(message, flush=True) else: print(prefix + message, flush=True) @staticmethod def get_instance(): if Logger._instance is None: Logger._instance = Logger() return Logger._instance