Local and Subprocess Execution
Run NeMo Safe Synthesizer on your machine’s GPU with nemo safe-synthesizer run-local. The public command is a local subprocess wrapper: the main NeMo CLI starts a separate Safe Synthesizer runtime Python, and that runtime executes the synthesis task module.
This page covers local execution only. Platform job submission uses the Jobs API or SDK; the nemo safe-synthesizer CLI exposes run-local and runtime.
Prerequisites
- CUDA-capable NVIDIA GPU on the host (80GB+ VRAM recommended; check with
nvidia-smi). See Getting Started. - NeMo Platform repository checkout with the Safe Synthesizer plugin installed.
- No running platform required for a typical local run when you pass
--data-source— the NSS runtime can download base models from Hugging Face directly.
Confirm the CLI surface:
Execution modes
There are two local paths:
Both modes run on the host GPU and write artifacts to the local filesystem. Both accept the same task arguments: --spec-file, --workspace, --output-dir, and optional --data-source.
Run with the managed local subprocess
Use a job spec JSON (example in plugins/nemo-safe-synthesizer/src/nemo_safe_synthesizer_plugin/nss-job.json) and a local input file:
The parent command launches a subprocess equivalent to:
Find the configured runtime Python with:
Run the local task directly
Direct task execution is useful when you need to reproduce a subprocess failure without the parent CLI wrapper.
If the runtime Python does not exist, run uv run nemo safe-synthesizer runtime setup first.
If you omit --data-source, the task downloads data_source from the platform Files service. Use --data-source for offline local files.
Output layout
Reuse a prior adapter (generation only)
Adapter reuse always skips training and runs generate + evaluate only — the same path as the OSS library’s load_from_save_path().generate().
Run-local
Point config.training.pretrained_model at a prior run’s adapter directory or work tree:
Run 1 — train and write an adapter:
Run 2 — generate more records from that adapter:
The plugin resolves ./nss-output-1/adapter to the prior run under ./nss-output-1/work. The work/ tree must still exist from run 1.
You can also point at ./nss-output-1/work or a specific run directory under it.
Platform jobs (pretrained_model_job)
For platform jobs, set pretrained_model_job to a completed job that has an adapter result stored in Files:
Do not set config.training.pretrained_model when using pretrained_model_job.
Training runs embed safe-synthesizer-config.json in the adapter artifact uploaded to Files so subsequent generation-only jobs can reload the prior run configuration.
Use an absolute path for local pretrained_model if you run from a different working directory.
Runtime commands
Automated tests
Unit tests (no GPU)
From plugins/nemo-safe-synthesizer:
Opt-in host-local E2E (GPU)
Optional: NSS_LOCAL_E2E_TIMEOUT_SECONDS (default 3600).
Requires RUN_NSS_LOCAL_E2E=1, CUDA, and nemo safe-synthesizer runtime setup.
Troubleshooting
Related topics
- Getting Started — GPU and local runtime prerequisites
- Plugin README:
plugins/nemo-safe-synthesizer/README.md