tao-train-grounding-dino

Par nvidia · skills

Grounding DINO pour la détection d'objets en ensemble ouvert. Combine la détection de style DINO avec un encodeur de texte BERT pour

npx skills add https://github.com/nvidia/skills --skill tao-train-grounding-dino

Grounding DINO

Grounding DINO pour la détection d'objets en ensemble ouvert. Combine la détection de style DINO avec un encodeur de texte BERT pour la détection guidée par le langage. Détecte les objets décrits par des invites textuelles sans vocabulaire de classe fixe.

Définissez train.pretrained_model_path pour les poids complets de Grounding DINO ou model.pretrained_backbone_path pour le backbone uniquement.

Pour les actions TAO Deploy TensorRT (gen_trt_engine, TensorRT evaluate et TensorRT inference), lisez d'abord references/tao-deploy-grounding-dino.md. Les modèles de spécification de déploiement se trouvent dans le dossier references/ de cette skill avec le préfixe spec_template_deploy_*.yaml.

Dataclass Schemas

Les schémas TAO Core générés sont empaquetés dans schemas/<action>.schema.json, avec schemas/manifest.json listant les actions disponibles. Chaque schéma généré émet également references/spec_template_<action>.yaml à partir du champ default du haut niveau du schéma. L'activation d'AutoML est déclarée au niveau du modèle dans references/skill_info.yaml via automl_enabled. AutoML exécutable nécessite toujours que schemas/train.schema.json et references/spec_template_train.yaml existent et se analysent correctement. Utilisez le schéma d'entraînement empaqueté pour automl_default_parameters, automl_disabled_parameters, les valeurs par défaut, les limites min/max, les énumérations, les poids des options, les conditions mathématiques, les dépendances et les paramètres populaires. Ne vous attendez pas à ~/tao-core à l'exécution ; les responsables régénèrent les schémas/modèles avant d'empaqueter la skill bank.

Train Action Policy

Ce modèle est activé pour AutoML au niveau du modèle. Avant de gérer toute demande d'étape d'entraînement, lisez references/skill_info.yaml et résolvez le remplacement d'exécution à partir d'une valeur automl_policy explicite ou de la demande de workflow de l'utilisateur. Traitez les phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, utilisez auto par défaut. Quand automl_policy: auto, automl_enabled: true, et que schemas/train.schema.json et references/spec_template_train.yaml sont empaquetés, routez l'action d'entraînement via tao-skill-bank:tao-run-automl par défaut avec le skill_dir de ce modèle. Préservez les remplacements de workflow/application pour les ensembles de données, les spécifications, les répertoires de sortie, les paramètres GPU/plateforme, les checkpoints parent et automl_policy. Utilisez l'entraînement direct du modèle uniquement quand automl_policy: off ou quand le schéma/modèle d'entraînement empaqueté est manquant ; dans le cas du schéma manquant, signalez qu'AutoML est activé mais non exécutable pour ce modèle jusqu'à ce que les schémas soient générés.

Les actions non-entraînement telles que evaluate, inference, export et les flux de déploiement restent dans cette skill de modèle. Le remplacement automl_policy par exécution ne change pas les métadonnées du modèle.

Training Requirements

  • Dataset type: object_detection
  • Formats: odvg, coco, raw
  • Monitoring metric: val_mAP50

Per-Action Dataset Requirements

Action Spec Key Source Files List?
evaluate dataset.test_data_sources eval_dataset image_dir: images.tar.gz, json_file: annotations.json No
inference dataset.infer_data_sources inference_dataset image_dir: images.tar.gz, classmap: label_map.txt No
quantize dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Yes
quantize dataset.val_data_sources eval_dataset image_dir: images.tar.gz, json_file: annotations.json No
quantize dataset.quant_calibration_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json No
train dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Yes
train dataset.val_data_sources eval_dataset image_dir: images.tar.gz, json_file: annotations.json No

Typical Spec Overrides

Les remplacements de source de données sont obligatoires pour chaque action — l'agent DOIT construire les chemins de source de données à partir du tableau Per-Action Dataset Requirements ci-dessus et les inclure dans spec_overrides.

S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"

train (mandatory data sources):

