オプション
家家 Skill DevOps と CI/CD tao-run-on-local-docker

tao-run-on-local-docker

NVIDIA/skills NVIDIA/skills

NVIDIA GPU に対応したローカルまたはリモートの Docker デーモン上で、TAO SDK ジョブを Docker コンテナとして実行します。これには、事前チェックや認証情報の処理も含まれます。

...すべて拡張します
0
更新された時間 2026年9月25日

ローカル Docker

Dockerデーモン上で、TAOジョブを名前付きDockerコンテナとして実行する シングルノード実行プラットフォーム。デーモンは、エージェントホスト上にローカルに配置することも、 DOCKER_HOST=ssh://user@host / Dockerコンテキストを介してリモートに配置することも可能です。これは、開発、 デバッグ、小規模な実行、およびローカルのコーディングエージェントが リモートのGPUボックスにジョブを送信するワークフローに役立ちます。

データが Docker ホスト上に存在する場合、または マウントされたボリュームやクラウド認証情報を通じてアクセス可能な場合は、ローカル Docker を使用してください。リモートクラスタのスケジューリング、 マルチノードトレーニング、または SLURM キューイングを必要とするジョブには使用しないでください。

エージェントがワークステーションやノートPC上で実行されているが、 DockerデーモンとGPUが別のシングルGPUサーバー上にある場合は、リモートDockerを使用してください。リモートDockerモードでは、 specs内のすべてのローカルファイルシステムパスは、エージェントマシン上ではなく、 リモートDockerホスト上で解釈されます。

事前検証

ワークフローは、Dockerジョブを開始する前にホストのGPUランタイムを検証する必要があります。 チェックに失敗した場合は、ユーザーにインストールの承認を求めるプロンプトを表示し、表示されたインストール コマンドを実行してから、事前検証を再実行してください。

# 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 経由でインストールや修正を承認するようユーザーに促します。ただし、pip でインストール可能な Python 要件および前述の Docker ネットワークの作成は例外です。これらについては自動的にインストールまたは作成し、その後、事前検証を再実行します。

認証情報

Dockerデーモンへのアクセス以外に、プラットフォームの認証情報は必要ありません。

オプションの環境変数:

  • DOCKER_HOST: オプションの Docker デーモン URL。設定されていない場合、SDK は Docker Python クライアントの通常の環境設定またはデフォルトのソケット解決を使用します。 remote-docker プラットフォームオプションには必須です。
  • DOCKER_NETWORK: ジョブコンテナ用の Docker ネットワーク。デフォルトは tao_default.
  • DOCKER_USERNAME: レジストリのユーザー名。デフォルトは $oauthtoken NGC用です。
  • NGC_KEY: プライベートイメージを nvcr.io.
  • HOST_SSH_PATH: リモートのSLURM子ジョブを監視するためにSSHキーが必要な場合、AutoMLブレインコンテナにマウントされます。 ACCESS_KEY, SECRET_KEY, S3_ENDPOINT_URL, S3_BUCKET_NAME:
  • ACCESS_KEY、SECRET_KEY、S3_ENDPOINT_URL、S3_BUCKET_NAME: ローカルコンテナからクラウド ストレージへの読み書きを行うジョブ向けの、オプションの S3 互換ストレージ設定。

起動前の事前チェック

スクリプトの生成やコンテナの起動を行う前に:

  1. Dockerデーモンに到達可能であること、NVIDIA Container Toolkitが Dockerランタイムとして登録されていること、GPUおよびドライバーのバージョンが報告されていること、 および起動前にテスト用コンテナがGPUを認識できることを確認してください。リモートDockerの場合、 docker run ... nvidia-smi リモートデーモンに対してクエリを実行してください。エージェントマシン上の nvidia-smi エージェントマシンからのローカルを使用しないでください。
  2. すべてのローカル/ファイルデータセットのアノテーションおよびメディアパスが、 Docker ホスト上に存在することを確認してください。
  3. `datasets/results` については、 s3:// データセットおよび結果については、 ACCESS_KEY が設定されていること、および SECRET_KEY が設定されていること、および aws s3 lsで読み込めることを確認してください。もし aws が欠落している場合は、 欠落している依存関係を報告し、インストールする前に確認を求めます。インストール後に 事前検証を再実行してください。
  4. モデル固有の認証情報(例: HF_TOKEN を起動前に検証します。
  5. 現在のGPU使用状況を nvidia-smi を使用して現在の GPU 使用率を確認し、ユーザーがその制約を指定した場合は、 他の実行中のジョブによってすでに使用されている GPU を避けてください。選択された GPU ID を起動レビューに表示してください。
  6. アーキテクチャ上の制限が既知のモデル/コンテナの組み合わせについては、 起動前にホストのGPU演算能力とコンテナスタックを比較する。 選択されたイメージがホストアーキテクチャ向けに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 を使用し、pass または export 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 ホストにのみ存在する パスは指定しないでください。

マルチGPUおよびマルチノード

ローカル Docker ではマルチノードはサポートされていません。1 つのジョブは、ホスト間の連携なしに、ローカル Docker デーモンのホスト上で実行されます。

ローカルホストでのマルチGPUは、NVIDIA Container Toolkitの --gpus フラグ(--gpus all または --gpus '"device=0,1,2,3"'). DockerSDK.create_job(gpu_count=N) は --gpus)。シングルホスト分散初期化では、 localhost; torchrun --nproc-per-node=N または PyTorch DDP は通常どおり動作します。

