> This page is for version 0.9.
> For other versions, use one of these documentation indexes:
> - Latest (default): https://docs.nvidia.com/nemo-helix/latest/llms.txt
> - 0.9: https://docs.nvidia.com/nemo-helix/v0.9/llms.txt
> - 0.8: https://docs.nvidia.com/nemo-helix/v0.8/llms.txt
> - 0.7: https://docs.nvidia.com/nemo-helix/v0.7/llms.txt
> - 0.6: https://docs.nvidia.com/nemo-helix/v0.6/llms.txt
> - 0.5: https://docs.nvidia.com/nemo-helix/v0.5/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-helix/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-helix/_mcp/server.

# Parameters Reference

This page summarizes the main configuration groups available when creating
NeMo Safe Synthesizer jobs. For generated REST API schema details, see the
[Safe Synthesizer API Reference](/nemo-helix/v0.9/documentation/reference/api-reference).

## Job Spec (Plugin / REST)

Top-level fields on the Safe Synthesizer job spec (alongside `config`):

| Field                  | Description                                                                                                                                                                                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `data_source`          | Input data as a platform fileset URL (`workspace/fileset#path`). When you use the Python SDK, `SafeSynthesizerJobBuilder.with_data_source()` also accepts a pandas DataFrame or a local `.csv`, `.parquet`, `.json`, or `.jsonl` file; the builder uploads it to Files and sets `data_source` for you. |
| `pretrained_model_job` | Prior completed job whose **`adapter`** result in Files is reused for **generation-only** synthesis. Format: `<job>` or `<workspace>/<job>`. Takes precedence over `config.training.pretrained_model`.                                                                                                 |
| `hf_token_secret`      | Platform secret name for Hugging Face token during model initialization                                                                                                                                                                                                                                |

## Top-Level Configuration

The `SafeSynthesizerParameters` schema defines the main configuration structure for Safe Synthesizer jobs.
It comes from the upstream NeMo Safe Synthesizer library, and NeMo Helix passes it through unchanged.
For each section's fields, defaults, and tuning guidance, follow the link to the upstream
[Configuration Reference](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/).

### SafeSynthesizerParameters

All fields are optional at the top level. For nested field constraints, you can also search for the schema name from the **Type** column in the
[Safe Synthesizer API Reference](/nemo-helix/v0.9/documentation/reference/api-reference).

| Field         | Type                             | SDK builder method            | Constraints / description                                                                                                                                                                                                                                                                                       |
| ------------- | -------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`        | `DataParameters`                 | `with_data()`                 | Controls grouping, ordering, and train/evaluation holdout behavior. See [Data](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#data).                                                                                                                                           |
| `evaluation`  | `EvaluationParameters`           | `with_evaluate()`             | Controls synthetic data quality and privacy evaluation settings. See [Evaluation](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#evaluation).                                                                                                                                  |
| `training`    | `TrainingHyperparams`            | `with_train()`                | Controls fine-tuning behavior such as learning rate, batch size, LoRA settings, and optimization settings. See [Training](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#training).                                                                                            |
| `generation`  | `GenerateParameters`             | `with_generate()`             | Controls synthetic data generation, including record count, sampling, structured generation, and validation. See [Generation](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#generation).                                                                                      |
| `privacy`     | `DifferentialPrivacyHyperparams` | `with_differential_privacy()` | Configures DP-SGD. When omitted, differential privacy is disabled. See [Differential Privacy](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#differential-privacy).                                                                                                            |
| `time_series` | `TimeSeriesParameters`           | `with_time_series()`          | Configures experimental time-series mode, including timestamp and interval handling. See [Time Series](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#time-series).                                                                                                            |
| `replace_pii` | `PiiReplacerConfig`              | `with_replace_pii()`          | Configures PII detection and replacement. If provided directly, `steps` must contain 1 to 10 transformation steps. See [Replacing PII](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#replacing-pii) and [PII Replacement](#pii-replacement) below for NeMo Helix differences. |

The builder methods accept the same field names as keyword arguments, for example
`.with_train(learning_rate=0.0005)` sets `config.training.learning_rate`.

## NeMo Helix Differences

The following behavior is specific to running Safe Synthesizer as a NeMo Helix job.

### PII Replacement

PII replacement is on by default for jobs created through the CLI or REST API; set `config.enable_replace_pii` to `false` to disable it.
The Python SDK builder runs PII replacement only when you call `.with_replace_pii()`.

### Column Classification (`replace_pii.globals.classify`)

Column classification uses an LLM served through the Inference Gateway, selected by
`replace_pii.globals.classify.classify_model_provider` instead of the upstream `NSS_INFERENCE_KEY` and `NSS_INFERENCE_ENDPOINT` environment variables.
Set it with the SDK builder's `.with_classify_model_provider(provider_name)` method. The provider name can be unqualified (the builder prepends the current workspace) or fully-qualified as `workspace/provider_name`.

If omitted, column classification is skipped and PII detection falls back to heuristic defaults, which may reduce accuracy.

### Pretrained Model

`config.training.pretrained_model` is not an Inference Gateway model. It names the base model that the job fine-tunes inside its own container.
The default, `HuggingFaceTB/SmolLM3-3B`, is loaded from the `default/smollm3-3b` fileset when your deployment has it staged in Files.
Any other model ID is downloaded from Hugging Face Hub at job start, which requires outbound network access from the job;
set `hf_token_secret` (or call `.with_hf_token_secret()`) for gated models or to avoid rate limits.
For supported model families, refer to the upstream [Training](https://nvidia-nemo.github.io/Safe-Synthesizer/0.1.13/user-guide/configuration/#training) reference.

To reuse a model trained by an earlier job, set `pretrained_model_job` instead.

---

## Example Configuration

Here's an example showing a complete job configuration using the Python SDK:

```python
import time

import pandas as pd

from nemo_helix_plugin.client.client import NemoClient
from nemo_safe_synthesizer_plugin.sdk.job_builder import SafeSynthesizerJobBuilder

df = pd.DataFrame({"text": [f"sample record {i}" for i in range(200)]})
client = NemoClient.from_config()

builder = (
    SafeSynthesizerJobBuilder(client)
    .with_data_source(df)
    .with_classify_model_provider("default/nvidia-build")
    .with_train(
        num_input_records_to_sample=10000,
        learning_rate=0.0005,
        batch_size=1,
    )
    .with_generate(
        num_records=5000,
        temperature=0.9,
    )
    .with_differential_privacy(
        dp_enabled=True,
        epsilon=8.0,
    )
    .with_replace_pii()
    .synthesize()
)
job = builder.create_job(name=f"my-job-{int(time.time())}")
```

## Related Topics

* [data-synthesis](/nemo-helix/v0.9/documentation/synthesize-safe-data/about/data-synthesis) - Learn about synthesis concepts
* [evaluation](/nemo-helix/v0.9/documentation/synthesize-safe-data/about/evaluation) - Learn about evaluation metrics
* [index](/nemo-helix/v0.9/documentation/synthesize-safe-data/tutorials) - Hands-on tutorials