nemo_automodel.components.loggers.loggers
nemo_automodel.components.loggers.loggers
Typed configs for remote loggers (WandB, Trackio, MLflow, Comet, SwanLab).
Each logger config is a plain dataclass exposing its YAML-configurable fields
plus a build(...) method that initialises and returns the logger / run
object. Loggers are a closed, section-named set (no _target_ dispatch), so
there is no free builder function — config.build(...) is the entry point.
Module Contents
Classes
Functions
Data
API
User-facing Comet ML configuration.
Comet API key. None reads from COMET_API_KEY env var.
Enable Comet’s automatic metric logging.
Display name for this experiment run.
Comet project name.
List of string tags attached to the experiment.
Comet workspace. None uses the default.
Initialise Comet ML and return the logger (active on rank 0).
When model_name is provided a model:<name> tag is appended and,
if experiment_name is empty, one is derived from the model name.
Parameters:
Optional model name used to tag the run and derive an experiment name when none is set.
Returns: Any
A CometLogger instance.
User-facing MLflow configuration (maps to the YAML mlflow: block).
Root artifact store URI for the experiment.
Free-text description shown in the MLflow UI
(sets the mlflow.note.content tag).
MLflow experiment name.
Nesting depth for mlflow.log_params.
1 (default) splits one level; None is fully recursive.
When True (default), look for a mlflow_run_id
sidecar in the checkpoint dir and resume that run.
Display name for the run.
Dictionary of string tags attached to the run.
MLflow tracking server URI. None delegates to
MLFLOW_TRACKING_URI and then MLflow’s local default
(sqlite:///mlflow.db in current releases).
Initialise MLflow on rank 0 and start (or resume) a run.
Installs a sys.excepthook so crashed jobs report as FAILED rather
than FINISHED. On non-rank-0 processes returns None.
Parameters:
Checkpoint directory used to persist / read the
mlflow_run_id sidecar for run resumption.
Full training config dict logged as MLflow params
and as a config.yaml artifact.
Returns: Any
Active mlflow.entities.Run on rank 0, or None.
Also log the W&B run to SwanLab (maps to the YAML wandb.swanlab: block).
SwanLab is an additional experiment tracker next to W&B; it is also useful
where Weights & Biases is not reachable. Instead of a parallel set of
logging calls in every recipe, it patches
wandb through swanlab.sync_wandb so every wandb.init /
wandb.log / wandb.config.update / finish a recipe makes is
forwarded to SwanLab. SwanLab therefore records the items W&B records: the
run name, project, tags, group, notes, the full run config, and every logged
number, string, and image at the same step. See the SwanLab logging guide
for the differences (e.g. W&B tables and histograms are not mirrored).
The SwanLab API key is read by the SDK from SWANLAB_API_KEY (or a prior
swanlab login); it is never part of the YAML.
Local directory for SwanLab run files. None uses the SDK default.
SwanLab mode: online, local, offline, or disabled.
Keep uploading to W&B as usual (default). Set it to
False where W&B is not reachable: W&B then runs in offline mode
and only SwanLab receives the run.
SwanLab workspace (user or organization). None uses the
account’s default workspace.
Patch wandb so the next wandb.init and all its logging also go to SwanLab.
Must run before wandb.init. The patch is process-wide and cannot be
undone, so it is installed once: patching twice would forward every call to
SwanLab twice, and a later call with different settings is ignored with a
warning.
User-facing Trackio configuration (maps to the YAML trackio: block).
Trackio <https://github.com/gradio-app/trackio>_ is a local-first experiment tracker with a wandb-style
API. Runs are stored locally (TRACKIO_DIR) unless space_id syncs them to a Hugging Face Space. Any other
key under the YAML trackio: block (e.g. resume, private, server_url, bucket_id,
auto_log_gpu) is a valid trackio.init() kwarg and is preserved verbatim in extra.
Any additional trackio.init() kwargs carried through unfiltered.
Group name for related runs.
Display name for the run. When empty, build derives one from the model name.
Trackio project name.
Hugging Face Space ("user/space" or "space") to sync the project to. None keeps the
run local (or uses TRACKIO_SPACE_ID).
Initialise a Trackio run on rank 0 and return its logger.
Parameters:
JSON-compatible run config, already serialized at the recipe boundary (e.g.
RecipeConfig.to_yaml_dict(use_orig_values=True)).
Optional model name used to derive the run name when name is empty.
Returns: 'TrackioLogger | None'
class:~nemo_automodel.components.loggers.trackio_utils.TrackioLogger on rank 0, None on other
Build from a flat kwargs dict, routing unknown keys to extra.
User-facing WandB configuration (maps to the YAML wandb: block).
The named fields are the common ones; any other key under the YAML
wandb: block (e.g. mode, dir, resume) is a valid
wandb.init() kwarg and is preserved verbatim in extra and
forwarded to wandb.init().
WandB team / entity. None uses the default from
the wandb config or WANDB_ENTITY env var.
Any additional wandb.init() kwargs (mode, dir,
…) carried through unfiltered.
Group name for related runs.
Display name for the run. When empty, build derives
one from the model name.
Free-text notes shown in the WandB UI.
WandB project name.
Optional SwanLabConfig that mirrors this run to
SwanLab (the wandb.swanlab: sub-block).
List of string tags attached to the run.
Initialise WandB and return the run.
Parameters:
Full training config dict logged to the WandB run.
Optional model name used to derive the run name
when name is empty.
Returns: Any
Initialised wandb.Run.
Build from a flat kwargs dict, routing unknown keys to extra.
Keys matching a named field are assigned directly; everything else
(valid wandb.init params such as mode/dir that are not
first-class fields here) is preserved in extra.
Return a 0-d numpy / torch value as the equivalent Python scalar; anything else unchanged.
Make swanlab.sync_wandb forward every value W&B logs.
The mirror (swanlab 0.10) forwards only Python int/float/bool/str
values and SwanLab rejects strings as scalars, so a 0-d numpy or torch value
(e.g. grad_norm) is dropped and a string (e.g. the per-step timestamp)
fails to log. Unwrap 0-d values in Run.log before the mirror filters them
(the same hook sync_wandb patches; W&B stores the same number either way)
and log strings to SwanLab as text.