вариант
ДомДом Skill DevOps и CI/CD tao-run-on-local-docker

tao-run-on-local-docker

NVIDIA/skills NVIDIA/skills

Запускайте задания TAO SDK в виде контейнеров Docker на локальном или удаленном демоне Docker с поддержкой графических процессоров NVIDIA, включая предварительные проверки и обработку учетных данных.

...Расширить все
0
Обновлено время 25 сентября 2026 г.

Локальный Docker

Одноузловая платформа выполнения, на которой задания TAO запускаются в виде именованных контейнеров Docker на демоне Docker. Демон может быть локальным на хосте агента или удаленным через DOCKER_HOST=ssh://user@host / контекста Docker. Это удобно для разработки, отладки, небольших запусков и рабочих процессов, в которых локальный агент-программист отправляет задания на удалённый сервер с GPU.

Используйте локальный Docker, если данные находятся локально на хосте Docker или доступны через смонтированные тома/учетные данные облачного сервиса. Не используйте его для планирования задач в удаленном кластере, обучения на нескольких узлах или заданий, требующих использования очередей SLURM.

Используйте удалённый Docker, когда агент работает на рабочей станции или ноутбуке, но демон Docker и графические процессоры находятся на другом сервере с одним графическим процессором. В режиме удалённого Docker все пути к локальной файловой системе в спецификациях интерпретируются на удалённом хосте Docker, а не на машине агента.

Предварительная проверка

Рабочий процесс должен проверить среду выполнения GPU хоста перед запуском заданий Docker. Если проверка завершится сбоем, предложите пользователю утвердить установку, выполните выведенную команду установки и повторно запустите предварительную проверку.

# Host GPU runtime: NVIDIA driver 580, CUDA 13.0, NVIDIA Container Toolkit 1.19.0.
TAO_SKILL_BANK_ROOT="${TAO_SKILL_BANK_ROOT:-$PWD}"
SETUP_SCRIPT="${TAO_SKILL_BANK_ROOT}/skills/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh"

bash "$SETUP_SCRIPT" --backend docker --check-only || {
  echo "MISSING: TAO GPU host runtime is not ready."
  echo "After user approval, run:"
  echo "  bash \"$SETUP_SCRIPT\" --backend docker --install --yes"
  exit 1
}

# Mode 1 — direct docker (no Python). All you need is docker + the GPU runtime.
docker info >/dev/null 2>&1 || { echo "MISSING: docker daemon not reachable. Start Docker."; exit 1; }
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi >/dev/null 2>&1 || {
  echo "MISSING: NVIDIA Container Toolkit not installed/configured. See:"
  echo "  bash \"$SETUP_SCRIPT\" --backend docker --install --yes"
  exit 1
}

# Mode 2 — TAO SDK wrapper. Adds Job handles, S3 I/O wrapping, ActionWorkflow.
# Skip this block if Mode 1 is sufficient for the user's request.
# When Mode 2 is in scope, read `tao-skill-bank:tao-run-platform` for the DockerSDK
# kwarg contract, build_entrypoint, and monitoring patterns.
# nvidia-tao-sdk is on public PyPI; pin lives in versions.yaml (wheels.tao_sdk_docker).
PIN=$("${TAO_SKILL_BANK_PATH:?}/scripts/resolve_versions_key.py" wheels.tao_sdk_docker)
python -c "import tao_sdk" 2>/dev/null || python -m pip install "$PIN"
python -c "import docker" 2>/dev/null || python -m pip install "$PIN"
python -c "import tao_sdk, docker"

# DockerSDK attaches every job container to ${DOCKER_NETWORK:-tao_default}.
# Create the network if it is missing; the operation is local and idempotent.
DOCKER_NETWORK_NAME="${DOCKER_NETWORK:-tao_default}"
docker network inspect "$DOCKER_NETWORK_NAME" >/dev/null 2>&1 || \
  docker network create "$DOCKER_NETWORK_NAME" >/dev/null

Если проверка завершилась неудачно, агент запрашивает у пользователя разрешение на установку/исправление через Bash перед продолжением работы. Исключениями являются требования Python, устанавливаемые с помощью pip, и создание сети Docker, описанное выше: их следует установить/создать автоматически, а затем повторно запустить предварительную проверку.

Учетные данные

Помимо доступа к демону Docker учетные данные платформы не требуются.