バックエンドの詳細

SDKのバックエンド値 local-dockerを使用します。ローカルバックエンドスキーマには追加の バックエンド詳細がないため、ルーティングの大部分は環境およびジョブ パラメータによって制御されます:

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

Brev SDKの設計に従い、プラットフォーム/コントロールプレーンの値はSDK の状態およびDockerラベル内に保持されます。SDKは BACKEND, HOST_PLATFORM, MONGOSECRET, DOCKER_HOST、あるいは DOCKER_NETWORK をトレーニングコンテナに注入しません。

コンテナの実行

TAO SDKのローカルDockerハンドラーは、Docker Python クライアントを通じてコンテナを起動します:

  • バックエンドジョブ名には、 tao-job- 形式を採用しています。
  • コマンドは通常 ["/bin/bash", "-c", ""].
  • コンテナはデタッチドモードで実行されます。SDKはデフォルトでコンテナを維持するため、ステータスや ログは引き続き確認可能です(ただし、 DOCKER_AUTO_REMOVE=true.
  • /dev/shm tmpfsとしてマウントされている場合を除き。
  • 設定された Docker ネットワークは、ジョブの コンテナに対して Docker デーモンによって適用されます。これは、プロセスの環境変数として渡されるものではありません。
  • 同じジョブ ID を持つ既存のコンテナは、 後継のコンテナが起動する前に停止および削除されます。

GPU へのアクセスについては、ハンドラーがホストの種類を自動検出します。

  • Tegra または Jetson ホストでは runtime="nvidia" に加え NVIDIA_VISIBLE_DEVICES を使用し、 NVIDIA_DRIVER_CAPABILITIES=all.
  • 標準の x86 ホストでは、GPU 機能を備えた Docker device_requests を使用します。

もし num_gpus が 0の場合、GPUは割り当てられません。もし num_gpus がの場合、すべての可視GPUが要求されます。共有開発マシンでは、GPU数を明示的に指定することを推奨 -1の場合、可視範囲内のすべての GPUが要求されます。共有開発マシンでは、明示的なGPU数を優先してください。 明示的なデバイスIDが利用可能な場合、共有マシンでは「数のみ」の選択よりもそれらを優先し、 起動時に他のタスクが占有しているGPUを奪わないようにしてください。

ストレージ

ローカル Docker は、ローカルおよび file:// パスを受け入れます。これは、コンテナが 同じ Docker ホスト上で実行されるためです。仕様内のすべてのパスが、以下のいずれかであることを確認してください:

  • ハンドラーまたは周辺サービスによってコンテナ内にマウントされているか、
  • コンテナ内からすでにアクセス可能であること、または
  • 適切な認証情報を伴うクラウド URI であること。

リモート/共有ファイルシステムについては、そのファイルシステムを所有するプラットフォームを優先してください。 たとえば、クラスタ上の Lustre パスについては、SLURM と lustre:///... を使用してください。

監視

  • SDK ハンドラーは、Docker コンテナの状態を次のように直接マッピングします:作成済み → 保留中、 実行中/再起動中 → 実行中、一時停止中 → 一時停止中、終了コード 0 → 完了、 終了コードが 0 以外 → エラー。
  • ログは、Docker Python クライアントを介して、指定されたコンテナから直接取得されます (docker logs tao-job-).

コンテナが終了、クラッシュ、削除中、または見つからない場合、ステータスの 調整により、バックエンドプロセスは終了したとみなされます。

キャンセル

キャンセルにより、指定されたコンテナが停止します。GPUの所有権は、TAO CoreのローカルGPUマネージャーではなく、Docker / NVIDIAランタイムによって管理されます。

オプション:TAO SDK 経由

ジョブハンドルや、SDK による S3 I/O ラッピング機能 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 デフォルトのローカルソケットを使用していない場合は設定し、 プロセスがデーモンと通信できることを確認してください。

GPUの割り当てに失敗しました:要求されたGPUが利用できない、NVIDIA Container Toolkitが設定されていない、またはDockerデーモンがGPUデバイスの リクエストを作成できない可能性があります。使用するGPUの数を減らすか、別のジョブが終了するのを待つか、 docker run --gpus ... ホスト上で正常に動作するか確認してください。

イメージのプル認証に失敗しました:有効な NGC_KEY プライベート nvcr.io イメージ に対して有効なを設定するか、 docker login nvcr.io -u '$oauthtoken' を実行してください。

コンテナが予期せず終了しました: 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.

すべてのファイル

6件のファイル

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
更新された時間 2026年6月29日
klingai-upgrade-migration
更新された時間 2026年7月3日
base44-cli
更新された時間 2026年6月29日
Railway CLI Management
更新された時間 2026年7月2日
OR