(self, project_name, experiment_name, default_backend: Union[str, List[str]] = 'console', config=None)
| 25 | supported_backend = ["wandb", "mlflow", "swanlab", "console"] |
| 26 | |
| 27 | def __init__(self, project_name, experiment_name, default_backend: Union[str, List[str]] = 'console', config=None): |
| 28 | if isinstance(default_backend, str): |
| 29 | default_backend = [default_backend] |
| 30 | for backend in default_backend: |
| 31 | if backend == 'tracking': |
| 32 | import warnings |
| 33 | warnings.warn("`tracking` logger is deprecated. use `wandb` instead.", DeprecationWarning) |
| 34 | else: |
| 35 | assert backend in self.supported_backend, f'{backend} is not supported' |
| 36 | |
| 37 | self.logger = {} |
| 38 | |
| 39 | if 'tracking' in default_backend or 'wandb' in default_backend: |
| 40 | import wandb |
| 41 | wandb.init(project=project_name, name=experiment_name, config=config) |
| 42 | self.logger['wandb'] = wandb |
| 43 | |
| 44 | if 'mlflow' in default_backend: |
| 45 | import mlflow |
| 46 | mlflow.start_run(run_name=experiment_name) |
| 47 | mlflow.log_params(_compute_mlflow_params_from_objects(config)) |
| 48 | self.logger['mlflow'] = _MlflowLoggingAdapter() |
| 49 | |
| 50 | if "swanlab" in default_backend: |
| 51 | import swanlab |
| 52 | import os |
| 53 | |
| 54 | SWANLAB_API_KEY = os.environ.get("SWANLAB_API_KEY", None) |
| 55 | SWANLAB_LOG_DIR = os.environ.get("SWANLAB_LOG_DIR", "swanlog") |
| 56 | SWANLAB_MODE = os.environ.get("SWANLAB_MODE", "cloud") |
| 57 | if SWANLAB_API_KEY: |
| 58 | swanlab.login(SWANLAB_API_KEY) # NOTE: previous login information will be overwritten |
| 59 | swanlab.init(project=project_name, |
| 60 | experiment_name=experiment_name, |
| 61 | config=config, |
| 62 | logdir=SWANLAB_LOG_DIR, |
| 63 | mode=SWANLAB_MODE) |
| 64 | self.logger["swanlab"] = swanlab |
| 65 | |
| 66 | if 'console' in default_backend: |
| 67 | from verl.utils.logger.aggregate_logger import LocalLogger |
| 68 | self.console_logger = LocalLogger(print_to_console=True) |
| 69 | self.logger['console'] = self.console_logger |
| 70 | |
| 71 | def log(self, data, step, backend=None): |
| 72 | for default_backend, logger_instance in self.logger.items(): |
nothing calls this directly
no test coverage detected