Необязательная переменная среды:

  • DOCKER_HOST: Необязательный URL-адрес демона Docker. Если не задан, SDK использует стандартную среду клиента Docker для Python или разрешение сокетов по умолчанию. Требуется для remote-docker платформы.
  • DOCKER_NETWORK: сеть Docker для контейнеров заданий. По умолчанию tao_default.
  • DOCKER_USERNAME: имя пользователя в реестре. По умолчанию $oauthtoken для NGC.
  • NGC_KEY: Используется при извлечении частных образов из nvcr.io.
  • HOST_SSH_PATH: монтируется в контейнеры «мозга» AutoML, когда им требуются SSH-ключи для мониторинга удалённых дочерних заданий SLURM.
  • ACCESS_KEY, SECRET_KEY, S3_ENDPOINT_URL, S3_BUCKET_NAME: Необязательные настройки хранилища, совместимого с S3, для заданий, которые по-прежнему осуществляют чтение/запись в облачное хранилище из локального контейнера.

Предварительная проверка запуска

Перед генерацией скриптов или запуском контейнеров:

  1. Убедитесь, что демонический процесс Docker доступен, NVIDIA Container Toolkit зарегистрирован в качестве среды выполнения Docker, отображаются данные о графических процессорах и версии драйвера, а тестовый контейнер может обнаруживать графические процессоры перед запуском. Для удаленного Docker запрашивайте графические процессоры через docker run ... nvidia-smi удаленного демона; не используйте локальный nvidia-smi с машины-агента.
  2. Убедитесь, что все аннотации локальных/файловых наборов данных и пути к мультимедиа существуют на хосте Docker.
  3. Для s3:// наборов данных/результатов убедитесь, что ACCESS_KEY и SECRET_KEY заданы и точные пути доступны для чтения с помощью aws s3 ls. Если aws отсутствует, сообщите об отсутствующей зависимости и спросите, нужно ли её устанавливать; после установки запустите проверку заново.
  4. Проверьте учетные данные, специфичные для модели, такие как HF_TOKEN перед запуском.
  5. Проверьте текущую загрузку графических процессоров с помощью nvidia-smi и избегайте GPU, уже используемых другими запущенными заданиями, если пользователь указал это ограничение. Отображайте идентификаторы выбранных GPU в обзоре запуска.
  6. Для комбинаций моделей и контейнеров с известными ограничениями архитектуры сравнивайте вычислительную способность графического процессора хоста со стеком контейнера перед запуском. Если выбранный образ не может выполнять JIT-компиляцию или запускать ядра для архитектуры хоста, заблокируйте запуск на ранней стадии и запросите совместимый образ или платформу.

По возможности используйте встроенную вспомогательную программу для этих проверок:

${TAO_SKILL_BANK_PATH:-~/tao-skills-external}/scripts/check_tao_launch_preflight.py \
  --platform local-docker \
  --container-image "" \
  --path train_annotation=/abs/path/to/annotations.json \
  --path train_media=/abs/path/to/media

Для удалённого демона Docker используйте remote-docker platform и передавайте или экспортируйте DOCKER_HOST. Вспомогательная программа проверяет готовность удалённого GPU/среды выполнения и проверяет пути к наборам данных на удалённом хосте через привязки только для чтения:

${TAO_SKILL_BANK_PATH:-~/tao-skills-external}/scripts/check_tao_launch_preflight.py \
  --platform remote-docker \
  --docker-host ssh://user@gpu-host \
  --container-image "" \
  --gpu-smoke-image ubuntu:22.04 \
  --path train_annotation=/remote/data/train/annotations.json \
  --path train_media=/remote/data/train

Указанные --path указанные выше значения должны существовать на удалённом хосте Docker. Не передавайте пути, которые существуют только на локальном ноутбуке или хосте Codex.

Работа с несколькими графическими процессорами и на нескольких узлах

Работа с несколькими узлами не поддерживается в локальном Docker. Одно задание выполняется на хосте локального демона Docker без межхостовой координации.

Поддержка нескольких графических процессоров на локальном хосте обеспечивается с помощью флага --gpus (--gpus all или --gpus '"device=0,1,2,3"'). DockerSDK.create_job(gpu_count=N) проходит через --gpus. Распределённая инициализация на одном хосте использует localhost; torchrun --nproc-per-node=N или DDP в PyTorch работают как обычно.

Сведения о бэкенде

Используйте значение бэкенда SDK local-docker. Локальная схема бэкэнда не содержит дополнительных сведений о бэкэнде, поэтому большая часть маршрутизации контролируется параметрами среды и задания :

{
  "backend_type": "local-docker",
  "num_gpu": 1
}

