Skill Pipeline d'Augmentation PAIDF
Pipeline unifié pour augmenter les données de caméra via les modèles d'IA génératives NVIDIA avec captionnage automatisé, génération et évaluation de qualité. BYOM (apportez votre propre modèle) : chaque modèle est atteint via un endpoint HTTP distant décrit par une entrée de la liste endpoints: de la config ; ajouter un modèle est généralement une modification de config, pas de code.
Purpose
Utilisez cette skill pour piloter le pipeline d'augmentation PAIDF de bout en bout :
- Sélectionner le bon modèle — Cosmos Transfer 2.5 (transformer une vidéo), Cosmos Predict 2.5 (générer/étendre une vidéo), image-edit (éditer une image), ou image-to-video (animer une première frame : Cosmos3 ou Veo 3.1).
- Créer et valider des configs YAML contre le schéma Pydantic
PipelineConfig. - Configurer le captionnage (VLM, LLM, VLM-template déterministe, texte, ou fichier) et les évaluateurs (vérification d'hallucinations, vérification d'attributs, vérification VLM).
- Lancer et exécuter l'inférence dans le conteneur Docker
paidf-augmentation:1.1.0(API distante uniquement — aucun poids de modèle local).
Utilisez cette skill lors de l'exécution d'inférence, de la création ou de l'édition de configs, du débogage d'erreurs de validation ou d'exécution, de l'ajout d'échantillons de données, de la configuration du captionnage, de l'ajustement des paramètres de génération, de l'enregistrement d'endpoints/adaptateurs BYOM, ou de la mise en place d'évaluateurs. Mots-clés déclencheurs : augmentation, cosmos transfer, cosmos predict, image edit, image-to-video, veo, augmentation d'attributs d'image, génération d'images défectueuses, captionnage, vérification d'attributs, validation de config.
Ne pas utiliser cette skill pour l'entraînement ou le fine-tuning de modèles, le déploiement de clusters ou d'endpoints NIM, ou le développement d'applications/bases de données sans rapport.
Prérequis
| Prérequis | Détail |
|---|---|
| Docker | docker --version. L'image est API distante uniquement — elle ne contient aucun poids Cosmos/torch, donc l'inférence distante simple ne nécessite aucun GPU et aucun HF_TOKEN. |
| GPU NVIDIA (conditionnel) | Uniquement pour le post-processeur data_processing.alignment (cupy) et le décodage H.264 (évaluateurs, data_processing.transcode). Voir Limitations. |
| URLs d'endpoints | Une URL accessible par rôle utilisé par la config : le rôle du modèle (video_transfer/video_predict/image_edit/image2video) plus vlm/llm pour le captionnage et l'évaluation. Les valeurs par défaut sont des serveurs vLLM Qwen locaux (Qwen/Qwen3.6-27B-FP8 sur vlm, Qwen/Qwen2.5-14B-Instruct sur llm). Si l'utilisateur n'en a aucun en cours d'exécution, demandez les URLs. |
| Clés API (conditionnel) | Uniquement pour les endpoints nécessitant une authentification. Transmises par une variable d'env nommée dans l'api_key_env de chaque endpoint — jamais codées en dur dans le YAML. Courant : VLM_API_KEY, LLM_API_KEY, VEO_API_KEY, BUILD_NVIDIA_API_KEY. Les endpoints locaux n'en ont besoin d'aucune. |
| Média d'entrée | Une vidéo (transfer/predict) ou une image (edit/image2video) accessible par multistorageclient — chemin local, s3://, gs://, az://, ou HTTP. |
Entrées
Résolvez chaque valeur dans cet ordre de précédence : fichier d'état → arguments explicites du prompt → contexte de l'agent → prompt utilisateur. Ne demandez à l'utilisateur que ce qui reste non résolu.
| Entrée | Requis | Description |
|---|---|---|
config_path |
Oui | Chemin du YAML du pipeline, ex. configs/cookbook/video-data-augmentation/config_video_transfer_CT25_nim.yaml. S'il est absent, choisissez une config de démarrage parmi Supported Models et confirmez avec l'utilisateur. |
input_media |
Oui | Vidéo/image source → data[].inputs.rgb. Surcharger à l'exécution via data.0.inputs.rgb=.... |
output_paths |
Oui | data[].output.{video,caption,metadata} ; evaluation optionnel. |
model_name |
Oui | augmentation.model.name — un id d'endpoint, un rôle, ou un nom de modèle connu. Chaîne libre, pas une énumération. |
endpoint_urls |
Oui | Une entrée endpoints[] par rôle utilisé. |
api_key_env |
Si authentification | Nom de la variable d'env par endpoint ; la valeur provient de l'environnement. |
target_attributes |
Non | captioning.llm.variables (ex. weather_condition, lighting_condition). |
generation_params |
Non | augmentation.parameters — pass-through ; seuls les paramètres définis sont envoyés. |
seed |
Non | Sous augmentation.parameters ; null = aléatoire, réinitialisé en cas de retry. |
Modèle BYOM : endpoints, adaptateurs, rôles
Le pipeline n'embarque jamais d'SDK par modèle. À la place :
endpoints:est une liste. Chaque entrée arole,url,model(la chaîne du modèle sur le fil), un optionnelid(uniquement pour lever l'ambiguïté entre 2+ endpoints partageant un rôle), un optionneladapter(contrat API ; défauts selon le rôle),api_key_env, ettimeout.- Rôles:
vlm,llm(captionnage + évaluateurs),image_edit,video_transfer(Cosmos Transfer),video_predict(Cosmos Predict),image2video(Cosmos3 / Veo). - Adaptateurs (contrats API):
openai.chat.completions,openai.images.edits,openai.video.sync,openai.video.async,nim,passthrough. Le même modèle peut être servi sur différents contrats en changeant uniquement le champadapterde l'endpoint. - Sélection du modèle:
augmentation.model.namese résout en un endpoint parid, sinon parrole, sinon par la map nom-de-modèle→rôle (image-edit→image_edit,cosmos-transfer2.5→video_transfer,cosmos-predict→video_predict,cosmos3-image2video→image2video).
Modèles Supportés
Quand l'utilisateur n'a pas spécifié de modèle, choisissez selon leur type d'entrée et objectif :
| Type d'entrée → Objectif | model.name |
Rôle / adaptateur par défaut | Entrée → Sortie |
|---|---|---|---|
| Vidéo — changer les attributs de scène (météo, éclairage, style) | cosmos-transfer2.5 |
video_transfer / nim |
Vidéo (+ contrôles) → Vidéo |
| Vidéo + texte — étendre ou prédire une continuation | cosmos-predict |
video_predict / nim |
Vidéo+Texte → Vidéo |
| Texte uniquement — générer une vidéo de zéro | cosmos-predict (inference_type: text2world) |
video_predict / nim |
Texte → Vidéo |
| Image — éditer des attributs spécifiques | image-edit |
image_edit / nim (ou openai.chat.completions, openai.images.edits) |
Image → Image |
| Image — animer une première frame | cosmos3-image2video (ou votre id Veo) |
image2video / openai.video.sync (Veo : openai.video.async) |
Image + prompt → Vidéo |
Règle clé : vidéo en entrée + changement d'attribut de scène → Cosmos Transfer. Générer une nouvelle vidéo à partir d'un conditionnement texte/image/vidéo → Cosmos Predict. Édition d'image unique → image edit. Image fixe → clip en mouvement → image-to-video.
Tous les modèles s'exécutent via HTTP distant par un seul BaseExecutor ; il n'y a pas de local torchrun et pas de champ executor_type.
Usage
Étape 1 : Lancer le Conteneur Docker
Définissez PAIDF_IMAGE_ID sur l'ID d'image immutable sha256: enregistré à partir de la
construction locale de confiance (ou fourni dans les métadonnées de version de confiance). L'ID d'image est
spécifique à la compilation et à l'architecture, donc ce repository ne peut pas fournir une
valeur universelle unique. Vérifiez que le tag de commodité mutable se résout toujours à l'ID
attendu, puis exécutez l'ID directement :
set -e
PAIDF_IMAGE_ID="sha256:<expected-image-id>"
test "$(docker image inspect --format '{{.Id}}' paidf-augmentation:1.1.0)" = "$PAIDF_IMAGE_ID"
docker network inspect paidf >/dev/null 2>&1 || \
docker network create paidf
docker run -it --rm \
--network paidf \
-v "$(pwd)/modules:/workspace/modules" \
-v "$(pwd)/configs:/workspace/configs" \
-v "$(pwd)/data:/workspace/data" \
--entrypoint /bin/bash \
"$PAIDF_IMAGE_ID"
Ne pas déduire PAIDF_IMAGE_ID du tag et immédiatement lui faire confiance ; comparez
le tag contre le digest enregistré lors de la construction ou de la publication de l'image. Si
une version de registry fournit un manifest signé, vérifiez cette signature avant de faire un pull et utilisez sa référence name:tag@sha256:<manifest-digest> à la place.
- Networking : l'augmentation ne fait que des requêtes sortantes, elle n'a donc besoin d'aucun ports
-p/--publish. Gardez le bridge partagépaidfmontré ci-dessus pour les endpoints distants. Pour un autre conteneur de modèle, attachez-le au même bridge et utilisez son nom de conteneur dans l'URL de l'endpoint. Exécutez les modèles locaux hôte dans un conteneur sur ce bridge, ou utilisez un endpoint distant ; ne pas donner au conteneur d'augmentation l'accès au réseau hôte. - Clés API : préférez un gestionnaire de secrets de plateforme qui injecte les variables d'env requises. Sinon, exportez uniquement les clés requises et transmettez leurs noms avec
-e VAR_NAME; ne jamais monter ou charger un fichier d'identifiants large. - Aucun GPU nécessaire pour l'inférence distante — ajoutez
--gpuspourdata_processing.alignmentet tout décodage H.264 ; choisissez un GPU non partagé avec un serveur de modèle occupé. Le conteneur s'exécute en tant qu'uid 10000 ; assurez-vous quedata/est inscriptible (ou--user "$(id -u):$(id -g)").
Sécurité : Le networking hôte est interdit pour ce workflow, en particulier quand des clés API sont présentes. Consultez pipeline-operations.md.
Étape 2 : Exécuter le Pipeline (À l'intérieur du Conteneur)
uv run --no-sync modules/cli.py --config configs/<config_file>.yaml
# Avec les surcharges CLI OmegaConf (syntaxe dot-list)
uv run --no-sync modules/cli.py --config configs/cookbook/video-data-augmentation/config_video_transfer_CT25_nim.yaml \
data.0.inputs.rgb=/workspace/data/input.mp4 \
augmentation.parameters.seed=42
Variables d'environnement : les clés se résolvent en variable api_key_env → la variable d'env par défaut du rôle. Si api_key_env nomme une variable non définie, la résolution revient à la valeur par défaut du rôle ; omettez-la pour les endpoints non authentifiés. LOG_LEVEL définit la journalisation.
Schéma de Configuration
Les configs sont validées contre PipelineConfig (modules/aug_utils/schema/) et ont sept sections de haut niveau : data, endpoints (une liste), pipeline, captioning, augmentation, data_processing, et evaluators. Le YAML complet par section est dans configuration-schema.md ; le flux d'exécution et les tâches d'édition courantes sont dans pipeline-operations.md.
Exemples
Les configs se trouvent sous
configs/cookbook/<use-case>/. Consultez l'index du cookbook pour l'organisation des dossiers.
| Cas d'usage | Config(s) |
|---|---|
Transfert d'attributs de scène vidéo (CT2.5, nim) |
config_video_transfer_CT25_nim.yaml |
| Image → vidéo | config_image2video_cosmos3.yaml (VLM→LLM) · config_image2video_cosmos3_vlm_template.yaml (VLM→template) · config_image2video_veo31.yaml (Veo 3.1, async) |
| Image Attribute Augmentation | config_image_edit_attribute_{chat_api,images_api,nim}.yaml · …_gemma_llm.yaml (swap LLM Gemma hébergé) |
| Defect Image Generation + MI alignment | config_image_edit_defect_{chat_api,images_api}.yaml |
| Batch config generation | workflow_example.yaml · attribute_distribution_1000_v1.yaml |
| Smart-space seed image / event video | config_seed_image_gen_cosmos3_super_t2i_smart_spaces.yaml · config_event_video_gen_cosmos3_smart_spaces.yaml |
Les détails par-config captioning / evaluator / adapter se trouvent dans config-decision-tree.md.
Dépannage
Exécutez toute l'inférence et la validation de schéma à l'intérieur du conteneur Docker pour un environnement cohérent. Pour les erreurs de validation de config, erreurs d'exécution/endpoint, et les timings typiques par étape, consultez troubleshooting.md.
Limitations
- Inférence distante uniquement. Tous les modèles s'exécutent derrière des endpoints HTTP distants ; aucun poids local, pas de
torchrun, pas d'executor_type, pas d'exécuteur Gradio. - GPU pour l'alignment et le décodage H.264. L'inférence distante ne nécessite aucun GPU. Un GPU CUDA est requis par
data_processing.alignment(cupy) et par quoi que ce soit décodant H.264 — les évaluateurs etdata_processing.transcode— car l'image embarque uniquement le décodeur matérielh264_cuvid(le décodage logiciel AVC est désactivé pour des raisons de licence). VP9 décode en logiciel. La sortie vidéo est VP9 uniquement. - Inférence uniquement. Ce pipeline augmente et génère des médias — il n'entraîne ou fine-tune aucun modèle.
- L'authentification varie par endpoint. Les endpoints hébergés (ex. Veo) nécessitent une clé via
api_key_env; les endpoints locaux (ex. vLLM) n'en nécessitent aucune.
Fichiers de référence
- configuration-schema.md — YAML complet par section pour chaque section de config.
- config-decision-tree.md — quelle config choisir, sélection du modèle/captionnage, règles d'override d'alignment.
- pipeline-operations.md — flux du pipeline, exemple travaillé, tâches courantes, stockage, notes de sécurité.
- captioning-strategy-guide.md — les 6 modes de captionnage avec YAML complet.
- evaluator-setup-guide.md — accordage d'hallucinations, vérification d'attributs, câblage MCQ.
- troubleshooting.md — erreurs de validation/exécution et timings par étape.
- image-attribute-augmentation.md — workflow image-edit Image Attribute Augmentation et empaquetage de dataset.
- event-video-gen.md — génération d'événements smart-space image-to-video.