tao-train-deformable-detr

Par nvidia · skills

Deformable DETR pour la détection d'objets 2D. Utilise l'attention déformable pour un traitement efficace des caractéristiques multi-échelles,

npx skills add https://github.com/nvidia/skills --skill tao-train-deformable-detr

Deformable DETR

Deformable DETR pour la détection d'objets 2D. Utilise l'attention déformable pour un traitement multi-échelle efficace des features. Plus léger que DINO avec une précision compétitive.

Utilise les poids de backbone préentraînés. Définis model.pretrained_backbone_path pour charger le backbone seul.

Pour les actions TAO Deploy TensorRT (gen_trt_engine, évaluation TensorRT et inférence TensorRT), consulte d'abord references/tao-deploy-deformable-detr.md. Les templates de spec de déploiement se trouvent dans le dossier references/ de ce skill avec le préfixe spec_template_deploy_*.yaml.

Schémas Dataclass

Les schémas TAO Core générés sont packagés dans schemas/<action>.schema.json, avec schemas/manifest.json listant les actions disponibles. Chaque schéma généré émet aussi references/spec_template_<action>.yaml à partir du champ default du niveau supérieur du schéma. L'activation AutoML est déclarée au niveau du modèle dans references/skill_info.yaml via automl_enabled. L'AutoML exécutable nécessite toujours que schemas/train.schema.json et references/spec_template_train.yaml existent et parsent correctement. Utilise le schéma train packagé pour automl_default_parameters, automl_disabled_parameters, les défauts, les bornes min/max, les énumérations, les poids d'option, les conditions mathématiques, les dépendances et les paramètres populaires. Ne t'attends pas à la présence de ~/tao-core à l'exécution ; les mainteneurs régénèrent les schémas et templates avant de packager la skill bank.

Politique Train Action

Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute demande au stade train, lis references/skill_info.yaml et résous le override de run à partir soit d'une valeur automl_policy explicite, soit de la demande de workflow de l'utilisateur. Traite les phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette run uniquement ; sinon, défaut à auto. Quand automl_policy: auto, automl_enabled: true, et que schemas/train.schema.json et references/spec_template_train.yaml sont tous deux packagés, route l'action train par défaut via tao-skill-bank:tao-run-automl avec le skill_dir de ce modèle. Préserve les overrides workflow/application pour les datasets, specs, répertoires de sortie, paramètres GPU/plateforme, checkpoints parents et automl_policy. Utilise l'entraînement direct du modèle uniquement quand automl_policy: off ou que le schéma/template train packagé est manquant ; dans le cas d'un schéma manquant, signale 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-train comme evaluate, inference, export et les flux de déploiement restent dans ce skill de modèle. Le override automl_policy par run ne change pas les métadonnées du modèle.

Conditions d'Entraînement

  • Type de dataset: object_detection
  • Formats: coco, coco_raw
  • Métrique de monitoring: val_mAP50

Conditions de Dataset par Action

Action Clé Spec Source Fichiers Liste ?
evaluate dataset.test_data_sources.image_dir eval_dataset images.tar.gz Non
evaluate dataset.test_data_sources.json_file eval_dataset annotations.json Non
export dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui
export dataset.val_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui
gen_trt_engine gen_trt_engine.tensorrt.calibration.cal_image_dir calibration_dataset images.tar.gz Oui
inference dataset.infer_data_sources.image_dir inference_dataset images.tar.gz Oui
inference dataset.infer_data_sources.classmap inference_dataset label_map.txt Non
quantize dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui
quantize dataset.val_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui
quantize dataset.quant_calibration_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Non
train dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui
train dataset.val_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations.json Oui

Overrides Spec Typiques

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

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

train (sources de données obligatoires):

{
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.num_classes": "<num_classes> + 1",
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
    "dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}

evaluate (sources de données obligatoires):

{
    "dataset.num_classes": "<num_classes> + 1",
    "dataset.test_data_sources.image_dir": f"{S3_EVAL}/images.tar.gz",
    "dataset.test_data_sources.json_file": f"{S3_EVAL}/annotations.json",
}

export (sources de données obligatoires):

{
    "dataset.num_classes": "<num_classes> + 1",
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
    "dataset.val_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations.json"}],
}

gen_trt_engine (sources de données obligatoires):

{
    "gen_trt_engine.tensorrt.data_type": "FP16",
    "dataset.num_classes": "<num_classes> + 1",
    "gen_trt_engine.tensorrt.calibration.cal_image_dir": [f"{S3_TRAIN}/images.tar.gz"],
}

inference (sources de données obligatoires):

{
    "dataset.num_classes": "<num_classes> + 1",
    "dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
    "dataset.infer_data_sources.classmap": f"{S3_EVAL}/label_map.txt",
}