{
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

gen_trt_engine:

{
    "gen_trt_engine.tensorrt.data_type": "FP16",
}

inference (mandatory data sources):

{
    "dataset.infer_data_sources.captions": [
        "person"
    ],
    "dataset.infer_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "classmap": f"{S3_EVAL}/label_map.txt"},
}

evaluate (mandatory data sources):

{
    "dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

quantize (mandatory data sources):

{
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
    "dataset.quant_calibration_data_sources": {"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"},
}

Eval Dataset

Optionnel. La validation utilise les annotations au format COCO pour mAP même si l'entraînement peut utiliser le format ODVG.

Important Parameters

  • model.backbone: Default swin_tiny_224_1k. Supporte également resnet_50 et d'autres variantes Swin. Swin offre généralement de meilleures performances pour les tâches de grounding.
  • model.text_encoder_type: Modèle BERT pour l'encodage de texte. Default bert-base-uncased. max_text_len par défaut à 256.
  • train.optim.lr: Learning rate. Default 2e-4. lr_backbone 2e-5. Supporte la précision bf16 en plus de fp16/fp32.
  • dataset.max_labels: Nombre maximum d'étiquettes par image lors de l'entraînement. Default 50. Augmentez pour les ensembles de données d'annotation dense.
  • model.num_queries: Object queries. Default 900 (supérieur aux 300 de DINO) en raison de la nature du vocabulaire ouvert.
  • train.optim.lr_steps: MultiStep LR schedule. Default [10].

Multi-GPU / Multi-Node

Launch method: Lightning-managed (processus python unique, Lightning crée les workers).

Spec Key Description Default
train.num_gpus Number of GPUs 1
train.gpu_ids GPU device indices [0]
train.num_nodes Number of nodes 1
train.distributed_strategy ddp ou fsdp ddp

Même comportement DDP/FSDP que DINO. Multi-node nécessite que les variables d'environnement WORLD_SIZE, NODE_RANK, MASTER_ADDR, MASTER_PORT soient définies par l'orchestrateur.

Export / TRT Defaults

  • Export input: 960x544 (plus grand que les autres modèles OD), opset 17
  • TRT data types: FP32, FP16 uniquement — INT8 n'est PAS supporté
  • TRT workspace: 8192 MB (8 fois plus grand que les autres modèles OD)
  • TRT max_batch_size: 4

Référence TAO Deploy complète : tao-deploy-grounding-dino.

Hardware

Minimum 1 GPU, recommandé 4 GPU. 24 GB+ (A100 recommandé) de VRAM par GPU. Grounding DINO est plus lourd que DINO standard en raison de l'encodeur de texte (BERT). 24 GB+ de mémoire GPU recommandé. Réduisez batch_size pour les GPU 16 GB.

Error Patterns

CUDA out of memory: Réduisez batch_size (4 -> 2 -> 1). L'encodeur de texte BERT ajoute une surcharge de mémoire significative au-dessus du backbone vision.

Val annotation category IDs: Les annotations de validation doivent avoir des ID de catégorie commençant à 0 pour un calcul correct de la perte. Utilisez la conversion de format d'annotation si nécessaire.

Text encoder loading error: Assurez-vous que le conteneur a accès pour télécharger les poids bert-base-uncased ou fournissez un chemin local.

Spec Param / Parent Model Inference

Les mappages d'inférence spécifiques au modèle appartiennent à ce fichier MD, pas à config.json. Les runners générés doivent lire cette section et appliquer les mappages avec les assistants SDK avant create_job(). Cela reflète le flux ancien des microservices infer_params.py.

Mappages d'inférence à partir de grounding_dino.config.json TAO Core :

Action Spec Field Inference Function Meaning
evaluate encryption_key key encryption key
evaluate evaluate.checkpoint parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
evaluate evaluate.trt_engine parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
evaluate results_dir output_dir répertoire des résultats de la tâche actuelle
export encryption_key key encryption key
export export.checkpoint parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
export export.onnx_file create_onnx_file chemin ONNX de sortie
export results_dir output_dir répertoire des résultats de la tâche actuelle
gen_trt_engine encryption_key key encryption key
gen_trt_engine gen_trt_engine.onnx_file parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
gen_trt_engine gen_trt_engine.trt_engine create_engine_file chemin du moteur TensorRT de sortie
gen_trt_engine results_dir output_dir répertoire des résultats de la tâche actuelle
inference encryption_key key encryption key
inference inference.checkpoint parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
inference inference.trt_engine parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
inference results_dir output_dir répertoire des résultats de la tâche actuelle
quantize encryption_key key encryption key
quantize quantize.model_path parent_model fichier de modèle déduit du dossier de résultats de la tâche parent
quantize results_dir output_dir répertoire des résultats de la tâche actuelle
train encryption_key key encryption key
train model.pretrained_backbone_path ptm_if_no_resume_model PTM quand aucun checkpoint de reprise n'existe
train results_dir output_dir répertoire des résultats de la tâche actuelle
train train.pretrained_model_path ptm_if_no_resume_model PTM quand aucun checkpoint de reprise n'existe
train train.resume_training_checkpoint_path resume_model fichier de modèle déduit du dossier de résultats de la tâche actuelle

Pour parent_model ou parent_model_folder, passez l'ID de la tâche enfant train/export/AutoML en amont en tant que parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artifacts de checkpoint et retourne le fichier ou dossier de modèle sélectionné. N'ajoutez pas ces mappages à config.json et ne patchez pas les scripts de runner générés pour deviner les chemins de checkpoint.

Skills similaires