В соответствии с архитектурой SDK Brev значения платформы/управляющей плоскости сохраняются в состоянии SDK и метках Docker. SDK не вставляет BACKEND, HOST_PLATFORM, MONGOSECRET, DOCKER_HOST, или DOCKER_NETWORK в контейнер обучения.

Выполнение контейнера

Локальный обработчик Docker в TAO SDK запускает контейнеры через Python-клиент Docker :

  • В имени задания бэкэнда используется tao-job- форма, используемая обработчиками SDK.
  • Команда обычно имеет вид ["/bin/bash", "-c", ""].
  • Контейнеры запускаются в отключенном режиме. По умолчанию SDK сохраняет контейнеры, поэтому статус и журналы остаются доступными для просмотра, если DOCKER_AUTO_REMOVE=true.
  • /dev/shm не смонтирована в виде tmpfs.
  • Настроенная сеть Docker применяется демоном Docker для контейнера задания ; она не передаётся в качестве переменной среды процесса.
  • Существующие контейнеры с тем же идентификатором задания останавливаются и удаляются до того, как запустится новый контейнер.

Для доступа к GPU обработчик автоматически определяет тип хоста:

  • Хосты Tegra или Jetson используют runtime="nvidia" плюс NVIDIA_VISIBLE_DEVICES , а NVIDIA_DRIVER_CAPABILITIES=all.
  • Стандартные хосты x86 используют Docker device_requests с поддержкой GPU.

Если num_gpus значение равно 0, то графические процессоры не назначаются. Если num_gpus значение равно -1, запрашиваются все видимые графические процессоры. На общих машинах для разработки следует отдавать предпочтение явному указанию количества графических процессоров. При наличии явных идентификаторов устройств следует отдавать им предпочтение перед выбором только по количеству на общих машинах, чтобы запуск не захватывал графические процессоры, занятые другими задачами.

Хранение

Docker Local поддерживает как локальные, так и file:// пути, поскольку контейнер работает на том же хосте Docker. Убедитесь, что каждый путь в спецификации либо:

  • смонтирован в контейнер обработчиком или окружающей службой,
  • уже доступен изнутри контейнера, либо
  • является облачным URI с соответствующими учетными данными.

Для удалённых/общих файловых систем отдавайте предпочтение платформе, которой принадлежит данная файловая система. Например, используйте SLURM в сочетании с lustre:///... для путей Lustre в кластере.

Мониторинг

  • Обработчик SDK напрямую сопоставляет состояния контейнеров Docker: создан -> В ожидании, запущен/перезапускается -> Работает, приостановлен -> Приостановлен, код завершения 0 -> Завершено, код завершения, отличный от нуля -> Ошибка.
  • Журналы поступают напрямую из указанного контейнера через Python-клиент Docker (docker logs tao-job-).

если контейнер завершил работу, вышел из строя, удаляется или не может быть найден, при синхронизации состояний бэкенд-процесс рассматривается как завершённый.

Отмена

Отмена останавливает указанный контейнер. Управление владением GPU осуществляется Docker / средой выполнения NVIDIA, а не локальным менеджером GPU TAO Core.

Дополнительно: через TAO SDK

Если вам нужны дескрипторы заданий, обертка ввода-вывода S3 через script_runnerили сохранение данных между сессиями:

from tao_sdk.platforms.docker import DockerSDK

sdk = DockerSDK()  # reads DOCKER_HOST, NGC_KEY, S3 creds from env
job = sdk.create_job(
    image='nvcr.io/nvidia/tao/tao-toolkit:6.26.3-pyt',
    command='dino train -e /tmp/spec.yaml',
    gpu_count=1,
    inputs={'/data/train.json': 's3://bucket/coco/train.json'},
    outputs=['/results/'],
)

status = sdk.get_job_status(job.id)
logs = sdk.get_job_logs(job.id, tail=200)

Это обертывает тот же docker run вызов под Job дескриптор и направляет точку входа через script_runner , так что inputs/outputs загружались из / загружались в S3 автоматически. Если вам это не нужно, просто используйте docker run непосредственно — установка SDK не требуется.

Возможные ошибки

Клиент Docker не инициализирован: убедитесь, что установлен пакет Docker для Python, установите DOCKER_HOST , если вы не используете локальный сокет по умолчанию, и убедитесь, что процесс может взаимодействовать с демоном.

Ошибка при назначении графических процессоров: запрашиваемые графические процессоры недоступны, NVIDIA Container Toolkit не настроен или демон Docker не может создавать запросы на устройства графических процессоров. Используйте меньшее количество графических процессоров, дождитесь завершения другого задания или проверьте, docker run --gpus ... работает на хосте.

