tao-train-pointpillars

Par nvidia · skills

PointPillars pour la détection d'objets 3D à partir de nuages de points LiDAR. Encode les nuages de points en pseudo-image via un

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

PointPillars

PointPillars pour la détection 3D d'objets à partir de nuages de points LiDAR. Encode les nuages de points en pseudo-image via une représentation basée sur des piliers, puis applique la détection 2D. Utilisé en conduite autonome / robotique.

Généralement entraîné de zéro. Fournissez train.resume_training_checkpoint_path pour reprendre.

Pour les actions TAO Deploy TensorRT (gen_trt_engine, évaluation TensorRT et inference TensorRT), consultez d'abord references/tao-deploy-pointpillars.md. Les modèles de spec Deploy 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 packagé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 niveau supérieur du schéma. L'activation d'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 s'analysent correctement. Utilisez le schéma train packagé pour automl_default_parameters, automl_disabled_parameters, les valeurs par défaut, les limites min/max, les enums, les poids d'option, les conditions mathématiques, les dépendances et les paramètres populaires. N'attendez pas ~/tao-core à l'exécution ; les mainteneurs régénèrent les schémas/modèles 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 requête au stade de l'entraînement, lisez references/skill_info.yaml et résolvez l'override d'exécution à partir soit d'une valeur automl_policy explicite, soit de la requête de workflow de l'utilisateur. Traitez des phrases comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, par défaut sur auto. Quand 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 de workflow/application pour les datasets, specs, répertoires de sortie, paramètres GPU/platform, checkpoints parents et automl_policy. Utilisez l'entraînement direct du modèle uniquement quand automl_policy: off ou que le schéma/modèle train packagé 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-train comme 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 : pointpillars
  • Formats : default
  • Métrique de surveillance : loss

Exigences de Dataset par Action

Action Clé Spec Source Fichiers Liste ?
dataset_convert dataset.data_path id Non
evaluate dataset.data_path train_datasets Non
evaluate dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ Non
export dataset.data_path train_datasets Non
export dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ Non
inference dataset.data_path train_datasets Non
inference dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ Non
prune dataset.data_path train_datasets Non
prune dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ Non
retrain dataset.data_path train_datasets Non
retrain dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ Non
train dataset.data_path train_datasets Non
train dataset.data_info_path train_datasets /results/{dataset_convert_job_id}/data_info/ 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"

train (sources de données obligatoires) :

{
    "train.num_epochs": 30,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

evaluate (sources de données obligatoires) :

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

export (sources de données obligatoires) :

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

inference (sources de données obligatoires) :

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

prune (sources de données obligatoires) :

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

retrain (sources de données obligatoires) :

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

Dataset d'Évaluation

Optionnel. Les données de validation (val.tar.gz) sont séparées de l'entraînement. Utilisées pour l'évaluation mAP.

Paramètres Importants

  • train.num_epochs : Par défaut 80 (beaucoup plus élevé que les autres modèles TAO). PointPillars a besoin de plus d'epochs pour converger sur la détection 3D.
  • train.lr : Taux d'apprentissage. Par défaut 0,003 (planificateur adam_onecycle).
  • dataset.class_names : Liste des classes d'objets 3D. Par défaut 7 classes (style KITTI). Modifiez pour correspondre à votre dataset.
  • dataset.data_path : Chemin vers le répertoire de données du nuage de points.
  • dataset.data_info_path : Chemin vers les fichiers d'information de données de l'étape dataset_convert.
  • dataset.point_cloud_range : Étendue spatiale du nuage de points à considérer. Doit correspondre à votre configuration de capteur.
  • model.dense_head.anchor_generator_config : Configurations d'ancre par classe. Doit être ajustée selon les tailles d'objets et l'étendue du nuage de points.

Multi-GPU / Multi-Nœud

Méthode de lancement : torchrun (LIGHTNING_EXCLUDED_NETWORK). Utilise le natif PyTorch DistributedDataParallel (PAS Lightning Trainer).

Clé Spec Description Par défaut
train.num_gpus Nombre de GPUs par nœud 1
train.gpu_ids Indices de dispositif GPU [0]
train.num_nodes Nombre de nœuds 1
  • CUDA_VISIBLE_DEVICES est explicitement défini à partir de TAO_VISIBLE_DEVICES
  • Utilise nn.parallel.DistributedDataParallel directement (pas de stratégie Lightning)
  • NODE_RANK est copié vers RANK si RANK n'est pas défini

Variables d'environnement multi-nœuds (définies par l'orchestrateur) :

