Classification PyT
Classification d'images PyTorch. Supporte une large gamme de backbones (FAN, EfficientNet, ResNet, etc.) avec distillation et quantification pour le déploiement.
Définissez model.backbone.pretrained_backbone_path pour les poids du backbone ou train.pretrained_model_path pour le modèle complet.
Pour les actions TAO Deploy TensorRT (gen_trt_engine, évaluation TensorRT et inference TensorRT), consultez d'abord references/tao-deploy-image-classification.md. Les templates de spec de déploiement se trouvent dans le dossier references/ de cette skill avec le préfixe spec_template_deploy_*.yaml.
Schémas Dataclass
Les schémas TAO Core générés sont fournis 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 au 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 se décodent correctement. Utilisez le schéma train fourni 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 supposez pas la présence de ~/tao-core à l'exécution ; les responsables régénèrent les schémas/templates avant de packager la skill bank.
Politique d'action Train
Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute demande à l'étape train, lisez references/skill_info.yaml et résolvez l'override d'exécution à partir soit d'une valeur explicite automl_policy soit d'une demande de workflow 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, la valeur par défaut est auto. Lorsque automl_policy: auto, automl_enabled: true et que schemas/train.schema.json et references/spec_template_train.yaml sont packagés, routez l'action train via tao-skill-bank:tao-run-automl par défaut avec le skill_dir de ce modèle. Préservez les overrides du workflow/application pour les datasets, specs, répertoires de sortie, paramètres GPU/platform, checkpoints parent et automl_policy. Utilisez l'entraînement direct du modèle uniquement lorsque automl_policy: off ou que le schema/template train packagé est manquant ; dans le cas du schema 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-train telles que evaluate, inference, export et les flux de déploiement restent dans cette skill de modèle. L'override automl_policy par exécution ne change pas les métadonnées du modèle.
Exigences d'entraînement
- Type de dataset : image_classification
- Formats : classification_pyt
- Métrique de monitoring : val_acc_1
Exigences de Dataset par Action
| Action | Clé Spec | Source | Fichiers | Liste ? |
|---|---|---|---|---|
| distill | dataset.train_dataset.images_dir | train_datasets | images_train.tar.gz | Non |
| distill | dataset.classes_file | train_datasets | classes.txt | Non |
| distill | dataset.val_dataset.images_dir | eval_dataset | images_val.tar.gz | Non |
| evaluate | dataset.val_dataset.images_dir | eval_dataset | images_val.tar.gz | Non |
| evaluate | dataset.classes_file | eval_dataset | classes.txt | Non |
| evaluate | dataset.test_dataset.images_dir | inference_dataset | images_test.tar.gz | Non |
| export | dataset.root_dir | train_datasets | Non | |
| inference | dataset.val_dataset.images_dir | eval_dataset | images_val.tar.gz | Non |
| inference | dataset.classes_file | eval_dataset | classes.txt | Non |
| inference | dataset.test_dataset.images_dir | inference_dataset | images_test.tar.gz | Non |
| quantize | dataset.train_dataset.images_dir | train_datasets | images_train.tar.gz | Non |
| quantize | dataset.classes_file | train_datasets | classes.txt | Non |
| quantize | dataset.val_dataset.images_dir | eval_dataset | images_val.tar.gz | Non |
| quantize | dataset.quant_calibration_dataset.images_dir | calibration_dataset | images_train.tar.gz | Non |
| train | dataset.train_dataset.images_dir | train_datasets | images_train.tar.gz | Non |
| train | dataset.classes_file | train_datasets | classes.txt | Non |
| train | dataset.val_dataset.images_dir | eval_dataset | images_val.tar.gz | Non |
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 Exigences 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": 2,
"train.validation_interval": 2,
"train.checkpoint_interval": 2,
"train.num_gpus": 1,
"dataset.train_dataset.images_dir": f"{S3_TRAIN}/images_train.tar.gz",
"dataset.classes_file": f"{S3_TRAIN}/classes.txt",
"dataset.val_dataset.images_dir": f"{S3_EVAL}/images_val.tar.gz",
}
export (sources de données obligatoires) :
{
"export.input_height": 224,
"export.input_width": 224,
"dataset.root_dir": f"{S3_TRAIN}",
}
gen_trt_engine :
{
"gen_trt_engine.tensorrt.data_type": "fp16",
}
inference (sources de données obligatoires) :
{
"dataset.batch_size": 1,
"dataset.val_dataset.images_dir": f"{S3_EVAL}/images_val.tar.gz",
"dataset.classes_file": f"{S3_EVAL}/classes.txt",
"dataset.test_dataset.images_dir": f"{S3_EVAL}/images_test.tar.gz",
}
distill (sources de données obligatoires) :
{
"dataset.train_dataset.images_dir": f"{S3_TRAIN}/images_train.tar.gz",
"dataset.classes_file": f"{S3_TRAIN}/classes.txt",
"dataset.val_dataset.images_dir": f"{S3_EVAL}/images_val.tar.gz",
}
evaluate (sources de données obligatoires) :
{
"dataset.val_dataset.images_dir": f"{S3_EVAL}/images_val.tar.gz",
"dataset.classes_file": f"{S3_EVAL}/classes.txt",
"dataset.test_dataset.images_dir": f"{S3_EVAL}/images_test.tar.gz",
}
quantize (sources de données obligatoires) :
{
"dataset.train_dataset.images_dir": f"{S3_TRAIN}/images_train.tar.gz",
"dataset.classes_file": f"{S3_TRAIN}/classes.txt",
"dataset.val_dataset.images_dir": f"{S3_EVAL}/images_val.tar.gz",
"dataset.quant_calibration_dataset.images_dir": f"{S3_TRAIN}/images_train.tar.gz",
}
Dataset d'Évaluation
Optionnel. Les images de validation sont fournies sous la forme d'une tar séparée aux images d'entraînement.
Paramètres Importants
- dataset.num_classes : Nombre de classes. Par défaut 20. Doit correspondre au nombre de sous-répertoires dans vos tarballs d'images.
- model.backbone.type : Par défaut fan_small_12_p4_hybrid. Backbones supportés et leurs in_channels de head (à partir de model_params_mapping.py) : FAN : fan_tiny, fan_small_12_p4_hybrid, fan_base_16_p4_hybrid, fan_large_16_p4_hybrid. GCViT : gcvit_tiny à gcvit_large. FasterViT : fastervit_0 à fastervit_6. ViT/EVA/DINO : vit_large_patch14_dinov2, eva02_large_patch14, etc. SigLIP-CLIPA : ViT-H-14-SigLIP-CLIPA-224, etc. Certains backbones nécessitent une résolution d'entrée non défaut (384, 512, 768).
- dataset.classes_file : Chemin vers classes.txt listant les noms de classes.
- train.optim.lr : Taux d'apprentissage. Par défaut 6e-5.
- dataset.img_size : Taille d'image d'entrée. Par défaut 224.
- dataset.batch_size : Taille de batch par GPU. Par défaut 8.
Multi-GPU / Multi-Nœud
Méthode de lancement : Gérée par Lightning (processus python unique, Lightning lance les workers).
| Clé Spec | Description | Par défaut |
|---|---|---|
train.num_gpus |
Nombre de GPUs | 1 |
train.gpu_ids |
Indices de device GPU | [0] |
train.num_nodes |
Nombre de nœuds | 1 |
- Stratégie multi-GPU :
ddp_find_unused_parameters_true - Pas de support fsdp
Variables d'environnement multi-nœud (définies par l'orchestrateur) : WORLD_SIZE, NODE_RANK, MASTER_ADDR, MASTER_PORT, NUM_GPU_PER_NODE.
Matériel
Minimum 1 GPU, recommandé 2 GPU. 16 Go+ (V100 ou A100) de VRAM par GPU. La classification est généralement légère. La plupart des backbones à 224x224 s'adaptent bien sur des GPUs 16 Go avec batch_size=8.
Motifs d'Erreur
CUDA out of memory : Réduisez batch_size ou utilisez un backbone plus petit.
num_classes mismatch : Assurez-vous que dataset.num_classes correspond aux répertoires de classes réels dans vos tarballs d'images et classes.txt.
Répertoire de classe vide : Chaque classe dans classes.txt doit avoir au moins une image dans le sous-répertoire correspondant.
Inference de Spec Param / Modèle Parent
Les mappages d'inference 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 ancien infer_params.py des microservices.
Mappages d'inference à partir de classification_pyt.config.json TAO Core :
| Action | Champ Spec | Fonction d'Inference | Signification |
|---|---|---|---|
| distill | distill.pretrained_teacher_model_path |
parent_model |
fichier de modèle déduit du dossier de résultats du job parent |
| distill | results_dir |
output_dir |
répertoire de résultats du job actuel |
| evaluate | evaluate.checkpoint |
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 | 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 de sortie ONNX |
| export | results_dir |
output_dir |
répertoire de résultats du job actuel |
| 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.trt_engine |
create_engine_file |
chemin de sortie du moteur TensorRT |
| gen_trt_engine | results_dir |
output_dir |
répertoire de résultats du job actuel |
| 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 | 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 | model.backbone.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.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 du job actuel |
Pour parent_model ou parent_model_folder, passez l'ID du job enfant train/export/AutoML en amont en tant que parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artefacts de checkpoint et retourne le fichier de modèle ou le dossier sélectionné. N'ajoutez pas ces mappages en retour à config.json et ne patchez pas les scripts runner générés pour deviner les chemins de checkpoint.
Déploiement
- tao-deploy-image-classification — Workflow de déploiement Classification PyT pour la génération de moteur TensorRT, l'évaluation TensorRT et l'inference TensorRT utilisant TAO Deploy.