Option
HeimHeim Skill Datenwissenschaft und ML tao-train-grounding-dino

tao-train-grounding-dino

NVIDIA/skills NVIDIA/skills

Trainiert, bewertet, exportiert, quantisiert und führt Inferenz für ein Grounding-DINO-Modell durch, das Objekte erkennt, die durch Text-Prompts beschrieben werden, ohne dass ein festes Klassenvokabular vorhanden ist.

...Alle erweitern
0
Zeit aktualisiert 25. September 2026

Grounding DINO

Grounding DINO für die Objekterkennung in offenen Datensätzen. Kombiniert die Erkennung im DINO-Stil mit dem BERT-Text-Encoder für eine sprachgesteuerte Erkennung. Erkennt Objekte, die durch Textanweisungen beschrieben werden, ohne festes Klassenvokabular.

Legen Sie „train.pretrained_model_path“ für die vollständigen Grounding-DINO-Gewichte oder „model.pretrained_backbone_path“ für das Backbone allein fest.

Für TAO Deploy-TensorRT-Aktionen (gen_trt_engine, TensorRT evaluate und TensorRT inference) lesen Sie bitte zunächst die Datei references/tao-deploy-grounding-dino.md. Die Deployment-Spezifikationsvorlagen befinden sich im Ordner „references/“ dieses Skills und tragen das Präfix „spec_template_deploy_*.yaml “.

Dataclass-Schemas

Generierte TAO-Core-Schemas sind im Verzeichnis „schemas/.schema.json“ gepackt, wobei „schemas/manifest.json“ die verfügbaren Aktionen auflistet. Jedes generierte Schema erzeugt außerdem die Datei „references/spec_template_.yaml“ aus dem Standardfeld der obersten Ebene des Schemas. Die AutoML-Aktivierung wird auf der Modellebene in „references/skill_info.yaml“ über „automl_enabled“ deklariert. Für ein ausführbares AutoML müssen „schemas/train.schema.json“ und „references/spec_template_train.yaml“ weiterhin vorhanden sein und geparst werden. Verwenden Sie das im Paket enthaltene Trainingsschema für „automl_default_parameters“, „automl_disabled_parameters“, Standardwerte, Min-/Max-Grenzwerte, Aufzählungen, Optionsgewichte, mathematische Bedingungen, Abhängigkeiten und gängige Parameter. Rechnen Sie zur Laufzeit nicht mit „~/tao-core“; die Betreuer generieren Schemata und Vorlagen neu, bevor sie die Skill-Bank verpacken.

Richtlinie für Trainingsaktionen

Dieses Modell ist auf der Modellebene für AutoML aktiviert. Bevor eine Anfrage in der Trainingsphase bearbeitet wird, lesen Sie „references/skill_info.yaml“ und ermitteln Sie die Ausführungsüberschreibung entweder anhand eines expliziten „automl_policy“-Werts oder anhand der Workflow-Anfrage des Benutzers. Verwenden Sie standardmäßig „automl_policy: on“ und bieten Sie die Optionen „on“ und „off“ nur in neuen Startaufforderungen an. Behandeln Sie Phrasen wie „AutoML ausschalten“, „AutoML deaktivieren“, „kein HPO“ oder „einfaches Training“ als `automl_policy: off` – jedoch nur für diesen Durchlauf. Wenn „automl_policy: on“, „automl_enabled: true“ und sowohl „schemas/train.schema.json“ als auch „references/spec_template_train.yaml“ gepackt sind, leiten Sie die „train“-Aktion standardmäßig über „tao-skill-bank:tao-run-automl“ mit dem „skill_dir“ dieses Modells weiter. Behalten Sie Workflow-/Anwendungsüberschreibungen für Datensätze, Spezifikationen, Ausgabeverzeichnisse, GPU-/Plattform-Einstellungen, übergeordnete Checkpoints und „automl_policy“ bei. Verwenden Sie das direkte Modelltraining nur, wenn „automl_policy: off“ ist oder das gepackte „train“-Schema bzw. die Vorlage fehlt; im Fall eines fehlenden Schemas melden Sie, dass AutoML für dieses Modell aktiviert, aber nicht ausführbar ist, bis Schemata generiert wurden.

