tao-train-oneformer

Par nvidia · skills

OneFormer pour la segmentation universelle d'images. Unifie la segmentation panoptique, d'instance et sémantique avec un

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

OneFormer

OneFormer pour la segmentation d'images universelle. Unifie la segmentation panoptique, d'instance et sémantique avec une seule architecture utilisant des requêtes conditionnées par tâche.

Définissez train.pretrained_backbone et/ou train.pretrained_model.

Pour les actions TAO Deploy TensorRT (gen_trt_engine, TensorRT evaluate, et TensorRT inference), consultez d'abord references/tao-deploy-oneformer.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.

Schémas Dataclass

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 au 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. L'exécution d'AutoML nécessite toujours que schemas/train.schema.json et references/spec_template_train.yaml existent et se parsent 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 d'options, les conditions mathématiques, les dépendances et les paramètres populaires. Ne comptez pas sur ~/tao-core à l'exécution ; les responsables régénèrent les schémas/modèles avant d'empaqueter la skill bank.

Politique d'action d'entraînement

Ce modèle est activé pour AutoML au niveau du modèle. Avant de traiter toute demande au stade d'entraînement, lisez references/skill_info.yaml et résolvez le override d'exécution à partir d'une valeur automl_policy explicite ou de la demande de workflow de l'utilisateur. Traitez les expressions comme « turn off AutoML », « disable AutoML », « no HPO » ou « plain training » comme automl_policy: off pour cette exécution uniquement ; sinon, utilisez par défaut auto. 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 overrides de workflow/application pour les datasets, spécifications, répertoires de sortie, paramètres GPU/plateforme, points de contrôle parents et automl_policy. Utilisez l'entraînement direct du modèle uniquement quand automl_policy: off ou que le schéma/modèle d'entraînement empaqueté est manquant ; dans le cas du schéma manquant, rapportez 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 autres que l'entraînement telles que evaluate, inference, export et les flux de déploiement restent dans cette skill de modèle. Le override automl_policy par exécution ne change pas les métadonnées du modèle.

Exigences d'entraînement

  • Type de dataset : segmentation
  • Formats : coco_panoptic, coco
  • Métrique de suivi : mIoU

Exigences de dataset par action

Action Clé de spécification Source Fichiers Liste ?
evaluate dataset.train.images train_datasets images.tar.gz Non
evaluate dataset.label_map train_datasets label_map.json Non
evaluate dataset.train.annotations train_datasets annotations.json Non
evaluate dataset.train.panoptic train_datasets images_panoptic.tar.gz Non
evaluate dataset.val.images eval_dataset images.tar.gz Non
evaluate dataset.val.annotations eval_dataset annotations.json Non
evaluate dataset.val.panoptic eval_dataset images_panoptic.tar.gz Non
evaluate dataset.test.images eval_dataset images.tar.gz Non
evaluate dataset.test.annotations eval_dataset annotations.json Non
evaluate dataset.test.panoptic eval_dataset images_panoptic.tar.gz Non
inference dataset.train.images train_datasets images.tar.gz Non
inference dataset.label_map train_datasets coco_panoptic: label_map_panoptic.json; *: label_map.json Non
inference dataset.train.annotations train_datasets annotations.json Non
inference dataset.train.panoptic train_datasets images_panoptic.tar.gz Non
inference dataset.val.images eval_dataset images.tar.gz Non
inference dataset.val.annotations eval_dataset annotations.json Non
inference dataset.val.panoptic eval_dataset images_panoptic.tar.gz Non
inference dataset.test.images eval_dataset images.tar.gz Non
quantize dataset.train.images train_datasets images.tar.gz Non
quantize dataset.train.annotations train_datasets annotations.json Non
quantize dataset.label_map train_datasets label_map.json Non
quantize dataset.train.panoptic train_datasets images_panoptic.tar.gz Non
quantize dataset.val.images eval_dataset images.tar.gz Non
quantize dataset.val.annotations eval_dataset annotations.json Non
quantize dataset.val.panoptic eval_dataset images_panoptic.tar.gz Non
quantize dataset.test.images eval_dataset images.tar.gz Non
quantize dataset.quant_calibration_dataset.images_dir train_datasets images.tar.gz Non
train dataset.train.images train_datasets images.tar.gz Non
train dataset.train.annotations train_datasets annotations.json Non
train dataset.label_map train_datasets label_map.json Non
train dataset.train.panoptic train_datasets images_panoptic.tar.gz Non
train dataset.val.images eval_dataset images.tar.gz Non
train dataset.val.annotations eval_dataset annotations.json Non
train dataset.val.panoptic eval_dataset images_panoptic.tar.gz Non
train dataset.test.images eval_dataset images.tar.gz Non

