tao-train-grounding-dino
NVIDIA/skills
Обучает, оценивает, экспортирует, квантует и выполняет инференцию для модели Grounding DINO, которая распознает объекты, описанные текстовыми подсказками, без фиксированного словаря классов.
...Расширить всеОбучение модели DINO
Grounding DINO для обнаружения объектов из открытого набора. Сочетает обнаружение в стиле DINO с текстовым кодировщиком BERT для обнаружения на основе языка. Обнаруживает объекты, описанные текстовыми подсказками, без фиксированного словаря классов.
Укажите train.pretrained_model_path для полных весов Grounding DINO или model.pretrained_backbone_path для только базовой архитектуры.
Для действий TAO Deploy TensorRT (gen_trt_engine, TensorRT evaluate и TensorRT inference) сначала ознакомьтесь с файлом references/tao-deploy-grounding-dino.md. Шаблоны спецификаций развертывания находятся в папке references/ данного навыка с префиксом spec_template_deploy_*.yaml.
Схемы Dataclass
Сгенерированные схемы TAO Core упакованы в папке schemas/, а в файле schemas/manifest.json перечислены доступные действия. Каждая сгенерированная схема также генерирует файл references/spec_template_ из поля по умолчанию верхнего уровня схемы. Включение AutoML объявляется на уровне модели в файле references/skill_info.yaml с помощью параметра automl_enabled. Для запуска AutoML по-прежнему требуется наличие и анализ файлов schemas/train.schema.json и references/spec_template_train.yaml. Используйте схему train из пакета для automl_default_parameters, automl_disabled_parameters, значений по умолчанию, минимальных/максимальных границ, перечислений, весов опций, математических условий, зависимостей и популярных параметров. Не рассчитывайте на наличие ~/tao-core во время выполнения; разработчики повторно генерируют схемы/шаблоны перед упаковкой банка навыков.
Политика действий обучения
Эта модель поддерживает AutoML на уровне модели. Перед обработкой любого запроса на этапе обучения прочтите файл references/skill_info.yaml и определите переопределение запуска либо по явному значению automl_policy, либо по запросу рабочего процесса пользователя. По умолчанию используйте automl_policy: on и предоставляйте варианты on / off только в новых подсказках запуска. Фразы типа «выключить AutoML», «отключить AutoML», «без HPO» или «обычное обучение» следует рассматривать как automl_policy: off только для данного запуска. Когда automl_policy: on, automl_enabled: true и в пакет включены как schemas/train.schema.json, так и references/spec_template_train.yaml, по умолчанию направляйте действие train через tao-skill-bank:tao-run-automl с использованием skill_dir данной модели. Сохранять переопределения рабочего процесса/приложения для наборов данных, спецификаций, каталогов вывода, настроек GPU/платформы, родительских контрольных точек и параметра automl_policy. Используйте прямое обучение модели только в том случае, если для параметра `automl_policy` установлено значение `off` или отсутствует упакованная схема/шаблон обучения; в случае отсутствия схемы сообщите, что AutoML включен, но не может быть запущен для данной модели до тех пор, пока не будут сгенерированы схемы.
Действия, не связанные с обучением, такие как оценка, инференция, экспорт и развертывание, остаются в этом навыке модели. Переопределение automl_policy для отдельного запуска не изменяет метаданные модели.
Требования к обучению
- Тип набора данных: object_detection
- Форматы: odvg, coco, raw
- Метрика мониторинга: val_mAP50
Требования к набору данных для каждого действия
| Действие | Ключ спецификации | Источник | Файлы | Список? |
|---|---|---|---|---|
| оценить | набор данных.test_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Нет |
| вывода | dataset.infer_data_sources.image_dir | набор данных для инференции | images.tar.gz | Да |
| вывод | dataset.infer_data_sources.captions | подсказки рабочего процесса | список подсказок | Да |
| квантование | dataset.train_data_sources | train_datasets | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Да |
| квантование | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Нет |
| квантование | dataset.quant_calibration_data_sources | набор данных калибровки/оценки | image_dir: images.tar.gz, json_file: annotations.json | Нет |
| обучение | dataset.train_data_sources | наборы_данных_для_обучения | image_dir: images.tar.gz, json_file: annotations_odvg.jsonl, label_map: annotations_odvg_labelmap.json | Да |
| обучение | dataset.val_data_sources | eval_dataset | image_dir: images.tar.gz, json_file: annotations.json | Нет |
Раннер может использовать архивы образов, такие как images.tar.gz, но в прямых локальных
спецификациях Docker TAO CLI параметр image_dir должен указывать на каталог с извлеченным образом.
Метаданные навыка помечают эти источники образов, основанные на архивах, с помощью
runtime: extracted_folder, чтобы новый раннер мог распаковать архив перед
запуском TAO.
Типичные переопределения спецификаций
Переопределения источников данных обязательны для каждого действия — агент ДОЛЖЕН сформировать пути к источникам данных на основе приведенной выше таблицы «Требования к наборам данных для каждого действия» и включить их в spec_overrides.
S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"
train (обязательные источники данных):
{
"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 (используйте references/tao-deploy-grounding-dino.md):
{
"gen_trt_engine.onnx_file": "",
"gen_trt_engine.trt_engine": "",
"gen_trt_engine.tensorrt.data_type": "FP16",
}
инференция (обязательные источники данных):
{
"inference.checkpoint": "<выбранная контрольная точка обучения/AutoML>",
"dataset.infer_data_sources.image_dir": [f"{S3_EVAL}/images.tar.gz"],
"dataset.infer_data_sources.captions": [
"огнетушитель",
"конус",
"тележка",
"вилочный погрузчик"
],
}
оценка (обязательные источники данных):
{
"evaluate.checkpoint": "<выбранная контрольная точка обучения/AutoML>",
"dataset.test_data_sources": {"image_dir": f"{S3_EVAL}/images.tar.gz", "json_file": f"{S3_EVAL}/annotations.json"},
}
квантование (обязательные источники данных):
{
"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"},
}
Набор данных для оценки
Необязательно. При валидации для mAP используются аннотации в формате COCO, хотя при обучении можно использовать формат ODVG.
Важные параметры
- model.backbone: По умолчанию swin_tiny_224_1k. Также поддерживаются resnet_50 и другие варианты Swin. Swin, как правило, показывает лучшие результаты при задачах привязки к изображению.
- model.text_encoder_type: модель BERT для кодирования текста. По умолчанию bert-base-uncased. Значение max_text_len по умолчанию равно 256.
- model.max_text_len: Следует согласовывать этот параметр с картами позиций меток/токенов набора данных. Не сокращайте его для экспресс-тестирования, если только соответствующие карты меток не будут перегенерированы с той же длиной; в противном случае валидация может завершиться сбоем из-за несоответствия форм матриц между вероятностями токенов и картами позиций.
- train.optim.lr: Шаг обучения. По умолчанию 2e-4. lr_backbone — 2e-5. Поддерживает точность bf16 в дополнение к fp16/fp32.
- dataset.max_labels: Максимальное количество меток на изображение во время обучения. По умолчанию — 50. Увеличьте это значение для наборов данных с плотной аннотацией.
- model.num_queries: Количество запросов на объекты. По умолчанию 900 (больше, чем 300 у DINO) из-за открытого словаря.
- model.num_queries / model.num_select: Установите достаточно высокое
значение num_queriesс учётом количества совпадающих целей ODVG в партии. Очень малые значения параметра smoke, например 20, могут привести к сбоям при индексировании целей по методу Венгерского на изображениях с высокой плотностью объектов; используйте не менее 100 для минимальных прогонов Grounding DINO со smoke, если только не известно, что в наборе данных содержится меньше объектов на изображение. - train.optim.lr_steps: график MultiStep LR. По умолчанию [10].
Multi-GPU / Multi-Node
Метод запуска: Управление Lightning (один процесс Python, Lightning запускает рабочие процессы).
| Ключ спецификации | Описание | По умолчанию |
|---|---|---|
train.num_gpus |
Количество графических процессоров | 1 |
train.gpu_ids |
Индексы графических процессоров | [0] |
train.num_nodes |
Количество узлов | 1 |
train.distributed_strategy |
ddp или fsdp |
ddp |
Поведение DDP/FSDP такое же, как у DINO. Для работы в многоузловом режиме требуются переменные окружения WORLD_SIZE, NODE_RANK, MASTER_ADDR, MASTER_PORT, задаваемые оркестратором.
Настройки экспорта / TRT по умолчанию
- Входные данные экспорта: 960x544 (больше, чем у других моделей OD), opset 17. Сохранить
спецификации экспорта Grounding-DINO в разрешении шаблона экспорта для тестов на работоспособность;
уменьшение размера экспортируемого изображения до очень маленьких значений, таких как 128x128, может вызвать
ассертион PyTorch ONNX по форме инференции в контрастирующем текстовом блоке во время выполнения
torch.onnx.export. - Родительский интерфейс командной строки PyTorch
grounding_dinoподдерживаетобучение,оценку,вывод,экспортиквантование. Запустите генерацию движка TensorRT, вывод TensorRT и оценку TensorRT черезфайл references/tao-deploy-grounding-dino.md. - Типы данных TensorRT: только FP32, FP16 — INT8 НЕ поддерживается
- Рабочая область TRT: 8192 МБ (в 8 раз больше, чем у других моделей OD)
- Максимальный размер партии TRT: 4
Аппаратное обеспечение
Минимум 1 графический процессор (GPU), рекомендуется 4 графических процессора (GPU). 24 ГБ и более (рекомендуется A100) видеопамяти на каждый графический процессор. Grounding DINO более ресурсоемкий, чем стандартный DINO, из-за текстового кодировщика (BERT). Рекомендуется 24 ГБ и более видеопамяти на графический процессор. Уменьшите batch_size для графических процессоров с 16 ГБ памяти.
Типы ошибок
Нехватка памяти CUDA: уменьшите batch_size (4 → 2 → 1). Текстовый кодировщик BERT значительно увеличивает нагрузку на память в дополнение к базовой сети для обработки изображений.
Неверные ID категорий аннотаций: для правильного вычисления потерь ID категорий валидационных аннотаций должны начинаться с 0. При необходимости используйте преобразование формата аннотаций.
Ошибка загрузки текстового кодировщика: убедитесь, что контейнер имеет доступ к загрузке весов bert-base-uncased, либо укажите локальный путь.
Квантование с использованием контрольной точки PyTorch завершается сбоем в TAO Toolkit 7.0.0-rc-226:
Скрипт квантования Grounding-DINO контейнера передаёт cap_lists=None при
загрузке контрольной точки, что приводит к сбою в post_process.py. Квантование ONNX использует
экспортированный артефакт ONNX и данные калибровки COCO, но в образе PyTorch по умолчанию для rc-226
также отсутствует модуль modelopt.onnx.quantization. Рассматривайте это как
блокирующую проблему образа/SDK, а не как проблему средства решения проблем с контрольными точками.
Формы mat1 и mat2 не могут быть умножены в post_process.py: карты
длины текстовых токенов и положения меток несовместимы, как правило, из-за того, что
model.max_text_len был переопределён ниже значения по умолчанию 256, в то время как карты меток
набора данных по-прежнему используют карты положений длиной 256. Восстановите значение model.max_text_len или
перегенерируйте карты меток с той же длиной.
Индекс выходит за пределы диапазона для измерения 0 в criterion.py: значение model.num_queries
слишком мало для сопоставленных целей ODVG в текущей партии. Увеличьте
значение model.num_queries и обеспечьте совместимость model.num_select с ним.
NotADirectoryError с images.tar.tar.gz/: Прямой интерфейс TAO CLI
пытается пройти по пути к архиву как по каталогу. Распакуйте архив и установите
соответствующее поле image_dir в папку с извлечёнными изображениями; источники данных навыков, основанные на архивах,
используют для этого параметр runtime:extracted_folder.
Параметры спецификации / Вывод по родительской модели
Сопоставления инференса, специфичные для модели, должны находиться в этом файле MD, а не в config.json. Сгенерированные запускающие программы должны прочитать этот раздел и применить сопоставления с помощью вспомогательных функций SDK перед вызовом create_job(). Это отражает старый поток микросервисов infer_params.py.
Сопоставления для инференса из файла grounding_dino.config.json TAO Core:
| Действие | Поле спецификации | Функция вывода | Значение |
|---|---|---|---|
| evaluate | ключ_шифрования |
ключ |
ключ шифрования |
| оценить | оценить.контрольная точка |
родительская_модель |
файл модели, выведенный из папки результатов родительского задания |
| evaluate | evaluate.trt_engine |
parent_model |
файл модели, выведенный из папки результатов родительского задания |
| evaluate | results_dir |
output_dir |
текущий каталог результатов задания |
| экспорт | encryption_key |
ключ |
ключ шифрования |
| экспорт | экспорт.контрольная точка |
родительская_модель |
файл модели, выведенный из папки результатов родительского задания |
| экспорт | export.onnx_file |
create_onnx_file |
путь к выходной ONNX-файлу |
| экспорт | каталог_результатов |
output_dir |
текущий каталог результатов задания |
| вывод | ключ_шифрования |
ключ |
ключ шифрования |
| вывод | точка_проверки_вывода |
родительская_модель |
файл модели, выведенный из папки результатов родительского задания |
| inference | inference.trt_engine |
parent_model |
файл модели, выведенный из папки результатов родительского задания |
| вывод | results_dir |
output_dir |
текущий каталог результатов задания |
| квантование | ключ_шифрования |
ключ |
ключ шифрования |
| квантование | quantize.model_path |
parent_model |
файл модели, выведенный из папки результатов родительского задания |
| квантование | results_dir |
output_dir |
текущий каталог результатов задания |
| обучение | ключ_шифрования |
ключ |
ключ шифрования |
| обучение | путь к предварительно обученной базовой модели |
ptm_if_no_resume_model |
PTM при отсутствии контрольной точки возобновления |
| train | каталог_результатов |
output_dir |
текущий каталог результатов задания |
| train | train.pretrained_model_path |
ptm_if_no_resume_model |
PTM, если контрольная точка возобновления отсутствует |
| train | train.resume_training_checkpoint_path |
resume_model |
файл модели, полученный из папки результатов текущего задания |
Для параметров parent_model или parent_model_folder передайте в качестве parent_job_id идентификатор дочернего задания train/export/AutoML вышестоящего уровня. SDK перечисляет папку с результатами родительского задания, фильтрует артефакты контрольных точек и возвращает выбранный файл модели или папку. Не добавляйте эти сопоставления обратно в config.json и не вносите изменения в сгенерированные скрипты запуска, чтобы угадать пути к контрольным точкам.
При выборе контрольной точки Grounding-DINO вне резолвера SDK точно укажите
желаемый артефакт эпохи/шага, например
model_epoch_000_step_00046.pth. Символьная ссылка gdino_model_latest.pth действительна
только в том случае, если явно запрошен параметр latest. Перенесите настройки структурной модели, такие как
model.backbone, model.num_queries, model.num_select,
model.num_feature_levels, model.max_text_len и разрешение входных данных экспорта
в спецификации evaluate, inference, export и deploy, чтобы формы контрольных точек и
движка совпадали.
Развертывание
- tao-deploy-grounding-dino
---
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)
Все файлы
24 файловУстановить tao-train-grounding-dino
Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/NVIDIA/skills/tree/main/skills/tao-train-grounding-dino # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
