> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server. # nemo_gym.artifacts.exporters Run-metadata exporters. `setup_exporters` opens one exporter per configured backend during global config resolution; call sites then fan out through the module-level `export_*` helpers. A backend's module — and with it a multi-hundred-millisecond tracking SDK import — is loaded only once its config says it is wired up. That is why the registry pairs each backend with a config model from `config_types` rather than asking the exporter class whether it is available. ## Submodules * **[`nemo_gym.artifacts.exporters.atif`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/atif)** * **[`nemo_gym.artifacts.exporters.base`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/base)** * **[`nemo_gym.artifacts.exporters.evalrdl`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/evalrdl)** * **[`nemo_gym.artifacts.exporters.isolated`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/isolated)** * **[`nemo_gym.artifacts.exporters.metrics`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/metrics)** * **[`nemo_gym.artifacts.exporters.mlflow`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/mlflow)** * **[`nemo_gym.artifacts.exporters.mlflow_config`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/mlflow_config)** * **[`nemo_gym.artifacts.exporters.wandb`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/wandb)** * **[`nemo_gym.artifacts.exporters.wandb_config`](/nemo/gym/nemo-gym/nemo_gym/artifacts/exporters/wandb_config)** ## Package Contents ### Functions | Name | Description | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | | [`_load_exporter_class`](#nemo_gym-artifacts-exporters-_load_exporter_class) | - | | [`export_metrics`](#nemo_gym-artifacts-exporters-export_metrics) | - | | [`export_rollouts`](#nemo_gym-artifacts-exporters-export_rollouts) | - | | [`exporter_extras`](#nemo_gym-artifacts-exporters-exporter_extras) | The install extras of every exporter `config` fully configures, in registry order. | | [`get_exporters`](#nemo_gym-artifacts-exporters-get_exporters) | The exporters opened for this process. Empty when no backend is configured. | | [`load_run_exporter_class`](#nemo_gym-artifacts-exporters-load_run_exporter_class) | The post-run exporter class registered as `name`; raises `ConfigError` naming the valid choices. | | [`load_run_exporter_config_model`](#nemo_gym-artifacts-exporters-load_run_exporter_config_model) | The settings model of the post-run exporter `name`; importing it never loads the exporter's SDK. | | [`mark_run_failed`](#nemo_gym-artifacts-exporters-mark_run_failed) | Record that this process's evaluation ended without its results, so exporters close the run as failed. | | [`run_failed`](#nemo_gym-artifacts-exporters-run_failed) | Whether `mark_run_failed` was called since the exporters were last opened. | | [`setup_exporters`](#nemo_gym-artifacts-exporters-setup_exporters) | Open every backend that is fully configured, and log the run config to each. | | [`teardown_exporters`](#nemo_gym-artifacts-exporters-teardown_exporters) | Close all open exporters. Safe to call repeatedly and when none are open. | ### Data [`EXPORTER_REGISTRY`](#nemo_gym-artifacts-exporters-EXPORTER_REGISTRY) [`_EXPORTERS`](#nemo_gym-artifacts-exporters-_EXPORTERS) [`_RUN_FAILED`](#nemo_gym-artifacts-exporters-_RUN_FAILED) [`logger`](#nemo_gym-artifacts-exporters-logger) ### API ```python nemo_gym.artifacts.exporters._load_exporter_class( class_path: str ) -> type[nemo_gym.artifacts.exporters.base.BaseExporter] ``` ```python nemo_gym.artifacts.exporters.export_metrics( metrics: dict[str, typing.Any], step: typing.Optional[int] = None ) -> None ``` ```python nemo_gym.artifacts.exporters.export_rollouts( rollouts: list[dict[str, typing.Any]] ) -> None ``` ```python nemo_gym.artifacts.exporters.exporter_extras( config: typing.Any ) -> tuple[str, ...] ``` The install extras of every exporter `config` fully configures, in registry order. A driver that installs Gym must install these too, or the exporter is skipped at run time. ```python nemo_gym.artifacts.exporters.get_exporters() -> list[nemo_gym.artifacts.exporters.base.BaseExporter] ``` The exporters opened for this process. Empty when no backend is configured. ```python nemo_gym.artifacts.exporters.load_run_exporter_class( name: str ) -> type[nemo_gym.artifacts.exporters.base.Exporter] ``` The post-run exporter class registered as `name`; raises `ConfigError` naming the valid choices. Only `gym eval export` uses this. A live run builds its exporters in `setup_exporters`, which treats a missing SDK or a backend that won't start as a warning and carries on. Here the user asked for this exporter, so a missing SDK is an error that says how to install it. ```python nemo_gym.artifacts.exporters.load_run_exporter_config_model( name: str ) -> type[nemo_gym.config.config_types.RunExportConfig] ``` The settings model of the post-run exporter `name`; importing it never loads the exporter's SDK. ```python nemo_gym.artifacts.exporters.mark_run_failed() -> None ``` Record that this process's evaluation ended without its results, so exporters close the run as failed. ```python nemo_gym.artifacts.exporters.run_failed() -> bool ``` Whether `mark_run_failed` was called since the exporters were last opened. ```python nemo_gym.artifacts.exporters.setup_exporters( global_config_dict: omegaconf.DictConfig ) -> list[nemo_gym.artifacts.exporters.base.BaseExporter] ``` Open every backend that is fully configured, and log the run config to each. Replaces any previously opened exporters. A backend that fails to start is skipped with a warning: telemetry must not take the run down with it. ```python nemo_gym.artifacts.exporters.teardown_exporters() -> None ``` Close all open exporters. Safe to call repeatedly and when none are open. ```python nemo_gym.artifacts.exporters.EXPORTER_REGISTRY: dict[str, tuple[type[ExporterConfig], str, str]] = {'wandb': (WANDBConfig, 'nemo_gym.artifacts.exporters.wandb:WandbExporter', 'wan... ``` ```python nemo_gym.artifacts.exporters._EXPORTERS: list[BaseExporter] = [] ``` ```python nemo_gym.artifacts.exporters._RUN_FAILED = False ``` ```python nemo_gym.artifacts.exporters.logger = logging.getLogger(__name__) ``` ## Docs - [nemo_gym.artifacts.exporters.atif](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/atif.md) - [nemo_gym.artifacts.exporters.base](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/base.md) - [nemo_gym.artifacts.exporters.evalrdl](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/evalrdl.md) - [nemo_gym.artifacts.exporters.isolated](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/isolated.md) - [nemo_gym.artifacts.exporters.metrics](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/metrics.md) - [nemo_gym.artifacts.exporters.mlflow](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/mlflow.md) - [nemo_gym.artifacts.exporters.mlflow_config](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/mlflow_config.md) - [nemo_gym.artifacts.exporters.wandb](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/wandb.md) - [nemo_gym.artifacts.exporters.wandb_config](https://docs.nvidia.com/nemo/gym/v0.5.0/nemo-gym/nemo_gym/artifacts/exporters/wandb_config.md)