Data Designer SDK Resources

View as Markdown

The data_designer.config module provides a consistent, context-agnostic experience for building Data Designer configs. Once you are ready to execute that config through NeMo Services APIs, you use objects from the nemo_platform SDK. This page explains the SDK objects used for Data Designer API execution.

DataDesignerResource

The DataDesignerResource is the initial SDK object for working with Data Designer through the SDK. It provides Data Designer API preview and create operations for Data Designer configurations.

A DataDesignerResource is accessed directly from a NeMoPlatform instance:

import os
from nemo_platform import NeMoPlatform
client = NeMoPlatform(
base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
workspace="default",
)
data_designer = client.data_designer # this object is a DataDesignerResource

The DataDesignerResource is primarily used to make Data Designer API preview requests (preview) and create jobs (create), but exposes some additional useful methods:

MethodDescription
validate(config_builder, *, workspace=None)Checks a configuration and returns a ValidationReport (see below).
check_models(config_builder, *, workspace=None)Probes the models a configuration references and returns a CheckModelsReport (see below).
get_default_model_providers()Returns a list of model providers registered with the Models API and Inference Gateway API that can be used in your Data Designer config.
get_job_resource(job_name: str)Returns a DataDesignerJobResource for interacting with a job (see below).

Validating a config

validate() runs the same checks preview() and create() perform internally, but never short-circuits — every detectable problem appears in one report. Use it to catch configuration errors before submitting work.

It checks that your configuration is well-formed and that the platform resources it names resolve. It does not check whether those models respond; see check_models().

import data_designer.config as dd
config_builder = dd.DataDesignerConfigBuilder(
model_configs=[
dd.ModelConfig(
provider="default/nvidia-build",
model="nvidia/nemotron-3.5-lightning-30b-a3b",
alias="text",
)
],
)
# Add columns, constraints, seed datasets, processors, and profilers here.
report = client.data_designer.validate(config_builder)
if not report.ok:
for error in report.errors:
print(error.message)

The workspace keyword argument selects the workspace used to resolve provider references and seed sources. It falls back to the platform client’s workspace, then to "default".

report = client.data_designer.validate(config_builder, workspace="my-workspace")

Checking models

check_models() probes every model your configuration references, without running a workload. It sends a small generation request to each model alias through the Inference Gateway and reports whether it came back.

This is the companion to validate(). A provider can resolve while still refusing to serve the model named alongside it, so a green ValidationReport is not a promise that a preview will run — only a live request can tell you that.

report = client.data_designer.check_models(config_builder)
if not report.ok:
for error in report.errors:
print(f"{error.error_type}: {error.message}")

Each call bills a real generation per model alias, so use it when you first wire up a config or change a model or provider, rather than on every edit. Models configured with skip_health_check=True are skipped.

Unlike validate(), the probe stops at the first model that fails. The resource logs each alias as it checks it, so the output identifies which model failed:

🩺 Running health checks for models...
👀 Checking 'nvidia/nemotron-3.5-lightning-30b-a3b' in provider named 'default/nvidia-build' for model alias 'text'...
✅ Passed!

The workspace keyword argument behaves the same as it does for validate().

ValidationReport

validate() returns a ValidationReport describing what the checks found.

AttributeDescription
okTrue when no errors were found.
errorsA list of ValidationError objects, each with a message string. Empty when ok is True.
config_sourceThe configuration source path when validation ran through the CLI. None for SDK calls.

CheckModelsReport

check_models() returns a CheckModelsReport describing what the probes found.

AttributeDescription
okTrue when every probe succeeded.
errorsA list of ModelCheckError objects, each with an error_type and a message string. Empty when ok is True.
config_sourceThe configuration source path when the check ran through the CLI. None for SDK calls.

The error_type names the underlying failure — for example ModelNotFoundError for a model the provider will not serve, ModelAuthenticationError for a credentials problem, or ModelAPIConnectionError when the provider could not be reached.

DataDesignerJobResource

The DataDesignerJobResource provides several helper methods for working with a job. It is returned by the DataDesignerResource.create() method when you create a job; you can also use DataDesignerResource.get_job_resource() to get an instance of this object for an existing job.

Some of the most useful methods are described below.

MethodDescription
wait_until_done()Polls the job service until the job reaches a terminal state. Prints job logs along the way.
get_logs()Returns logs from the job as a list of dicts. Handles pagination automatically.
download_artifacts()Downloads the job results as a tar archive. Returns a DataDesignerJobResults object (see below).

DataDesignerJobResults

The DataDesignerJobResults object simplifies loading downloaded job results into memory.

MethodDescription
load_analysis()Returns a DatasetProfilerResults object (from the library) with an analysis of the dataset.
load_dataset()Returns the output dataset as a Pandas DataFrame.
load_processor_dataset(processor_name: str)Returns the named processor dataset as a Pandas DataFrame.