Overrides de spécification typiques

Les overrides de source de données sont obligatoires pour chaque action — l'agent DOIT construire les chemins des sources 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_gpus": 1,
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "model.sem_seg_head.num_classes": 133,
    "dataset.contiguous_id": True,
    "train.precision": "32",
    "dataset.train.images": f"{S3_TRAIN}/images.tar.gz",
    "dataset.train.annotations": f"{S3_TRAIN}/annotations.json",
    "dataset.label_map": f"{S3_TRAIN}/label_map.json",
    "dataset.train.panoptic": f"{S3_TRAIN}/images_panoptic.tar.gz",
    "dataset.val.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.val.annotations": f"{S3_EVAL}/annotations.json",
    "dataset.val.panoptic": f"{S3_EVAL}/images_panoptic.tar.gz",
    "dataset.test.images": f"{S3_EVAL}/images.tar.gz",
}

evaluate (sources de données obligatoires) :

{
    "model.sem_seg_head.num_classes": 133,
    "dataset.contiguous_id": True,
    "dataset.train.images": f"{S3_TRAIN}/images.tar.gz",
    "dataset.label_map": f"{S3_TRAIN}/label_map.json",
    "dataset.train.annotations": f"{S3_TRAIN}/annotations.json",
    "dataset.train.panoptic": f"{S3_TRAIN}/images_panoptic.tar.gz",
    "dataset.val.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.val.annotations": f"{S3_EVAL}/annotations.json",
    "dataset.val.panoptic": f"{S3_EVAL}/images_panoptic.tar.gz",
    "dataset.test.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.test.annotations": f"{S3_EVAL}/annotations.json",
    "dataset.test.panoptic": f"{S3_EVAL}/images_panoptic.tar.gz",
}

export :

{
    "model.sem_seg_head.num_classes": 133,
    "model.export": True,
}

inference (sources de données obligatoires) :

{
    "dataset.train.images": f"{S3_TRAIN}/images.tar.gz",
    "dataset.label_map": {"coco_panoptic": f"{S3_TRAIN}/label_map_panoptic.json; *: label_map.json"},
    "dataset.train.annotations": f"{S3_TRAIN}/annotations.json",
    "dataset.train.panoptic": f"{S3_TRAIN}/images_panoptic.tar.gz",
    "dataset.val.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.val.annotations": f"{S3_EVAL}/annotations.json",
    "dataset.val.panoptic": f"{S3_EVAL}/images_panoptic.tar.gz",
    "dataset.test.images": f"{S3_EVAL}/images.tar.gz",
}

quantize (sources de données obligatoires) :

{
    "dataset.train.images": f"{S3_TRAIN}/images.tar.gz",
    "dataset.train.annotations": f"{S3_TRAIN}/annotations.json",
    "dataset.label_map": f"{S3_TRAIN}/label_map.json",
    "dataset.train.panoptic": f"{S3_TRAIN}/images_panoptic.tar.gz",
    "dataset.val.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.val.annotations": f"{S3_EVAL}/annotations.json",
    "dataset.val.panoptic": f"{S3_EVAL}/images_panoptic.tar.gz",
    "dataset.test.images": f"{S3_EVAL}/images.tar.gz",
    "dataset.quant_calibration_dataset.images_dir": f"{S3_TRAIN}/images.tar.gz",
}

