nemotron-customize
Objectif
Utilise cette skill pour transformer une demande de customisation de modèle en un pipeline d'étapes Nemotron natif du repo. Elle planifie le DAG des étapes, valide le câblage des artefacts et crée uniquement les configs YAML nécessaires pour exécuter les étapes existantes.
Utilise-la uniquement pour inspecter, configurer, valider, exécuter ou soumettre les étapes Nemotron existantes ou les pipelines d'entraînement/customisation multi-étapes. Si la demande concerne un frontend, un tableau de bord, une visualisation, des conseils ML génériques, la facturation/l'accès, ou une tâche de codage sans rapport, arrête-toi avec une note d'étendue courte et n'inspecte pas le catalogue d'étapes ni n'édite les fichiers lors de ce tour.
Notes de sécurité
Cette skill peut utiliser Write pour créer ou modifier les fichiers YAML/README et Bash pour exécuter des commandes du repo. Confirme avec l'utilisateur avant les écritures de fichiers ou l'exécution de shell. Maintiens l'utilisation de Bash limitée aux commandes sûres pour le repo, comme uv run nemotron steps ..., python -m pytest ..., git status/diff, et les commandes de validation ciblées. N'exécute jamais les dumps d'environnement (env, printenv, export large) ni les commandes qui exposent des valeurs secrètes.
Exigences
- Checkout du repo Nemotron avec
src/nemotron/steps/présent. - Invoque depuis la racine du repo. Tous les chemins dans ce document sont relatifs à la racine du repo.
- Contraintes de modèle, données, matériel, backend et sortie fournies par l'utilisateur avant d'écrire les configs.
- Credentials du backend uniquement quand l'étape sélectionnée en a besoin (traduction, W&B, endpoints hébergés).
Limitations
- N'invente pas de nouvelles étapes du catalogue quand une étape existante convient.
- Du nouveau code Python/shell uniquement en mode Explorer après que l'écart soit explicite.
- Les demandes de déploiement post-entraînement ne sont pas dans le périmètre.
Invocation : /nemotron-customize. Le repo sous src/nemotron/steps/ est la source de vérité ; cette skill orchestre et ne duplique pas la connaissance par étape.
Ordre de priorité : (1) réutiliser le code repo existant, les CLIs, les recettes, les étapes, les runners et les configs ; (2) ajouter des configs YAML pour ta demande ; (3) générer du nouveau Python/shell uniquement quand le repo ne peut pas satisfaire la demande, et nomme d'abord l'écart.
Pour une demande de commande : vérifie la racine du repo, lis le catalogue d'étapes, lis le step.toml sélectionné, vérifie que la config demandée existe, lis le TOML env actif pour tout profil distant, puis émets la commande complète. Ne devine pas les profils --batch à partir d'exemples ou de conventions de nommage.
Arbre de décision rapide
- AutoModel vs Megatron-Bridge : petit nombre de GPU, modèle Hugging Face, LoRA/PEFT, ou JSONL chat style OpenAI → chemin AutoModel (
sft/automodelou l'étape PEFT AutoModel correspondante). Entraînement distribué large, données Parquet empaquetées/binidx, ou fine-tuning complet → Megatron-Bridge, mais vérifie par rapport àhardware.mdet le README de catégorie en premier. - Les entrées BYOB / benchmark MCQ vont vers
byob/mcq, PAStranslate/nemo_curator. BYOB préserve le schéma multiple-choix (question, choix, réponse) ; le chemin traduction aplatira ou supprimera ces champs. Déclenche sur des phrases comme « benchmark BYOB », « MCQ », « Parquet benchmark d'évaluation », « prep multiple-choix ». - Curate puis traduis : quand l'utilisateur dit « curate et translate », « filter puis translate », ou « prep données avant traduction », chaîne
curate/nemo_curator(filtre JSONL brut) →translate/nemo_curator(traduit JSONL curé). Ne saute pas l'étape de curation. - Conversion de checkpoint : route « Megatron to HF », « HF export », « convert checkpoint », ou « iter_ to safetensors » vers
convert/megatron_to_hf; route « HF to Megatron » imports versconvert/hf_to_megatron. Utilise une source `iter_` concrète pour les exports Megatron. - Évaluation endpoint ou checkpoint existant : route les smoke tests d'endpoint hébergé et les demandes de benchmark vers
eval/model_eval; utilisetiny_chatpour le smoke chat hébergé etdefaultpour l'évaluation de checkpoint Megatron. - Aucun profil env TOML présent : n'invente pas de profils Lepton ou
--batch; demande à l'utilisateur ou bascule vers l'exécution locale.
Entrées requises avant de finaliser les configs ou commandes :
model,input_path,output_dir, matériel/nombre de GPU, backend/profil env, et toute variable d'environnement de clé API nécessaire, commeHF_TOKENou une clé d'évaluateur.- Pour les commandes de traduction, collecte aussi
server.url, langues cible/source, et les chemins d'entrée/sortie visibles au runtime. - Pour BYOB, collecte chemin du benchmark/document source, étape (
prepare,generate,translate, ouall), langues cible/source lors de la traduction, et répertoire de sortie. - Pour conversion, collecte chemin du checkpoint source, chemin de sortie, source de modèle/config, et si la source est HF, Megatron
iter_*, ou un adaptateur LoRA. - Pour eval, collecte URL endpoint/ID modèle ou chemin du checkpoint, IDs de tâches, type d'endpoint, nom de variable d'environnement de clé API, et limite d'échantillon.
Forme de réponse pour les recommandations : Decision, Why, Required inputs, Config/command, Avoid, et Next step. Appelle toujours la pile à éviter quand les contraintes de l'utilisateur la rendent mauvaise.
Comment les informations sont divisées (et où les trouver)
| Question | Cherche ici |
|---|---|
| Que consomme/produit/paramétrize l'étape X ? | src/nemotron/steps/<cat>/<X>/step.toml |
| Quand/pourquoi choisir l'étape X par rapport à ses sœurs ? | src/nemotron/steps/<cat>/<X>/README.md |
| Quelle étape dans la catégorie C devrais-je choisir ? | src/nemotron/steps/<cat>/README.md |
| Quel code runner l'étape X utilise-t-elle ? | src/nemotron/steps/<cat>/<X>/step.py → src/nemotron/steps/_runners/ |
| Contrainte cross-step (tokenizer lock, sequence packing, qualité des données, ...) | src/nemotron/steps/patterns/<id>.md |
Compatibilité artefact / hiérarchie is_a |
src/nemotron/steps/types.toml |
| Heuristiques GPU memory / parallelism | src/nemotron/steps/hardware.md |
| Extraits API bibliothèque pour la génération de code exceptionnelle | references/context/index.toml → references/context/<pack>.txt |
| Règles d'échafaudage de projet, uniquement quand le code repo ne peut pas supporter la demande | references/act/PROJECT.md |
| Règles par étape, uniquement quand le code repo ne peut pas supporter la demande | references/act/STAGE.md |
Si deux sources disent la même chose, celle plus profonde, plus spécifique gagne (step.toml > category README.md > ce fichier).
Instructions
Pipeline workflow (≥2 étapes) : Orient → Plan → Act → Verify. Découvre les étapes candidates, propose un DAG avec câblage d'artefacts validé, attends l'approbation, crée les configs YAML minimales, et re-vérifie avant de rapporter fait. Pas de conseils ML génériques — src/nemotron/steps/ est la source de vérité.
Flux de commande mono-étape :
- Confirme que la racine du repo a
pyproject.tomletsrc/nemotron/steps/. - Exécute
uv run nemotron steps list --jsonsi disponible ; sinon lissrc/nemotron/steps/STEPS.md. - Lis le
step.tomlde l'étape sélectionnée et la config vérifiée demandée. - Pour l'exécution distante, lis
NEMOTRON_ENV_FILEou unenv*.tomlà la racine du repo et choisis une section actuelle dont le profil correspond à l'étape. - Émets la commande complète en une réponse ; puis ajoute la raison brève pour les choix de config/profil. Pour la traduction, lis aussi
src/nemotron/steps/translate/README.mdet retourneDecision,Config,Run,Output,Env.
Tiers source pour les réponses de commande — Verified (CLI + manifest + config + env + dry-run tous réussis), Repo-grounded (manifest/config/env lus, pas de dry-run), Blocked (un fichier repo ou env TOML requis manque — nomme-le et arrête-toi avant de deviner).
Commandes canoniques :
uv run nemotron steps run <step_id> -c <config-or-path> --dry-run
uv run nemotron steps run <step_id> -c <config-or-path> --dry-run --batch <profile>
uv run nemotron steps run <step_id> -c <config-or-path> --batch <profile>
Workflow
Quatre phases, dans l'ordre : Orient → Plan → Act → Verify. Ne saute jamais Verify. Pour les listes de contrôle détaillées des phases et les règles d'implémentation du mode Explorer, lis references/WORKFLOW.md.
Nuances opérationnelles
- Les configs smoke (
tiny.yaml,tiny_chat.yaml) sont des tests de câblage, pas des preuves de qualité. - Les références
${art:...}appartiennent aux configs soutenues par des recettes ; les YAML standalone utilisent des chemins simples. - Garde les données
bin/idxde prétraitement etblend.jsondepuis la même version de Nemotron.
Exemples
-
Étape unique : lis manifest + config + profil env, puis retourne une commande
uv run nemotron steps run <step_id> -c <config> --dry-runcomplète. -
Translate (commande one-shot) : pour les demandes « translate EN → <lang> », collecte d'abord
server.url,model, langue source/cible,api_key_env, et chemins d'entrée/sortie visibles au runtime, puis émets la commande complète en une réponse (ne divise pas entre les tours) :uv run nemotron steps run translate/nemo_curator \ -c <translate-config.yaml> \ --batch <env-profile-from-env.toml> -
Curate puis traduis : chaîne
curate/nemo_curator→translate/nemo_curator. L'étape de curation produit du JSONL filtré qui devient l'entrée de l'étape de traduction. Les deux étapes ont besoin d'overlays YAML ; câble laoutput_dirde curation à lainput_globde traduction. -
Prep benchmark BYOB : route les entrées Parquet MCQ par
byob/mcq, pastranslate/nemo_curator, pour que le schéma multiple-choix soit préservé. -
Pipeline SFT : planifie le DAG (
data_prep→sft/megatron_bridgeousft/automodel), valide les arêtes d'artefact viatypes.toml, puis crée les overlays YAML.
Deux modes
Mode Catalog — une étape existe
Chemin rapide : STEPS.md → category/README.md → step.toml → step.py → adapter YAML config. Utilise chaque fois que la demande de l'utilisateur mappe à une étape du catalogue.
Mode Explorer — aucun chemin repo ne le supporte
Utilise uniquement après avoir confirmé qu'aucune étape, runner, recette, CLI, ou surface de config YAML existante ne peut satisfaire la demande. Suis references/WORKFLOW.md.
Choisir un mode
| L'utilisateur dit | Mode |
|---|---|
| « SFT avec Megatron-Bridge / AutoModel » | Catalog |
| « DPO / RLVR / GRPO / RLHF » | Catalog : rl/nemo_rl/* |
| « Synthétiser préférence / données SFT » | Catalog : sdg/data_designer |
| « Traduire EN → \<lang> pour données d'entraînement » | Catalog : translate/nemo_curator |
| « Curate et traduis » / « filtre puis traduis » | Catalog chain : curate/nemo_curator → translate/nemo_curator |
| « Curate texte web » | Catalog : curate/nemo_curator |
| « Benchmark BYOB » / « Prep benchmark MCQ » | Catalog : byob/mcq (préserve schéma MCQ) |
| « Entraîner avec X backend exotique » | Explorer ou demande |
| Demande post-entraînement uniquement | Hors champ ; redirige vers un workflow plus approprié. |
| Ambigu | Demande |
Limites
Fais : construis des pipelines à partir d'étapes existantes et cite step.toml directement ; réutilise les CLIs/runners/recettes repo en premier ; adapte les configs (ne copie pas default.yaml aveuglément) ; demande le matériel/données/backend/chemin de sortie ; présente les tradeoffs (Megatron-Bridge vs AutoModel, full FT vs LoRA) ; présente le plan et attends l'approbation.
Ne fais pas : invente des étapes ; saute Plan pour les pipelines ≥2 étapes ; génère du Python ou shell quand YAML suffit ; importe des modules en dehors du code de référence de l'étape ; ajoute la monitoring/W&B à moins que ce soit demandé ; tuner le parallelism au-delà de hardware.md et [[strategies]] ; suppose le nombre de GPU ; génère des wrappers Slurm/Airflow/Kubeflow ; gère les demandes sans entraînement dans cette skill ; modifie src/nemotron/steps/ ; restate les règles par étape ici — lie le README.md de l'étape.
Troubleshooting
| Situation | Action |
|---|---|
| Les types d'artefacts ne s'enchaînent pas | Re-vérifie types.toml ; change le DAG avant d'écrire les configs. |
Profil distant unclear / --batch ambigu |
Lis le TOML env actif ; ne devine pas. |
| Clé de config unclear | Lis la config de l'étape, step.py, et le runner partagé avant d'éditer. |
| Strategy pointe vers un fichier skill manquant | Saute la charge ; utilise le texte then: et flag le plan avec WARNING: <topic> docs unavailable. |
| Matériel trop petit | Montre [[models]] min_gpus ; suggère modèle plus petit → AutoModel → LoRA. |
| Deux tentatives Act échouées | Arrête, explique ce qui a été tenté et ce qui a échoué, demande à l'utilisateur comment procéder. |
| Aucun chemin repo existant ne correspond | Vérifie les bibliothèques citées dans step.toml [reference]. Si supporté, utilise le mode Explorer ; sinon demande. |