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.