opção
LarLar Skill Ciência de dados e ML tao-train-grounding-dino

tao-train-grounding-dino

NVIDIA/skills NVIDIA/skills

Treina, avalia, exporta, quantiza e executa inferência para um modelo Grounding DINO que detecta objetos descritos por prompts de texto sem um vocabulário de classes fixo.

...Expandir tudo
0
Tempo atualizado 25 de Setembro de 2026

Aplicação do DINO

Grounding DINO para detecção de objetos em conjuntos abertos. Combina a detecção no estilo DINO com o codificador de texto BERT para detecção orientada por linguagem. Detecta objetos descritos por prompts de texto sem um vocabulário de classes fixo.

Defina `train.pretrained_model_path` para obter os pesos completos do Grounding DINO ou `model.pretrained_backbone_path` para apenas a estrutura principal.

Para as ações do TAO Deploy TensorRT (gen_trt_engine, TensorRT evaluate e TensorRT inference), leia primeiro o arquivo references/tao-deploy-grounding-dino.md. Os modelos de especificação de implantação estão na pasta references/ desta skill com o prefixo spec_template_deploy_*.yaml.

Esquemas de Dataclass

Os esquemas gerados pelo TAO Core estão agrupados em `schemas/.schema.json`, com o arquivo `schemas/manifest.json` listando as ações disponíveis. Cada esquema gerado também gera o arquivo `references/spec_template_.yaml` a partir do campo padrão de nível superior do esquema. A ativação do AutoML é declarada na camada do modelo em references/skill_info.yaml por meio de automl_enabled. O AutoML executável ainda requer que os arquivos schemas/train.schema.json e references/spec_template_train.yaml existam e sejam analisados. Use o esquema de treinamento incluído no pacote para automl_default_parameters, automl_disabled_parameters, padrões, limites mínimo/máximo, enums, pesos de opções, condições matemáticas, dependências e parâmetros comuns. Não espere encontrar ~/tao-core no momento da execução; os mantenedores regeneram esquemas/modelos antes de empacotar o banco de habilidades.

Política de ação de treinamento

Este modelo está habilitado para AutoML na camada de modelo. Antes de processar qualquer solicitação na fase de treinamento, leia o arquivo references/skill_info.yaml e resolva a substituição da execução a partir de um valor explícito de automl_policy ou da solicitação de fluxo de trabalho do usuário. Use automl_policy: on por padrão e exponha apenas on/off em novos prompts de inicialização. Trate frases como “desativar o AutoML”, “desativar o AutoML”, “sem HPO” ou “treinamento simples” como automl_policy: off apenas para esta execução. Quando automl_policy: on, automl_enabled: true e tanto o arquivo schemas/train.schema.json quanto o references/spec_template_train.yaml estiverem incluídos no pacote, encaminhe a ação de treinamento por meio de tao-skill-bank:tao-run-automl por padrão, utilizando o skill_dir deste modelo. Preserve as substituições do fluxo de trabalho/aplicativo para conjuntos de dados, especificações, diretórios de saída, configurações de GPU/plataforma, pontos de verificação pai e automl_policy. Use o treinamento direto do modelo somente quando automl_policy estiver definido como “off” ou quando o esquema/modelo de treinamento empacotado estiver ausente; no caso de esquema ausente, informe que o AutoML está habilitado, mas não pode ser executado para este modelo até que os esquemas sejam gerados.

Ações que não sejam de treinamento, como fluxos de avaliação, inferência, exportação e implantação, permanecem nesta habilidade do modelo. A substituição da automl_policy por execução não altera os metadados do modelo.

Requisitos de treinamento

  • Tipo de conjunto de dados: object_detection
  • Formatos: odvg, coco, raw
  • Métrica de monitoramento: val_mAP50

Requisitos do conjunto de dados por ação