Dataset d'évaluation

Optionnel. Données de validation configurées aux côtés de l'entraînement dans la configuration du dataset.

Paramètres importants

  • model.sem_seg_head.num_classes : Nombre de classes de segmentation. Par défaut 133 (COCO panoptique).
  • model.backbone.name : Par défaut D2SwinTransformer (basé sur Swin). embed_dim=192, depths=[2,2,18,2] par défaut.
  • train.num_epochs : Par défaut 50 — significativement plus élevé que la plupart des modèles TAO. OneFormer a besoin de plus d'époques pour converger.
  • train.optim.lr : Taux d'apprentissage. Par défaut 1e-5. Inférieur au 2e-4 de Mask2Former.
  • model.task_toggling : Activation/désactivation de tâches spécifiques : semantic_on, instance_on, panoptic_on.
  • export.task : Mode de tâche d'export. Options : semantic, instance, panoptic. Par défaut semantic. L'entrée d'export par défaut est 640x640.
  • inference.mode : Mode d'inférence. Options : semantic, instance, panoptic. Par défaut semantic. image_size par défaut à [1024, 1024].
  • evaluate.iou_per_class : Rapporter l'IoU par classe lors de l'évaluation. Par défaut True.

Multi-GPU / Multi-nœud

Méthode de lancement : Gérée par Lightning (un seul processus python, Lightning lance les workers).

Clé de spécification Description Par défaut
train.num_gpus Nombre de GPUs 1
train.gpu_ids Indices des appareils GPU [0]
train.num_nodes Nombre de nœuds 1
  • Utilise DDPStrategy explicite avec find_unused_parameters=True, gradient_as_bucket_view=True, process_group_backend="nccl"
  • sync_batchnorm est toujours activé
  • Pas de support fsdp — DDP uniquement

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 2 GPU, recommandé 4 GPU. 24 GB+ (A100 recommandé) de VRAM par GPU. OneFormer est intensif en mémoire comme Mask2Former. batch_size=1 est la valeur par défaut. Multi-GPU est nécessaire pour une vitesse d'entraînement raisonnable, particulièrement avec 50 époques.

Modèles d'erreur

CUDA out of memory : batch_size est déjà 1. Réduisez la résolution de l'image ou utilisez une configuration Swin plus petite.

Entraînement lent : 50 époques par défaut avec batch_size=1 est lent sur un seul GPU. Utilisez l'entraînement distribué multi-GPU.

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 du SDK avant create_job(). Cela reproduit l'ancien flux microservices infer_params.py.

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

Action Champ de spécification 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.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 results_dir output_dir répertoire de résultats du job actuel
train train.pretrained_backbone {'link': 'https://github.com/SwinTransformer/storage/releases/download/v1.0.8/swin_tiny_patch4_window7_224_22k.pth', 'destination_path': '/ptm/mask2former/swin_tiny_patch4_window7_224_22k/swin_tiny_patch4_window7_224_22k.pth'} {'link': 'https://github.com/SwinTransformer/storage/releases/download/v1.0.8/swin_tiny_patch4_window7_224_22k.pth', 'destination_path': '/ptm/mask2former/swin_tiny_patch4_window7_224_22k/swin_tiny_patch4_window7_224_22k.pth'}
train train.pretrained_model ptm_if_no_resume_model PTM quand aucun point de contrôle 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 child entraînement/export/AutoML en amont comme parent_job_id. Le SDK liste le dossier de résultats parent, filtre les artefacts de point de contrôle et retourne le fichier ou dossier de modèle sélectionné. N'ajoutez pas ces mappages à config.json et ne patcher pas les scripts runners générés pour deviner les chemins des points de contrôle.

Déploiement

  • tao-deploy-oneformer — Flux de déploiement OneFormer pour la génération du moteur TensorRT, l'évaluation TensorRT et l'inférence TensorRT utilisant TAO Deploy.

Skills similaires