Variable Objectif
WORLD_SIZE Nombre de nœuds
NODE_RANK Rang de ce nœud
MASTER_ADDR IP du nœud de rang-0
MASTER_PORT Port de rang-0 (par défaut 29 500)
NUM_GPU_PER_NODE GPUs par nœud

Matériel

Minimum 1 GPU, recommandé 4 GPU. 16 Go+ (V100 ou A100) de VRAM par GPU. PointPillars est relativement efficace pour la détection 3D. Le principal goulot d'étranglement est l'E/S de données pour les grands datasets de nuages de points.

Motifs d'Erreur

dataset_convert obligatoire : L'entraînement échouera si data_info_path n'est pas rempli à partir d'une tâche dataset_convert antérieure. Exécutez toujours la conversion en premier.

Incompatibilité d'étendue du nuage de points : Si point_cloud_range ne correspond pas à l'étendue réelle des données du capteur, les détections seront mauvaises ou vides.

Numérotation des epochs : Les numéros d'epoch des checkpoints PointPillars peuvent être décalés de 1 par rapport aux epochs signalés dans status.json.

Inference Spec Param / Parent Model

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 l'ancien flux microservices infer_params.py.

Mappages d'inference depuis TAO Core pointpillars.config.json :

Action Champ Spec Fonction Inference Signification
dataset_convert results_dir output_dir répertoire des résultats de tâche courant
evaluate evaluate.checkpoint parent_model fichier de modèle déduit du dossier des résultats de tâche parent
evaluate key key clé de chiffrement
evaluate results_dir output_dir répertoire des résultats de tâche courant
export export.checkpoint parent_model fichier de modèle déduit du dossier des résultats de tâche parent
export export.onnx_file create_onnx_file chemin ONNX de sortie
export export.save_engine create_engine_file chemin moteur TensorRT de sortie
export key key clé de chiffrement
export results_dir output_dir répertoire des résultats de tâche courant
gen_trt_engine gen_trt_engine.onnx_file parent_model fichier de modèle déduit du dossier des résultats de tâche parent
gen_trt_engine gen_trt_engine.save_engine create_engine_file chemin moteur TensorRT de sortie
gen_trt_engine key key clé de chiffrement
gen_trt_engine results_dir output_dir répertoire des résultats de tâche courant
inference inference.checkpoint parent_model fichier de modèle déduit du dossier des résultats de tâche parent
inference inference.trt_engine parent_model fichier de modèle déduit du dossier des résultats de tâche parent
inference key key clé de chiffrement
inference results_dir output_dir répertoire des résultats de tâche courant
prune key key clé de chiffrement
prune prune.model parent_model fichier de modèle déduit du dossier des résultats de tâche parent
prune results_dir output_dir répertoire des résultats de tâche courant
retrain key key clé de chiffrement
retrain results_dir output_dir répertoire des résultats de tâche courant
retrain train.pruned_model_path parent_model fichier de modèle déduit du dossier des résultats de tâche parent
train key key clé de chiffrement
train model.pretrained_model_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 tâche courant
train train.resume_training_checkpoint_path resume_model fichier de modèle déduit du dossier des résultats de tâche courant

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

Déploiement

  • tao-deploy-pointpillars — Workflow de déploiement PointPillars pour la génération de moteur TensorRT, l'évaluation TensorRT et l'inference TensorRT avec TAO Deploy.

Skills similaires