Nicht-Train-Aktionen wie „evaluate“, „inference“, „export“ und „deploy“ verbleiben in diesem Modell-Skill. Die pro Lauf vorgenommene Überschreibung von „automl_policy“ ändert die Modellmetadaten nicht.

Anforderungen an das Training

  • Datensatztyp: object_detection
  • Formate: odvg, coco, raw
  • Überwachungsmetrik: val_mAP50

Anforderungen an den Datensatz pro Aktion

Aktion Spezifikationsschlüssel Quelle Dateien Liste?
auswerten dataset.test_data_sources eval_dataset image_dir: images.tar.gz, json_file: annotations.json Nein
Inferenz dataset.infer_data_sources.image_dir Inferenz-Datensatz images.tar.gz Ja
Inferenz dataset.infer_data_sources.captions Workflow-Eingabeaufforderungen Eingabeaufforderungsliste Ja
Quantisierung dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Ja
quantize Datensatz.Validierungsdatenquellen eval_dataset image_dir: images.tar.gz, json_file: annotations.json Nein
Quantisieren dataset.quant_calibration_data_sources Kalibrierungs-/Bewertungsdatensatz image_dir: images.tar.gz, json_file: annotations.json Nein
train dataset.train_data_sources train_datasets image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Ja
train Datensatz.Validierungsdatenquellen eval_dataset image_dir: images.tar.gz, json_file: annotations.json Nein

Der Runner kann Image-Archive wie images.tar.gz einlesen, aber direkte lokale Docker-TAO-CLI-Spezifikationen müssen image_dir auf ein entpacktes Image-Verzeichnis verweisen. Die Skill-Metadaten kennzeichnen diese archivbasierten Image-Quellen mit runtime: extracted_folder, damit ein neuer Runner das Archiv vor dem Start von TAO entpacken kann.

Typische Spezifikationsüberschreibungen

Überschreibungen der Datenquellen sind für jede Aktion obligatorisch – der Agent MUSS Datenquellenpfade anhand der obigen Tabelle „Dataset-Anforderungen pro Aktion“ erstellen und diese in ` spec_overrides` aufnehmen.

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

train (obligatorische Datenquellen):