Ação Chave da especificação Fonte Arquivos Lista?
avaliar conjunto_de_dados.test_data_sources eval_dataset image_dir: images.tar.gz, json_file: annotations.json Não
inferência conjunto_de_dados.fontes_de_dados_de_inferência.diretório_de_imagens conjunto_de_dados_de_inferência images.tar.gz Sim
inference conjunto_de_dados.infer_data_sources.legendas solicitações do fluxo de trabalho lista de prompts Sim
quantização conjunto de dados.fontes_de_dados_de_treinamento conjuntos de dados de treinamento image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Sim
quantizar conjuntos_de_dados_de_validação conjunto_de_dados_de_avaliação diretório_de_imagens: images.tar.gz, arquivo_json: annotations.json Não
quantize conjuntos_de_dados_de_calibração_quantizada conjunto de dados de calibração/avaliação image_dir: images.tar.gz, json_file: annotations.json Não
treinar conjunto de dados de treinamento.fontes de dados de treinamento conjuntos_de_dados_de_treinamento image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json Sim
treinamento conjunto_de_dados.fontes_de_dados_de_validação conjunto_de_dados_de_avaliação diretório_de_imagens: images.tar.gz, arquivo_json: annotations.json Não

O executor pode utilizar arquivos compactados como images.tar.gz, mas as especificações locais diretas da CLI do Docker TAO devem apontar image_dir para um diretório de imagens extraído. Os metadados da habilidade marcam essas fontes de imagem baseadas em arquivos compactados com runtime: extracted_folder para que um novo executor possa descompactar o arquivo antes de iniciar o TAO.

Substituições típicas de especificações

As substituições de fonte de dados são obrigatórias para todas as ações — o agente DEVE construir caminhos de fonte de dados a partir da tabela “Requisitos do Conjunto de Dados por Ação” acima e incluí-los em spec_overrides.

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

treinamento (fontes de dados obrigatórias):