Ошибка авторизации при загрузке образа: Укажите действительный NGC_KEY для частных nvcr.io образов или запустите docker login nvcr.io -u '$oauthtoken' на хосте Docker.

Контейнер неожиданно завершил работу: проверьте docker logs tao-job-, настроенные параметры DOCKER_NETWORKи команду, сгенерированную средством выполнения действий SDK.

Отсутствует путь внутри контейнера: локальный путь на хосте не обязательно монтируется в контейнер задания. Используйте соглашение об именовании путей, поддерживаемое средством выполнения действий, или настройте явный том через окружающую службу.

Посмотреть на GitHub
---
name: tao-run-on-local-docker
description: Run TAO SDK jobs as Docker containers on a local or remote Docker daemon with NVIDIA GPU support, including preflight checks and credential handling.
license: Apache-2.0
---

# Local Docker

Single-node execution platform that runs TAO jobs as named Docker containers on
a Docker daemon. The daemon can be local to the agent host or remote through
`DOCKER_HOST=ssh://user@host` / a Docker context. It is useful for development,
debugging, small runs, and workflows where a local coding agent submits jobs to
a remote GPU box.

Use local Docker when the data is local to the Docker host or accessible through
mounted volumes/cloud credentials. Do not use it for remote cluster scheduling,
multi-node training, or jobs that need SLURM queueing.

Use remote Docker when the agent is running on a workstation or laptop but the
Docker daemon and GPUs are on another single GPU server. In remote Docker mode,
all local filesystem paths in specs are interpreted on the remote Docker host,
not on the agent machine.

## Preflight

The workflow must verify the host GPU runtime before starting Docker jobs. If
the check fails, prompt the user to approve the install, run the printed install
command, and rerun the preflight.

```bash
# Host GPU runtime: NVIDIA driver 580, CUDA 13.0, NVIDIA Container Toolkit 1.19.0.
TAO_SKILL_BANK_ROOT="${TAO_SKILL_BANK_ROOT:-$PWD}"
SETUP_SCRIPT="${TAO_SKILL_BANK_ROOT}/skills/platform/tao-setup-nvidia-gpu-host/scripts/setup-nvidia-gpu-host.sh"

bash "$SETUP_SCRIPT" --backend docker --check-only || {
  echo "MISSING: TAO GPU host runtime is not ready."
  echo "After user approval, run:"
  echo "  bash \"$SETUP_SCRIPT\" --backend docker --install --yes"
  exit 1
}

# Mode 1 — direct docker (no Python). All you need is docker + the GPU runtime.
docker info >/dev/null 2>&1 || { echo "MISSING: docker daemon not reachable. Start Docker."; exit 1; }
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi >/dev/null 2>&1 || {
  echo "MISSING: NVIDIA Container Toolkit not installed/configured. See:"
  echo "  bash \"$SETUP_SCRIPT\" --backend docker --install --yes"
  exit 1
}

# Mode 2 — TAO SDK wrapper. Adds Job handles, S3 I/O wrapping, ActionWorkflow.
# Skip this block if Mode 1 is sufficient for the user's request.
# When Mode 2 is in scope, read `tao-skill-bank:tao-run-platform` for the DockerSDK
# kwarg contract, build_entrypoint, and monitoring patterns.
# nvidia-tao-sdk is on public PyPI; pin lives in versions.yaml (wheels.tao_sdk_docker).
PIN=$("${TAO_SKILL_BANK_PATH:?}/scripts/resolve_versions_key.py" wheels.tao_sdk_docker)
python -c "import tao_sdk" 2>/dev/null || python -m pip install "$PIN"
python -c "import docker" 2>/dev/null || python -m pip install "$PIN"
python -c "import tao_sdk, docker"

# DockerSDK attaches every job container to ${DOCKER_NETWORK:-tao_default}.
# Create the network if it is missing; the operation is local and idempotent.
DOCKER_NETWORK_NAME="${DOCKER_NETWORK:-tao_default}"
docker network inspect "$DOCKER_NETWORK_NAME" >/dev/null 2>&1 || \
  docker network create "$DOCKER_NETWORK_NAME" >/dev/null
```

If a check fails, the agent prompts the user to authorize the install/fix via Bash before proceeding. Pip-installable Python requirements and Docker network creation above are exceptions: install/create them automatically, then rerun preflight.

## Credentials

There are no platform credentials required beyond access to the Docker daemon.