{
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

deploy/gen_trt_engine (verwende references/tao-deploy-grounding-dino.md):

{
    "gen_trt_engine.onnx_file": "",
    "gen_trt_engine.trt_engine": "",
    "gen_trt_engine.tensorrt.data_type": "FP16",
}

Inferenz (erforderliche Datenquellen):

{
    "inference.checkpoint": "<ausgewählter Trainings-/AutoML-Checkpoint>",
    "dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
    "dataset.infer_data_sources.captions": [
        "Feuerlöscher",
        "Leitkegel",
        "Wagen",
        "Gabelstapler"
    ],
}

Auswertung (erforderliche Datenquellen):

{
    "evaluate.checkpoint": "<ausgewählter Trainings-/AutoML-Checkpoint>",
    "dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

Quantisierung (erforderliche Datenquellen):

{
    "quantize.model_path": "",
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
    "dataset.quant_calibration_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

Evaluierungsdatensatz

Optional. Für die Validierung werden Annotationen im COCO-Format für mAP verwendet, auch wenn für das Training das ODVG-Format verwendet werden kann.

Wichtige Parameter

  • model.backbone: Standardmäßig swin_tiny_224_1k. Unterstützt auch resnet_50 und andere Swin-Varianten. Swin schneidet bei Grounding-Aufgaben im Allgemeinen besser ab.
  • model.text_encoder_type: BERT-Modell für die Textkodierung. Standard: „bert-base-uncased“. „max_text_len“ ist standardmäßig auf 256 gesetzt.
  • model.max_text_len: Passen Sie diesen Wert an die Label-/Token- Positionszuordnungen des Datensatzes an. Verkleinern Sie ihn nicht für Smoke-Tests, es sei denn, die entsprechenden Label-Zuordnungen werden mit derselben Länge neu generiert; andernfalls kann die Validierung aufgrund einer Nichtübereinstimmung der Matrixformen zwischen Token-Wahrscheinlichkeiten und Positionszuordnungen fehlschlagen.
  • train.optim.lr: Lernrate. Standardwert 2e-4. lr_backbone 2e-5. Unterstützt neben fp16/fp32 auch die Genauigkeit bf16.
  • dataset.max_labels: Maximale Anzahl von Labels pro Bild während des Trainings. Standardwert 50. Bei Datensätzen mit dichter Annotation erhöhen.
  • model.num_queries: Objektabfragen. Standardwert 900 (höher als die 300 bei DINO) aufgrund des offenen Vokabulars.
  • model.num_queries / model.num_select: Halten Sie num_queries hoch genug, um die Anzahl der übereinstimmenden ODVG-Ziele in einem Batch abzudecken. Sehr kleine „smoke“-Werte wie beispielsweise 20 können bei der ungarischen Zielindizierung auf dichten Bildern zu Fehlern führen; verwende mindestens 100 für minimale „Grounding DINO smoke“-Läufe, es sei denn, es ist bekannt, dass der Datensatz weniger Objekte pro Bild enthält.
  • train.optim.lr_steps: MultiStep-LR-Zeitplan. Standard [10].

Multi-GPU / Multi-Knoten

Startmethode: Von Lightning verwaltet (einzelner Python -Prozess, Lightning startet Worker).

Spezifikationsschlüssel Beschreibung Standard
train.num_gpus Anzahl der GPUs 1
train.gpu_ids GPU-Geräteindizes [0]
train.num_nodes Anzahl der Knoten 1
train.distributed_strategy ddp oder fsdp ddp

Gleiches DDP-/FSDP-Verhalten wie bei DINO. Für den Einsatz auf mehreren Knoten müssen die Umgebungsvariablen WORLD_SIZE, NODE_RANK, MASTER_ADDR und MASTER_PORT vom Orchestrator festgelegt werden.

Export-/TRT-Standardwerte

  • Export-Eingabe: 960x544 (größer als bei anderen OD-Modellen), opset 17. Behalten Sie die Exportvorgaben von Grounding-DINO für Smoke-Tests auf die Auflösung der Vorlage beibehalten; die Reduzierung des Exports auf sehr kleine Bildgrößen wie 128x128 kann eine PyTorch-ONNX-Assertion bezüglich der Shape-Inferenz im „contrastive text“-Kopf während torch.onnx.export auslösen.
  • Die übergeordnete PyTorch-CLI „grounding_dino“ unterstützt Trainieren, Auswerten, Inferenz, Exportieren und Quantisieren. Führen Sie die TensorRT-Engine-Generierung, die TensorRT-Inferenz und die TensorRT-Auswertung über „references/tao-deploy-grounding-dino.md“ aus.
  • TRT-Datentypen: nur FP32, FP16 – INT8 wird NICHT unterstützt
  • TRT-Arbeitsbereich: 8192 MB (8-mal größer als bei anderen OD-Modellen)
  • TRT max_batch_size: 4

Hardware

Mindestens 1 GPU, empfohlen werden 4 GPUs. 24 GB+ (A100 empfohlen) VRAM pro GPU. Grounding DINO ist aufgrund des Text-Encoders (BERT) rechenintensiver als Standard-DINO. 24 GB+ GPU-Speicher empfohlen. Reduzieren Sie die „batch_size“ bei GPUs mit 16 GB.

Fehlermuster

CUDA-Speicherausgang: Verringern Sie die „batch_size“ (4 → 2 → 1). Der BERT-Text-Encoder verursacht zusätzlich zum Vision-Backbone einen erheblichen Speicher-Overhead.

Fehler bei Annotationskategorie-IDs: Validierungsannotationen sollten Kategorie-IDs ab 0 aufweisen, um eine korrekte Verlustberechnung zu gewährleisten. Verwenden Sie bei Bedarf eine Konvertierung des Annotationsformats.

Ladefehler des Text-Encoders: Stellen Sie sicher, dass der Container Zugriff auf die „bert-base-uncased“-Gewichte hat, oder geben Sie einen lokalen Pfad an.

Die Quantisierung mit einem PyTorch-Checkpoint schlägt in TAO Toolkit 7.0.0-rc-226 fehl: Das Grounding-DINO-Quantisierungsskript des Containers übergibt cap_lists=None beim Laden eines Checkpoints, was in post_process.py zu einem Fehler führt. Die ONNX-Quantisierung verwendet das exportierte ONNX-Artefakt und die COCO-Kalibrierungsdaten, aber dem standardmäßigen rc-226 PyTorch-Image fehlt zudem das Modul „modelopt.onnx.quantization “. Behandeln Sie dies als ein Image-/SDK-Blockierproblem, nicht als Problem des Checkpoint-Resolvers.

Die Formen von „mat1“ und „mat2“ können in „post_process.py“ nicht multipliziert werden: Die Tokenlängen und die Label-Positionszuordnungen sind inkonsistent, was häufig daran liegt, dass „model.max_text_len“ unter den Standardwert von 256 überschrieben wurde, während die Label-Zuordnungen des Datensatzes weiterhin Positionszuordnungen mit einer Länge von 256 verwenden. Stellen Sie ` model.max_text_len ` wieder her oder generieren Sie die Label-Maps mit derselben Länge neu.

Der Index liegt außerhalb des zulässigen Bereichs für Dimension 0 in criterion.py: model.num_queries ist zu klein für die abgeglichenen ODVG-Ziele im aktuellen Batch. Erhöhen Sie model.num_queries und halten Sie model.num_select damit kompatibel.

NotADirectoryError bei images.tar.gz/.jpg: Die direkte TAO-CLI versucht, einen Archivpfad als Verzeichnis zu durchlaufen. Entpacken Sie das Archiv und setzen Sie das entsprechende Feld „image_dir“ auf den entpackten Bildordner; archivbasierte Skill-Datenquellen verwenden aus diesem Grund „runtime: extracted_folder “.

Spezifikationsparameter / Inferenz des übergeordneten Modells

Modellspezifische Inferenz-Zuordnungen gehören in diese MD-Datei, nicht in die „config.json“. Generierte Runner sollten diesen Abschnitt lesen und die Zuordnungen mithilfe von SDK-Helfern vor dem Aufruf von „create_job()“ anwenden. Dies entspricht dem alten „infer_params.py “-Ablauf der Microservices.

Inferenz-Zuordnungen aus der TAO-Core-Datei „grounding_dino.config.json“:

Aktion Spezifikationsfeld Inferenzfunktion Bedeutung
auswerten Verschlüsselungsschlüssel Schlüssel Verschlüsselungsschlüssel
auswerten auswerten.Checkpoint übergeordnetes_Modell Modelldatei, abgeleitet aus dem Ergebnisordner des übergeordneten Auftrags
auswerten evaluate.trt_engine parent_model Modelldatei, abgeleitet aus dem Ergebnisordner des übergeordneten Jobs
auswerten Ergebnisverzeichnis output_dir aktuelles Verzeichnis für Job-Ergebnisse
export Verschlüsselungsschlüssel Schlüssel Verschlüsselungsschlüssel
Export Export.Checkpoint parent_model Modelldatei, abgeleitet aus dem Ergebnisordner des übergeordneten Auftrags
export export.onnx_file create_onnx_file Ausgabe-ONNX-Pfad
export Ergebnisverzeichnis Ausgabeverzeichnis Verzeichnis für die aktuellen Auftragsergebnisse
Inferenz Verschlüsselungsschlüssel Schlüssel Verschlüsselungsschlüssel
Inferenz Inferenz.Checkpoint parent_model Modelldatei, die aus dem Ergebnisordner des übergeordneten Auftrags abgeleitet wurde
Inferenz inference.trt_engine parent_model Modelldatei, abgeleitet aus dem Ergebnisordner des übergeordneten Jobs
Inferenz Ergebnisverzeichnis output_dir aktuelles Verzeichnis für Job-Ergebnisse
Quantisierung Verschlüsselungsschlüssel Schlüssel Verschlüsselungsschlüssel
Quantisierung quantize.model_path parent_model Modelldatei, die aus dem Ergebnisordner des übergeordneten Jobs abgeleitet wurde
quantize Ergebnisverzeichnis output_dir Aktuelles Verzeichnis für Job-Ergebnisse
train Verschlüsselungsschlüssel Schlüssel Verschlüsselungsschlüssel
train Modell.vortrainiertes_Backbone_Pfad ptm_if_no_resume_model PTM, wenn kein Resume-Checkpoint vorhanden ist
train Ergebnisverzeichnis output_dir Verzeichnis für die Ergebnisse des aktuellen Auftrags
train train.vortrainiertes_Modell_Pfad ptm_if_no_resume_model PTM, wenn kein Checkpoint für die Wiederaufnahme vorhanden ist
train train.resume_training_checkpoint_path resume_model Modelldatei, abgeleitet aus dem aktuellen Job-Ergebnisordner

Für „parent_model“ oder „parent_model_folder“ übergeben Sie die ID des übergeordneten train/export/AutoML-Unterjobs als „parent_job_id“. Das SDK listet den übergeordneten Ergebnisordner auf, filtert Checkpoint-Artefakte heraus und gibt die ausgewählte Modelldatei oder den ausgewählten Ordner zurück. Fügen Sie diese Zuordnungen nicht wieder in die Datei „config.json“ ein und nehmen Sie keine Änderungen an den generierten Runner-Skripten vor, um Checkpoint-Pfade zu erraten.

Bei der Auswahl eines Grounding-DINO-Checkpoints außerhalb des SDK-Resolvers muss das gewünschte Epochen-/Schritt-Artefakt exakt übereinstimmen, zum Beispiel model_epoch_000_step_00046.pth. Der symbolische Link „gdino_model_latest.pth“ ist nur gültig, wenn „latest“ explizit angefordert wird. Übertragen Sie strukturelle Modelleinstellungen wie „model.backbone“, „model.num_queries“, „model.num_select“, „model.num_feature_levels“, „model.max_text_len“ und die Auflösung der Export-Eingabe in die Spezifikationen für „evaluate“, „inference“, „export“ und „deploy“, damit Checkpoint- und Engine-Formen übereinstimmen.

Bereitstellung

  • tao-deploy-grounding-dino
Auf GitHub ansehen
---
name: tao-train-grounding-dino
description: Trains, evaluates, exports, quantizes, and runs inference for a Grounding DINO model that detects objects described by text prompts without a fixed class vocabulary.
license: Apache-2.0
---

# Grounding DINO

Grounding DINO for open-set object detection. Combines DINO-style detection with BERT text encoder for language-guided detection. Detects objects described by text prompts without fixed class vocabulary.

Set train.pretrained_model_path for full Grounding DINO weights or model.pretrained_backbone_path for backbone-only.

For TAO Deploy TensorRT actions (`gen_trt_engine`, TensorRT `evaluate`, and TensorRT `inference`), read `references/tao-deploy-grounding-dino.md` first. Deploy spec templates live in this skill's `references/` folder with the `spec_template_deploy_*.yaml` prefix.

## Dataclass Schemas

Generated TAO Core schemas are packaged in `schemas/<action>.schema.json`, with `schemas/manifest.json` listing available actions. Each generated schema also emits `references/spec_template_<action>.yaml` from the schema top-level `default` field. AutoML enablement is declared at the model layer in `references/skill_info.yaml` via `automl_enabled`. Runnable AutoML still requires `schemas/train.schema.json` and `references/spec_template_train.yaml` to exist and parse. Use the packaged train schema for `automl_default_parameters`, `automl_disabled_parameters`, defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect `~/tao-core` at runtime; maintainers regenerate schemas/templates before packaging the skill bank.

## Train Action Policy

This model is AutoML-enabled at the model layer. Before handling any train-stage request, read `references/skill_info.yaml` and resolve the run override from either an explicit `automl_policy` value or the user's workflow request. Use `automl_policy: on` by default and only expose `on` / `off` in new launch prompts. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as `automl_policy: off` for this run only. When `automl_policy: on`, `automl_enabled: true`, and both `schemas/train.schema.json` and `references/spec_template_train.yaml` are packaged, route the train action through `tao-skill-bank:tao-run-automl` by default with this model's `skill_dir`. Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and `automl_policy`. Use direct model training only when `automl_policy: off` or the packaged train schema/template is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.

Non-train actions such as `evaluate`, `inference`, `export`, and deploy flows stay in this model skill. The per-run `automl_policy` override does not change model metadata.

## Training Requirements

- **Dataset type:** object_detection
- **Formats:** odvg, coco, raw
- **Monitoring metric:** val_mAP50

### Per-Action Dataset Requirements

| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| evaluate | dataset.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| inference | dataset.infer_data_sources.image_dir | inference_dataset | images.tar.gz | Yes |
| inference | dataset.infer_data_sources.captions | workflow prompts | prompt list | Yes |
| quantize | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| quantize | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| quantize | dataset.quant_calibration_data_sources | calibration/eval dataset | image_dir: images.tar.gz, json_file: annotations.json | No |
| train | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Yes |
| train | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | No |

The runner may source image archives as `images.tar.gz`, but direct local
Docker TAO CLI specs must point `image_dir` to an extracted image directory.
Skill metadata marks these archive-backed image sources with
`runtime: extracted_folder` so a fresh runner can unpack the archive before
launching TAO.

### Typical Spec Overrides

Data source overrides are **mandatory for every action** — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in `spec_overrides`.

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

**train (mandatory data sources):**
```python
{
    "train.num_epochs": 10,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
```

**deploy/gen_trt_engine (use `references/tao-deploy-grounding-dino.md`):**
```python
{
    "gen_trt_engine.onnx_file": "<exported_onnx_uri>",
    "gen_trt_engine.trt_engine": "<output_engine_path>",
    "gen_trt_engine.tensorrt.data_type": "FP16",
}
```

**inference (mandatory data sources):**
```python
{
    "inference.checkpoint": "<selected train/AutoML checkpoint>",
    "dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
    "dataset.infer_data_sources.captions": [
        "fire extinguisher",
        "cone",
        "cart",
        "forklift"
    ],
}
```

**evaluate (mandatory data sources):**
```python
{
    "evaluate.checkpoint": "<selected train/AutoML checkpoint>",
    "dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
```

**quantize (mandatory data sources):**
```python
{
    "quantize.model_path": "<selected train checkpoint or exported ONNX model>",
    "dataset.train_data_sources": [{"image_dir": f"{S3_TRAIN}/images.tar.gz", "json_file": f"{S3_TRAIN}/annotations_odvg.jsonl", "label_map": f"{S3_TRAIN}/annotations_odvg_labelmap.json"}],
    "dataset.val_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
    "dataset.quant_calibration_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
```
## Eval Dataset

Optional. Validation uses COCO-format annotations for mAP even though training can use ODVG format.

## Important Parameters

- **model.backbone**: Default swin_tiny_224_1k. Also supports resnet_50 and other Swin variants. Swin generally performs better for grounding tasks.
- **model.text_encoder_type**: BERT model for text encoding. Default bert-base-uncased. max_text_len defaults to 256.
- **model.max_text_len**: Keep this aligned with the dataset label/token
  position maps. Do not shrink it for smoke tests unless the corresponding
  label maps are regenerated with the same length; otherwise validation can
  fail with a matrix shape mismatch between token probabilities and position
  maps.
- **train.optim.lr**: Learning rate. Default 2e-4. lr_backbone 2e-5. Supports bf16 precision in addition to fp16/fp32.
- **dataset.max_labels**: Maximum labels per image during training. Default 50. Increase for dense annotation datasets.
- **model.num_queries**: Object queries. Default 900 (higher than DINO's 300) due to open-vocabulary nature.
- **model.num_queries / model.num_select**: Keep `num_queries` high enough
  for the number of matched ODVG targets in a batch. Very small smoke values
  such as 20 can fail during Hungarian target indexing on dense images; use at
  least 100 for minimal Grounding DINO smoke runs unless the dataset is known
  to have fewer objects per image.
- **train.optim.lr_steps**: MultiStep LR schedule. Default [10].

## Multi-GPU / Multi-Node

**Launch method:** Lightning-managed (single `python` process, Lightning spawns workers).

| Spec Key | Description | Default |
|----------|-------------|---------|
| `train.num_gpus` | Number of GPUs | 1 |
| `train.gpu_ids` | GPU device indices | [0] |
| `train.num_nodes` | Number of nodes | 1 |
| `train.distributed_strategy` | `ddp` or `fsdp` | `ddp` |

Same DDP/FSDP behavior as DINO. Multi-node requires `WORLD_SIZE`, `NODE_RANK`, `MASTER_ADDR`, `MASTER_PORT` env vars set by orchestrator.

## Export / TRT Defaults

- Export input: 960x544 (larger than other OD models), opset 17. Keep
  Grounding-DINO export specs at the template export resolution for smoke tests;
  reducing export to very small image sizes such as 128x128 can trigger a
  PyTorch ONNX shape-inference assertion in the contrastive text head during
  `torch.onnx.export`.
- The parent PyTorch `grounding_dino` CLI supports `train`, `evaluate`,
  `inference`, `export`, and `quantize`. Run TensorRT engine generation,
  TensorRT inference, and TensorRT evaluation through `references/tao-deploy-grounding-dino.md`.
- TRT data types: FP32, FP16 only — **INT8 is NOT supported**
- TRT workspace: 8192 MB (8x larger than other OD models)
- TRT max_batch_size: 4

## Hardware

Minimum 1 GPU(s), recommended 4 GPU(s). 24GB+ (A100 recommended) VRAM per GPU. Grounding DINO is heavier than standard DINO due to the text encoder (BERT). 24GB+ GPU memory recommended. Reduce batch_size for 16GB GPUs.

## Error Patterns

**CUDA out of memory**: Reduce batch_size (4 -> 2 -> 1). The BERT text encoder adds significant memory overhead on top of the vision backbone.

**Val annotation category IDs**: Validation annotations should have category IDs starting from 0 for correct loss computation. Use annotation format conversion if needed.

**Text encoder loading error**: Ensure the container has access to download bert-base-uncased weights or provide a local path.

**Quantize with a PyTorch checkpoint fails in TAO Toolkit 7.0.0-rc-226**:
The container's Grounding-DINO quantize script passes `cap_lists=None` when
loading a checkpoint, which fails in `post_process.py`. ONNX quantization uses
the exported ONNX artifact and COCO calibration data, but the default rc-226
PyTorch image also lacks the `modelopt.onnx.quantization` module. Treat this as
an image/SDK blocker, not a checkpoint resolver issue.

**mat1 and mat2 shapes cannot be multiplied in `post_process.py`**: The text
token length and label position maps are inconsistent, commonly because
`model.max_text_len` was overridden below the default 256 while the dataset
label maps still use 256-length position maps. Restore `model.max_text_len` or
regenerate the label maps with the same length.

**index is out of bounds for dimension 0 in `criterion.py`**: `model.num_queries`
is too small for the matched ODVG targets in the current batch. Increase
`model.num_queries` and keep `model.num_select` compatible with it.

**NotADirectoryError with `images.tar.gz/<image>.jpg`**: The direct TAO CLI is
trying to traverse an archive path as a directory. Extract the archive and set
the relevant `image_dir` field to the extracted image folder; archive-backed
skill data sources use `runtime: extracted_folder` for this reason.

## Spec Param / Parent Model Inference

Model-specific inference mappings belong in this MD file, not in `config.json`. Generated runners should read this section and apply the mappings with SDK helpers before `create_job()`. This mirrors the old microservices `infer_params.py` flow.

Inference mappings from TAO Core `grounding_dino.config.json`:

| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| evaluate | `encryption_key` | `key` | encryption key |
| evaluate | `evaluate.checkpoint` | `parent_model` | model file inferred from the parent job results folder |
| evaluate | `evaluate.trt_engine` | `parent_model` | model file inferred from the parent job results folder |
| evaluate | `results_dir` | `output_dir` | current job results directory |
| export | `encryption_key` | `key` | encryption key |
| export | `export.checkpoint` | `parent_model` | model file inferred from the parent job results folder |
| export | `export.onnx_file` | `create_onnx_file` | output ONNX path |
| export | `results_dir` | `output_dir` | current job results directory |
| inference | `encryption_key` | `key` | encryption key |
| inference | `inference.checkpoint` | `parent_model` | model file inferred from the parent job results folder |
| inference | `inference.trt_engine` | `parent_model` | model file inferred from the parent job results folder |
| inference | `results_dir` | `output_dir` | current job results directory |
| quantize | `encryption_key` | `key` | encryption key |
| quantize | `quantize.model_path` | `parent_model` | model file inferred from the parent job results folder |
| quantize | `results_dir` | `output_dir` | current job results directory |
| train | `encryption_key` | `key` | encryption key |
| train | `model.pretrained_backbone_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |
| train | `results_dir` | `output_dir` | current job results directory |
| train | `train.pretrained_model_path` | `ptm_if_no_resume_model` | PTM when no resume checkpoint exists |
| train | `train.resume_training_checkpoint_path` | `resume_model` | model file inferred from the current job results folder |

For `parent_model` or `parent_model_folder`, pass the upstream train/export/AutoML child job id as `parent_job_id`. The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to `config.json` and do not patch generated runner scripts to guess checkpoint paths.

When selecting a Grounding-DINO checkpoint outside the SDK resolver, match the
intended epoch/step artifact exactly, for example
`model_epoch_000_step_00046.pth`. The `gdino_model_latest.pth` symlink is valid
only when latest is explicitly requested. Carry structural model settings such
as `model.backbone`, `model.num_queries`, `model.num_select`,
`model.num_feature_levels`, `model.max_text_len`, and export input resolution
forward into evaluate, inference, export, and deploy specs so checkpoint and
engine shapes match.

## Deployment

- [tao-deploy-grounding-dino](references/tao-deploy-grounding-dino.md)

tao-train-grounding-dino installieren

Laden Sie die Skill-Dateien herunter und entpacken Sie sie in Ihr Verzeichnis „.claude/skills/“.

ZIP herunterladen

Klonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.

git clone https://github.com/NVIDIA/skills/tree/main/skills/tao-train-grounding-dino # Copy SKILL.md to your .claude/skills/ directory

Kopieren Kopieren
Schnelle Einrichtung: Kopieren Sie den Skill-Ordner nach „.claude/skills/“. Claude erkennt den Skill automatisch und nutzt ihn.
Repository NVIDIA/skills

Ähnliche Skills

web-search
Zeit aktualisiert 29. Juni 2026
webapp-testing
Zeit aktualisiert 29. Juni 2026
lark-base
Zeit aktualisiert 5. Juli 2026
agentmail
Zeit aktualisiert 29. Juni 2026
OR