{
    "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):

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

inference (fontes de dados obrigatórias):

{
    "inference.checkpoint": "<ponto de verificação selecionado do treinamento/AutoML>",
    "dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
    "dataset.infer_data_sources.captions": [
        "extintor de incêndio",
        "cone",
        "carrinho",
        "empilhadeira"
    ],
}

avaliação (fontes de dados obrigatórias):

{
    "evaluate.checkpoint": "<ponto de verificação de treinamento/AutoML selecionado>",
    "dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}

quantizar (fontes de dados obrigatórias):

{
    "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"},
}

Conjunto de dados de avaliação

Opcional. A validação utiliza anotações no formato COCO para o mAP, embora o treinamento possa usar o formato ODVG.

Parâmetros importantes

  • model.backbone: Padrão swin_tiny_224_1k. Também suporta resnet_50 e outras variantes do Swin. O Swin geralmente apresenta melhor desempenho em tarefas de grounding.
  • model.text_encoder_type: Modelo BERT para codificação de texto. Padrão: bert-base-uncased. O valor padrão de max_text_len é 256.
  • model.max_text_len: Mantenha esse valor alinhado com os mapas de posição de rótulo/token do conjunto de dados. Não reduza esse valor para testes preliminares, a menos que os mapas de rótulo correspondentes sejam regenerados com o mesmo comprimento; caso contrário, a validação pode falhar devido a uma incompatibilidade de forma da matriz entre as probabilidades dos tokens e os mapas de posição .
  • train.optim.lr: Taxa de aprendizado. Padrão: 2e-4. lr_backbone: 2e-5. Suporta precisão bf16, além de fp16/fp32.
  • dataset.max_labels: Número máximo de rótulos por imagem durante o treinamento. Padrão: 50. Aumente para conjuntos de dados com anotações densas.
  • model.num_queries: Consultas de objetos. Padrão: 900 (superior aos 300 do DINO) devido à natureza de vocabulário aberto.
  • model.num_queries / model.num_select: Mantenha num_queries alto o suficiente para o número de alvos ODVG correspondentes em um lote. Valores muito baixos de smoke, como 20, podem falhar durante a indexação de alvos húngaros em imagens densas; use pelo menos 100 para execuções mínimas do Grounding DINO com smoke, a menos que se saiba que o conjunto de dados possui menos objetos por imagem.
  • train.optim.lr_steps: Programação do LR em múltiplas etapas. Padrão [10].

Multi-GPU / Multi-Nó

Método de execução: Gerenciado pelo Lightning (único processo Python, o Lightning gera workers).

Chave de especificação Descrição Padrão
train.num_gpus Número de GPUs 1
train.gpu_ids Índices dos dispositivos GPU [0]
train.num_nodes Número de nós 1
train.distributed_strategy ddp ou fsdp ddp

Comportamento do DDP/FSDP idêntico ao do DINO. A configuração com múltiplos nós requer que as variáveis de ambiente WORLD_SIZE, NODE_RANK, MASTER_ADDR e MASTER_PORT sejam definidas pelo orquestrador.

Padrões de exportação / TRT

  • Entrada de exportação: 960x544 (maior do que outros modelos OD), opset 17. Mantenha as especificações de exportação do Grounding-DINO na resolução de exportação do modelo para testes preliminares; reduzir a exportação para tamanhos de imagem muito pequenos, como 128x128, pode acionar uma assertion de inferência de formato ONNX do PyTorch no cabeçalho de texto contrastivo durante torch.onnx.export.
  • A CLI pai do PyTorch grounding_dino suporta treinamento, avaliação, inferência, exportação e quantização. Execute a geração do mecanismo TensorRT, a inferência do TensorRT e a avaliação do TensorRT por meio do arquivo references/tao-deploy-grounding-dino.md.
  • Tipos de dados do TensorRT: apenas FP32 e FP16 — INT8 NÃO é suportado
  • Espaço de trabalho do TRT: 8192 MB (8 vezes maior do que outros modelos OD)
  • max_batch_size do TRT: 4

Hardware

Mínimo de 1 GPU, recomendado 4 GPUs. 24 GB ou mais (recomenda-se A100) de VRAM por GPU. O Grounding DINO é mais pesado que o DINO padrão devido ao codificador de texto (BERT). Recomenda-se 24 GB ou mais de memória de GPU. Reduza o `batch_size` para GPUs de 16 GB.

Padrões de erro

Memória CUDA insuficiente: reduza o `batch_size` (4 → 2 → 1). O codificador de texto BERT adiciona uma sobrecarga significativa de memória à estrutura de visão.

IDs inválidos de categorias de anotação: as anotações de validação devem ter IDs de categoria começando em 0 para o cálculo correto da perda. Use a conversão de formato de anotação, se necessário.

Erro ao carregar o codificador de texto: certifique-se de que o contêiner tenha acesso para baixar os pesos do bert-base-uncased ou forneça um caminho local.

A quantização com um checkpoint do PyTorch falha no TAO Toolkit 7.0.0-rc-226: O script de quantização Grounding-DINO do contêiner passa cap_lists=None ao carregar um checkpoint, o que causa falha no post_process.py. A quantização ONNX utiliza o artefato ONNX exportado e os dados de calibração do COCO, mas a imagem padrão do PyTorch rc-226 também não possui o módulo modelopt.onnx.quantization. Trate isso como um bloqueador de imagem/SDK, não como um problema do resolvedor de checkpoints.

As formas de mat1 e mat2 não podem ser multiplicadas no post_process.py: os mapas de comprimento de token de texto e de posição de rótulo estão inconsistentes, geralmente porque model.max_text_len foi sobrescrito para um valor inferior ao padrão de 256, enquanto os mapas de rótulo do conjunto de dados ainda utilizam mapas de posição com comprimento de 256. Restaure o `model.max_text_len ` ou regenerar os mapas de rótulos com o mesmo comprimento.

O índice está fora dos limites para a dimensão 0 em criterion.py: model.num_queries é muito pequeno para os alvos ODVG correspondentes no lote atual. Aumente model.num_queries e mantenha model.num_select compatível com ele.

Erro NotADirectoryError com images.tar.gz/.jpg: A CLI direta do TAO está tentando percorrer um caminho de arquivo compactado como se fosse um diretório. Extraia o arquivo compactado e defina o campo image_dir relevante para a pasta de imagens extraída; fontes de dados de habilidades baseadas em arquivos compactados usam runtime:extracted_folder por esse motivo.

Parâmetro de Especificação / Inferência do Modelo Pai

Os mapeamentos de inferência específicos do modelo devem constar neste arquivo MD, e não no config.json. Os executores gerados devem ler esta seção e aplicar os mapeamentos com os auxiliares do SDK antes de chamar create_job(). Isso reflete o antigo fluxo do arquivo infer_params.py dos microsserviços.

Mapeamentos de inferência do arquivo grounding_dino.config.json do TAO Core:

Ação Campo da especificação Função de inferência Significado
avaliar chave_de_criptografia chave chave de criptografia
avaliar avaliar.ponto de verificação modelo_pai arquivo de modelo inferido a partir da pasta de resultados do trabalho pai
avaliar avaliar.trt_engine parent_model arquivo de modelo inferido a partir da pasta de resultados do trabalho pai
avaliar results_dir output_dir diretório de resultados do trabalho atual
exportar chave_de_criptografia chave chave de criptografia
exportar exportar.ponto de verificação modelo_pai arquivo de modelo inferido a partir da pasta de resultados do trabalho pai
export export.onnx_file create_onnx_file caminho de saída do ONNX
export diretório_de_resultados diretório_de_saída diretório de resultados do trabalho atual
inferência chave_de_criptografia chave chave de criptografia
inferência ponto de verificação de inferência modelo_pai arquivo de modelo inferido a partir da pasta de resultados do trabalho pai
inference inference.trt_engine parent_model arquivo de modelo inferido a partir da pasta de resultados do trabalho pai
inference results_dir directório_de_saída diretório atual de resultados do trabalho
quantizar chave_de_criptografia chave chave de criptografia
quantize quantize.caminho_do_modelo modelo_pai arquivo do modelo inferido a partir da pasta de resultados do trabalho pai
quantize results_dir directório_de_saída diretório de resultados do trabalho atual
treinar chave_de_criptografia chave chave de criptografia
treinar caminho_da_estrutura_base_pré-treinada_do_modelo ptm_if_no_resume_model PTM quando não há checkpoint de retomada
treinar diretório_de_resultados output_dir diretório de resultados do trabalho atual
treinar train.pretrained_model_path ptm_if_no_resume_model PTM quando não há ponto de verificação para retomada
treinar train.caminho_do_ponto_de_verificação_de_retomada_do_treinamento resume_model arquivo do modelo inferido a partir da pasta de resultados do trabalho atual

Para parent_model ou parent_model_folder, passe o ID do trabalho filho upstream train/export/AutoML como parent_job_id. O SDK lista a pasta de resultados do trabalho pai, filtra os artefatos de ponto de verificação e retorna o arquivo ou a pasta do modelo selecionado. Não adicione esses mapeamentos de volta ao config.json e não altere os scripts do executor gerados para adivinhar caminhos de checkpoints.

Ao selecionar um checkpoint do Grounding-DINO fora do resolvedor do SDK, corresponda exatamente ao artefato de época/passo pretendido, por exemplo, model_epoch_000_step_00046.pth. O link simbólico gdino_model_latest.pth é válido somente quando “latest” for explicitamente solicitado. Transfira as configurações estruturais do modelo, como model.backbone, model.num_queries, model.num_select, model.num_feature_levels, model.max_text_len e a resolução de entrada de exportação para as especificações de avaliação, inferência, exportação e implantação, de modo que os formatos do ponto de verificação e do mecanismo correspondam.

Implantação

  • tao-deploy-grounding-dino
Ver no GitHub
---
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)

Instalar tao-train-grounding-dino

Baixe e descompacte os arquivos de habilidades no diretório .claude/skills/.

Baixar ZIP

Clone o repositório e copie os arquivos da habilidade para o seu projeto.

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

Copiar Copiar
Configuração rápida: Copie a pasta da habilidade para .claude/skills/ O Claude detectará e utilizará automaticamente a habilidade
Repositório NVIDIA/skills

Habilidades relacionadas

web-search
Tempo atualizado 29 de Junho de 2026
webapp-testing
Tempo atualizado 29 de Junho de 2026
lark-base
Tempo atualizado 5 de Julho de 2026
agentmail
Tempo atualizado 29 de Junho de 2026
OR