Optional environment:

- **DOCKER_HOST**: Optional Docker daemon URL. If unset, the SDK uses the
  Docker Python client's normal environment/default socket resolution. Required
  for the `remote-docker` platform option.
- **DOCKER_NETWORK**: Docker network for job containers. Default is
  `tao_default`.
- **DOCKER_USERNAME**: Registry username. Default is `$oauthtoken` for NGC.
- **NGC_KEY**: Used when pulling private images from `nvcr.io`.
- **HOST_SSH_PATH**: Mounted into AutoML brain containers when they need SSH keys
  to monitor remote SLURM child jobs.
- **ACCESS_KEY**, **SECRET_KEY**, **S3_ENDPOINT_URL**, **S3_BUCKET_NAME**:
  Optional S3-compatible storage settings for jobs that still read/write cloud
  storage from a local container.

## Launch Preflight

Before generating scripts or starting containers:

1. Verify the Docker daemon is reachable, NVIDIA Container Toolkit is registered
   as a Docker runtime, GPUs and driver version are reported, and a smoke
   container can see GPUs before launch. For remote Docker, query GPUs through
   `docker run ... nvidia-smi` against the remote daemon; do not use local
   `nvidia-smi` from the agent machine.
2. Verify every local/file dataset annotation and media path exists on the
   Docker host.
3. For `s3://` datasets/results, verify `ACCESS_KEY` and `SECRET_KEY` are set
   and the exact paths are readable with `aws s3 ls`. If `aws` is missing,
   report the missing dependency and ask before installing it; rerun preflight
   after installation.
4. Verify model-specific credentials such as `HF_TOKEN` before launch.
5. Check current GPU occupancy with `nvidia-smi` and avoid GPUs already used by
   other running jobs when the user requested that constraint. Show the selected
   GPU ids in the launch review.
6. For model/container combinations with known architecture limits, compare
   host GPU compute capability with the container stack before launch. If the
   selected image cannot JIT or run kernels for the host architecture, block
   early and ask for a compatible image or platform.

Use the packaged helper for these checks when possible:

```bash
${TAO_SKILL_BANK_PATH:-~/tao-skills-external}/scripts/check_tao_launch_preflight.py \
  --platform local-docker \
  --container-image "<selected-image>" \
  --path train_annotation=/abs/path/to/annotations.json \
  --path train_media=/abs/path/to/media
```

For a remote Docker daemon, use the `remote-docker` platform and pass or export
`DOCKER_HOST`. The helper verifies remote GPU/runtime readiness and checks
remote-host dataset paths through read-only bind mounts:

```bash
${TAO_SKILL_BANK_PATH:-~/tao-skills-external}/scripts/check_tao_launch_preflight.py \
  --platform remote-docker \
  --docker-host ssh://user@gpu-host \
  --container-image "<selected-image>" \
  --gpu-smoke-image ubuntu:22.04 \
  --path train_annotation=/remote/data/train/annotations.json \
  --path train_media=/remote/data/train
```

The `--path` values above must exist on the remote Docker host. Do not pass
paths that exist only on the local laptop or Codex host.

## Multi-GPU and multi-node

**Multi-node is not supported on local Docker.** One job runs on the local Docker daemon's host with no cross-host coordination.

Multi-GPU **on the local host** is supported via the NVIDIA Container Toolkit's `--gpus` flag (`--gpus all` or `--gpus '"device=0,1,2,3"'`). `DockerSDK.create_job(gpu_count=N)` plumbs through to `--gpus`. Single-host distributed init uses `localhost`; `torchrun --nproc-per-node=N` or PyTorch DDP work as usual.

## Backend Details

Use the SDK backend value `local-docker`. The local backend schema has no extra
backend details, so most routing is controlled by environment and job
parameters:

```json
{
  "backend_type": "local-docker",
  "num_gpu": 1
}
```

Following the Brev SDK design, platform/control-plane values stay in SDK
state and Docker labels. The SDK does not inject `BACKEND`, `HOST_PLATFORM`,
`MONGOSECRET`, `DOCKER_HOST`, or `DOCKER_NETWORK` into the training container.

## Container Execution

The TAO SDK local Docker handler starts containers through the Docker Python
client:

- Backend job name uses the `tao-job-<job_id>` form used by SDK handlers.
- Command is usually `["/bin/bash", "-c", "<job command>"]`.
- Containers run detached. The SDK keeps containers by default so status and
  logs remain inspectable, unless `DOCKER_AUTO_REMOVE=true`.
