Skip to content

v0.3.0 2026-01-08

Choose a tag to compare

@johnnygreco johnnygreco released this 08 Jan 21:15
· 336 commits to main since this release
de417c8

🎨 NeMo Data Designer v0.3.0 Release Notes

DataDesigner v0.3.0 introduces some breaking changes that we highlight below.

💥 Breaking Change: config validation

The Data Designer config validation method .validate has been moved from the config builder to the DataDesigner object.

Before (v0.2.x):

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder

data_designer = DataDesigner()
config_builder = DataDesignerConfigBuilder()

# ... build your config ...

# validate config
config_builder.validate()

After (v0.3.x):

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder

data_designer = DataDesigner()
config_builder = DataDesignerConfigBuilder()

# ... build your config ...

# validate config
data_designer.validate(config_builder)

💥 Breaking Change: seed datasets

Working with seed datasets has been simplified with the introduction of SeedSource objects, which are passed directly to config_builder.with_seed_dataset. This removes the step of making a seed reference with datastore settings (when needed).

Before (v0.2.x):

Seed from a local file:

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder

config_builder = DataDesignerConfigBuilder()

seed_dataset_reference = data_designer.make_seed_reference_from_file("my_seed_dataset.parquet")
config_builder.with_seed_dataset(seed_dataset_reference)

Seed from a Dataframe:

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder

# define dataframe `df`

config_builder = DataDesignerConfigBuilder()

# the dataframe must be written to file in v0.2.x
seed_dataset_reference = data_designer.make_seed_reference_from_dataframe(df, "my_seed_dataset.parquet")

config_builder.with_seed_dataset(seed_dataset_reference)

After (v0.3.x):

Seed from a local file:

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder, LocalFileSeedSource

config_builder = DataDesignerConfigBuilder()
config_builder.with_seed_dataset(LocalFileSeedSource(path="my_seed_dataset.parquet"))

Seed from a DataFrame:

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder, DataFrameSeedSource

# define dataframe `df`

config_builder = DataDesignerConfigBuilder()

# no need to specify a file, as the dataframe will be sampled directly in memory
config_builder.with_seed_dataset(DataFrameSeedSource(df=df))

Seed from Hugging Face Hub:

from data_designer.essentials import DataDesigner, DataDesignerConfigBuilder, HuggingFaceSeedSource

config_builder = DataDesignerConfigBuilder()
config_builder.with_seed_dataset(HuggingFaceSeedSource(path="datasets/my-username/my-dataset/data/*.parquet"))

💥 Breaking Change: plugins

When defining plugins, there are two important updates:

  • task -> impl
  • The arguments of the Plugin object are now given as fully-qualified object names (e.g., "my_plugin.module.PluginObject") rather than the actual objects.

Before (v0.2.x):

from my_plugin.multiple_column_generator import IndexMultiplierColumnGenerator, IndexMultiplierColumnConfig
from data_designer.plugins import Plugin, PluginType 

plugin = Plugin(
    task_cls=IndexMultiplierColumnGenerator,
    config_cls=IndexMultiplierColumnConfig,
    plugin_type=PluginType.COLUMN_GENERATOR,
    emoji="🔌",
)

After (v0.3.x)

from data_designer.plugins import Plugin, PluginType 

plugin = Plugin(
    impl_qualified_name="my_plugin.multiple_column_generator.IndexMultiplierColumnGenerator",
    config_qualified_name="my_plugin.multiple_column_generator.IndexMultiplierColumnConfig",
    plugin_type=PluginType.COLUMN_GENERATOR,
    emoji="🔌",
)

What's Changed

New Contributors

Full Changelog: v0.2.2...v0.3.0