nemo-data-designer-plugin

Par nvidia · skills

Utiliser lorsque l'utilisateur souhaite créer un jeu de données, générer des données synthétiques ou construire un pipeline de génération de données.

npx skills add https://github.com/nvidia/skills --skill nemo-data-designer-plugin

Avant de commencer

N'explorez pas d'abord l'espace de travail. L'étape Learn du workflow vous donne tout ce dont vous avez besoin.

Objectif

Construire un dataset synthétique à l'aide de la bibliothèque Data Designer qui correspond à cette description :

$ARGUMENTS

Workflow

Utilisez le mode Autopilot si l'utilisateur laisse entendre qu'il ne souhaite pas répondre à des questions — par exemple, s'il dit quelque chose comme « sois péremptoire », « à toi de décider », « fais des hypothèses raisonnables », « construis simplement », « surprends-moi », etc. Sinon, utilisez le mode Interactive (par défaut).

Lisez uniquement le fichier workflow qui correspond au mode sélectionné, puis suivez-le :

  • Interactive → lisez workflows/interactive.md
  • Autopilot → lisez workflows/autopilot.md

Règles

  • Conservez toutes les colonnes dans la sortie par défaut. Les seules exceptions pour supprimer une colonne sont : (1) l'utilisateur le demande explicitement, ou (2) c'est une colonne d'aide qui existe uniquement pour dériver d'autres colonnes (par exemple, un objet personne échantillonné utilisé pour extraire le nom, la ville, etc.). En cas de doute, conservez la colonne.
  • Ne suggérez ni ne posez de questions sur les datasets de seed. Utilisez-en un uniquement si l'utilisateur fournit explicitement des données de seed ou demande de construire à partir de records existants. Lorsque vous utilisez un seed, lisez references/seed-datasets.md.
  • Quand le dataset nécessite des données de personne (noms, démographie, adresses), lisez references/person-sampling.md.
  • Si un script de dataset qui correspond à la description du dataset existe déjà, demandez à l'utilisateur s'il souhaite l'éditer ou créer un nouveau.
  • Pour les commandes et le contexte spécifiques à ce plugin NeMo Platform (par exemple, l'approvisionnement en configs de modèle auprès de fournisseurs IGW ou les ModelConfigs in-script, l'installation ou la publication de locales Nemotron Personas, les pointeurs de ressources côté plateforme), lisez references/nemo-platform-plugin-additions.md.

Conseils d'utilisation et pièges courants

  • Les colonnes Sampler et validation ont besoin d'un type et de params. Par exemple, sampler_type="category" avec params=dd.CategorySamplerParams(...).
  • Templates Jinja2 dans les champs prompt, system_prompt et expr : référencez les colonnes avec {{ column_name }}, les champs imbriqués avec {{ column_name.field }}.
  • SamplerColumnConfig: Prend params, pas sampler_params.
  • Accès au score du juge LLM: LLMJudgeColumnConfig produit un dict imbriqué où chaque nom de score correspond à {reasoning: str, score: int}. Pour obtenir le score numérique, utilisez l'attribut .score. Par exemple, pour une colonne de juge nommée quality avec un score nommé correctness, utilisez {{ quality.correctness.score }}. Utiliser {{ quality.correctness }} retourne le dict complet, pas le score numérique.

Dépannage

  • nemo data-designer CLI introuvable: Dites à l'utilisateur que nemo data-designer n'est pas installé dans cet environnement (nécessite Python >= 3.11). Demandez s'il souhaite que vous créiez un environnement virtuel et l'installiez, ou s'il préfère le faire lui-même. N'installez rien sans la permission de l'utilisateur.
  • Erreurs réseau lors de l'aperçu: Un environnement sandbox peut bloquer les requêtes sortantes. Demandez la permission à l'utilisateur pour réessayer la commande avec le sandbox désactivé. En dernier recours seulement, si la réessai en dehors du sandbox échoue également, dites à l'utilisateur d'exécuter la commande lui-même.

Modèle de sortie

Écrivez un fichier Python dans le répertoire courant avec une fonction load_config_builder() qui retourne un DataDesignerConfigBuilder. Nommez le fichier de manière descriptive (par exemple, customer_reviews.py). Utilisez les métadonnées inline PEP 723 pour les dépendances.

# /// script
# dependencies = [
#   "data-designer", # always required
#   "pydantic", # only if this script imports from pydantic
#   # add additional dependencies here
# ]
# ///
import data_designer.config as dd
from pydantic import BaseModel, Field


# Use Pydantic models when the output needs to conform to a specific schema
class MyStructuredOutput(BaseModel):
    field_one: str = Field(description="...")
    field_two: int = Field(description="...")


# Use custom generators when built-in column types aren't enough
@dd.custom_column_generator(
    required_columns=["col_a"],
    side_effect_columns=["extra_col"],
)
def generator_function(row: dict) -> dict:
    # add custom logic here that depends on "col_a" and update row in place
    row["name_in_custom_column_config"] = "custom value"
    row["extra_col"] = "extra value"
    return row


def load_config_builder() -> dd.DataDesignerConfigBuilder:
    config_builder = dd.DataDesignerConfigBuilder(
        # Declaring model configs programmatically here is the portable path:
        # it works for both local `run` and cluster `submit`, while the local
        # YAML registry alternative only works for `run`. The provider below
        # is a common default created during `nemo setup` — confirm it (or
        # discover others) with `nemo inference providers list`. See
        # references/nemo-platform-plugin-additions.md for the local-YAML alternative.
        model_configs=[
            dd.ModelConfig(
                alias="text",
                model="...",
                provider="default/nvidia-build",
                inference_parameters=dd.ChatCompletionInferenceParams(),
            ),
        ],
    )

    # Seed dataset (only if the user explicitly mentions a seed dataset path)
    # config_builder.with_seed_dataset(dd.LocalFileSeedSource(path="path/to/seed.parquet"))

    # config_builder.add_column(...)
    # config_builder.add_processor(...)

    return config_builder

Incluez uniquement les modèles Pydantic, les générateurs personnalisés, les datasets de seed et les dépendances supplémentaires si la tâche l'exige. Préférez l'inclusion de model_configs lorsque le dataset utilise des colonnes LLM — le déclarer dans le script garde la config portable entre run local et submit en cluster, tandis que l'alternative du registre local YAML fonctionne uniquement avec run.

Skills similaires