- `/dev/shm` is mounted as tmpfs.
- The configured Docker network is applied by the Docker daemon for the job
  container; it is not passed through as a process environment variable.
- Existing containers with the same job id are stopped and removed before a
  replacement starts.

For GPU access, the handler auto-detects the host type:

- Tegra or Jetson hosts use `runtime="nvidia"` plus
  `NVIDIA_VISIBLE_DEVICES` and `NVIDIA_DRIVER_CAPABILITIES=all`.
- Standard x86 hosts use Docker `device_requests` with GPU capabilities.

If `num_gpus` is `0`, no GPUs are assigned. If `num_gpus` is `-1`, all visible
GPUs are requested. Prefer explicit GPU counts for shared development machines.
When explicit device ids are available, prefer them over count-only selection
on shared machines so the launch does not steal GPUs occupied by other tasks.

## Storage

Local Docker accepts local and `file://` paths because the container runs on the
same Docker host. Make sure every path in the spec is either:

- mounted into the container by the handler or surrounding service,
- reachable from inside the container already, or
- a cloud URI with matching credentials.

For remote/shared filesystems, prefer the platform that owns that filesystem.
For example, use SLURM plus `lustre:///...` for Lustre paths on a cluster.

## Monitoring

- The SDK handler maps Docker container state directly: created -> Pending,
  running/restarting -> Running, paused -> Paused, exit code 0 -> Complete,
  nonzero exit -> Error.
- Logs come directly from the named container through the Docker Python client
  (`docker logs tao-job-<job_id>`).

If the container has exited, died, is being removed, or cannot be found, status
reconciliation treats the backend process as terminated.

## Cancellation

Cancellation stops the named container. GPU ownership is managed by Docker /
the NVIDIA runtime, not by TAO Core's local GPU manager.

## Optional: via the TAO SDK

If you want Job handles, S3 I/O wrapping via the SDK's `script_runner`, or
durability across sessions:

```python
from tao_sdk.platforms.docker import DockerSDK

sdk = DockerSDK()  # reads DOCKER_HOST, NGC_KEY, S3 creds from env
job = sdk.create_job(
    image='nvcr.io/nvidia/tao/tao-toolkit:6.26.3-pyt',
    command='dino train -e /tmp/spec.yaml',
    gpu_count=1,
    inputs={'/data/train.json': 's3://bucket/coco/train.json'},
    outputs=['/results/'],
)

status = sdk.get_job_status(job.id)
logs = sdk.get_job_logs(job.id, tail=200)
```

This wraps the same `docker run` invocation under a `Job` handle and routes
the entrypoint through `script_runner` so `inputs`/`outputs` get downloaded
from / uploaded to S3 automatically. If you don't need those, just use
`docker run` directly — no SDK install required.

## Failure Modes

**Docker client not initialized**: Verify the Docker Python package is installed,
set `DOCKER_HOST` if you are not using the default local socket, and confirm the
process can talk to the daemon.

**GPU assignment failed**: Requested GPUs are unavailable, the NVIDIA Container
Toolkit is not configured, or the Docker daemon cannot create GPU device
requests. Use fewer GPUs, wait for another job to finish, or verify
`docker run --gpus ...` works on the host.

**Image pull auth failed**: Set a valid `NGC_KEY` for private `nvcr.io` images
or run `docker login nvcr.io -u '$oauthtoken'` on the Docker host.

**Container exited unexpectedly**: Check `docker logs tao-job-<job_id>`, the
configured `DOCKER_NETWORK`, and the command produced by the SDK action runner.

**Path missing inside container**: A local path on the host is not necessarily
mounted into the job container. Use a path convention supported by the action
runner or configure an explicit volume through the surrounding service.

Установить tao-run-on-local-docker

Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.

Скачать ZIP

Клонируйте репозиторий и скопируйте файлы навыка в свой проект.

git clone https://github.com/NVIDIA/skills/tree/main/skills/tao-run-on-local-docker # Copy SKILL.md to your .claude/skills/ directory

Копировать Копировать
Быстрая настройка: Скопируйте папку со скиллом в каталог .claude/skills/ Claude автоматически обнаружит и запустит этот скилл
Репозиторий NVIDIA/skills

Похожие навыки

Verification &amp; Quality Assurance
Обновлено время 29 июня 2026 г.
klingai-upgrade-migration
Обновлено время 3 июля 2026 г.
base44-cli
Обновлено время 29 июня 2026 г.
Railway CLI Management
Обновлено время 2 июля 2026 г.
OR