> This page is for version 0.4.0.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo/gym/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.2.1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/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__)
```