quantize (sources de données obligatoires):

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

Dataset d'Évaluation

Optionnel. Si fourni, la mAP de validation est calculée à chaque intervalle de checkpoint.

Paramètres Importants

  • dataset.num_classes: Nombre de classes d'objets. Défaut 91 (COCO). Doit correspondre aux annotations.
  • model.backbone: Défaut resnet_50. Supportés: resnet_50, gcvit_tiny, gcvit_small, gcvit_base, gcvit_large, gcvit_large_384 (plus limité que DINO).
  • train.optim.lr: Taux d'apprentissage. Défaut 2e-4 (AdamW). lr_backbone est 2e-5.
  • train.optim.lr_steps: Planning LR MultiStep. Défaut [40]. Pour les runs courts, ajuste à ~80% du nombre total d'epochs.
  • model.num_queries: Nombre de requêtes d'objets. Défaut 300. Plage valide 100-900.
  • model.dropout_ratio: Dropout dans les couches transformer. Défaut 0,3 (plus élevé que le 0,0 de DINO). Réduis pour les grands datasets, augmente pour les petits datasets.
  • model.dim_feedforward: Dimension cachée FFN. Défaut 1024 (vs 2048 pour DINO). Augmenter améliore la capacité mais coûte en mémoire.

Multi-GPU / Multi-Node

Méthode de lancement: Lightning-managed (processus Python unique, Lightning spawne les workers).

Clé Spec Description Défaut
train.num_gpus Nombre de GPUs 1
train.gpu_ids Indices de périphérique GPU [0]
train.num_nodes Nombre de nœuds 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.

Défauts Export / TRT

  • Input d'export: 640x640, opset 17
  • Types de données TRT: FP32, FP16, INT8
  • Workspace TRT: 1024 MB
  • TRT max_batch_size: 1

Référence TAO Deploy complète: tao-deploy-deformable-detr.

Matériel

Minimum 1 GPU(s), recommandé 4 GPU(s). 16 GB+ (V100 ou A100) VRAM par GPU. Légèrement plus léger que DINO grâce à un FFN plus petit. batch_size=4 tient sur la plupart des GPUs 16 GB+.

Motifs d'Erreurs

Mémoire CUDA insuffisante: Réduis batch_size (4 -> 2 -> 1).

*num_select must be < num_queries num_classes**: Même contrainte que DINO.

return_interm_indices length must match num_feature_levels: Défaut [1,2,3,4] avec num_feature_levels=4.

Taille du dataset inférieure à la batch size totale: Réduis batch_size ou num_gpus.

Inférence de Paramètre Spec / Modèle Parent

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 helpers SDK avant create_job(). Cela reflète le flux infer_params.py des anciens microservices.

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

Action Champ Spec Fonction d'Inférence Signification
evaluate encryption_key key clé de chiffrement
evaluate evaluate.checkpoint parent_model fichier de modèle déduit du dossier de résultats du job parent
evaluate evaluate.trt_engine parent_model fichier de modèle déduit du dossier de résultats du job parent
evaluate results_dir output_dir répertoire de résultats du job actuel
export encryption_key key clé de chiffrement
export export.checkpoint parent_model fichier de modèle déduit du dossier de résultats du job parent
export export.onnx_file create_onnx_file chemin ONNX de sortie
export results_dir output_dir répertoire de résultats du job actuel
gen_trt_engine encryption_key key clé de chiffrement
gen_trt_engine gen_trt_engine.onnx_file parent_model fichier de modèle déduit du dossier de résultats du job parent
gen_trt_engine gen_trt_engine.tensorrt.calibration.cal_cache_file create_cal_cache chemin du cache de calibration
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 de résultats du job actuel
inference encryption_key key clé de chiffrement
inference inference.checkpoint parent_model fichier de modèle déduit du dossier de résultats du job parent
inference inference.trt_engine parent_model fichier de modèle déduit du dossier de résultats du job parent
inference results_dir output_dir répertoire de résultats du job actuel
quantize encryption_key key clé de chiffrement
quantize quantize.model_path parent_model fichier de modèle déduit du dossier de résultats du job parent
quantize results_dir output_dir répertoire de résultats du job actuel
train encryption_key key clé de chiffrement
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 de résultats du job actuel
train train.resume_training_checkpoint_path resume_model fichier de modèle déduit du dossier de résultats du job actuel

Pour parent_model ou parent_model_folder, passe l'identifiant du job enfant train/export/AutoML en amont comme parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artefacts de checkpoint et retourne le fichier de modèle sélectionné ou le dossier. N'ajoute pas ces mappages à config.json et ne modifie pas les scripts runner générés pour deviner les chemins de checkpoint.

Skills similaires