mcpField
G
gpu-container-setup-flagos

gpu-container-setup-flagos

github.com/flagos-aiクラウド・DevOps2253 回インストール15 週間前に更新
リポジトリ

gpu-container-setup-flagos について

NVIDIA、AMD、Ascend、Metax、Iluvatar の GPU 向けに、PyTorch コンテナーのセットアップと検証を自動化するスキルです。GPU とデータディスクの検出、イメージ選択、Docker 起動、バックエンド確認を行います。

主な機能

  1. 015種類のGPUベンダーを検出
  2. 02データディスクを検索
  3. 03コンテナーイメージを選択・テスト
  4. 04ベンダー別Dockerコマンドを生成
  5. 05PyTorchのGPUアクセスを検証

活用シーン

  1. 01検出したGPU向けにPyTorch環境を準備
  2. 02指定イメージまたはベンダーでコンテナーを起動
  3. 03GPUバックエンドの利用可否を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/flagos-ai/skills --skill gpu-container-setup-flagos

インストール後、Claude Code で/gpu-container-setup-flagosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
gpu-detection.md
image-sources.md
mount-requirements.md
scripts/
detect_gpu.py
find_data_disk.py
validate_pytorch.py

詳細

GPU コンテナーセットアップスキル

このスキルは、PyTorch ワークロード向けの複数ベンダー対応 GPU コンテナーセットアップを自動化します。

対応 GPU ベンダー

ベンダーPyTorch バックエンド検出方法
NVIDIACUDAnvidia-smi
AMDROCm (HIP)rocm-smi、/opt/rocm
Ascendtorch_npunpu-smi、/usr/local/Ascend
Metaxtorch_musamx-smi、/opt/metax
Iluvatartorch_corexixsmi、/opt/iluvatar

実行フロー

呼び出されたら、次の手順に従います。

手順 1:引数を解析する

ユーザーが次の引数を指定しているか確認します。

  • --vendor <name> - 特定のベンダーを指定します(検出をスキップ)
  • --image <image> - 特定のコンテナーイメージを指定します
  • --data <path> - 特定のデータマウントパスを指定します
  • --name <name> - コンテナー名(デフォルト:pytorch-gpu)
手順 2:GPU ベンダーを検出する

検出スクリプトを実行します。

python3 .claude/skills/gpu-container-setup/scripts/detect_gpu.py

想定される出力:

{"vendor": "ascend", "devices": ["Ascend 910B"], "count": 8}

検出に失敗し、--vendor フラグも指定されていない場合は、使用するベンダーをユーザーに尋ねます。

手順 3:データディスクを探す

データディスク検出を実行します。

python3 .claude/skills/gpu-container-setup/scripts/find_data_disk.py

想定される出力:

{"data_disk": "/mnt/data", "found": true, "size": "2.0T", "available": "1.5T"}

適切なディスクが見つからない場合は、データマウントパスをユーザーに尋ねます。

手順 4:コンテナーイメージを探す

厳密な優先順位に従います(現在の方法に失敗した場合のみ次に進みます)。

1. Primary Vendor Hub (hardcoded) → 2. BAAI Harbor → 3. Web Search → 4. Local Images → 5. Ask User
手順 4.1:主要ベンダーハブ(ハードコードされた URL)
ベンダーレジストリAPI/クエリ
NVIDIAnvcr.iohttps://api.ngc.nvidia.com/v2/repos/nvidia/pytorch/tags
Ascendascendhub.huawei.comポータル:https://ascendhub.huawei.com
Metaxregistry.metax-tech.comhttps://registry.metax-tech.com/v2/pytorch/metax-pytorch/tags/list
Iluvatarhub.iluvatar.comhttps://hub.iluvatar.com/v2/pytorch/iluvatar-pytorch/tags/list
AMDdocker.io (rocm/pytorch)https://hub.docker.com/v2/repositories/rocm/pytorch/tags
# Example: Query NGC for latest NVIDIA PyTorch
TAG=$(curl -s "https://api.ngc.nvidia.com/v2/repos/nvidia/pytorch/tags" | jq -r '.tags[].name' | grep -E '^[0-9]{2}\.[0-9]{2}-py3$' | sort -rV | head -1)
IMAGE="nvcr.io/nvidia/pytorch:${TAG}"
手順 4.2:BAAI Harbor(フォールバック)

手順 4.1 に失敗した場合(接続できない、イメージがない、プルに失敗する場合)のみ使用します。

# Query BAAI Harbor
curl -s "https://harbor.baai.ac.cn/api/v2.0/projects/flagrelease-public/repositories?page_size=100" | jq -r '.[].name' | grep "flagrelease-<vendor>"
手順 4.3:ウェブ検索(フォールバック)

手順 4.1 と 4.2 の両方に失敗した場合のみ、"<vendor> pytorch docker official" を検索します。

手順 4.4:ローカルイメージ(フォールバック)

手順 4.1~4.3 に失敗した場合のみ、docker images | grep pytorch を確認します。

使用前のテスト
docker pull "${IMAGE}" && docker run --rm "${IMAGE}" python -c "import torch; print(torch.__version__)"

テストに失敗した場合は、次のソースを試します。すべて失敗した場合は、イメージをユーザーに尋ねます。

手順 4.5:スキルを更新する(自己改善)

重要:ウェブ検索(手順 4.3)で見つかったイメージがすべてのテストに合格した場合は、新たに見つかったベンダーハブを主要ソースとして追加するため、references/image-sources.md を更新します。これにより、今後の検索が速くなります。

# After successful web search discovery:
# 1. Verify image works (pull + pytorch test + GPU test)
# 2. Extract registry URL pattern
# 3. Update references/image-sources.md Step 1 section with new vendor hub
手順 5:Docker コマンドを作成する

ベンダー固有の要件については、references/mount-requirements.md を参照してください。

NVIDIA:

docker run -d --gpus all \
  --name pytorch-gpu \
  --shm-size=16g \
  -v <data_disk>:/data \
  <image> sleep infinity

AMD/ROCm:

docker run -d \
  --device=/dev/kfd --device=/dev/dri \
  --group-add video --group-add render \
  --name pytorch-gpu \
  --shm-size=16g \
  -v <data_disk>:/data \
  <image> sleep infinity

Ascend:

docker run -d \
  --device=/dev/davinci0 --device=/dev/davinci1 ... \
  --device=/dev/davinci_manager \
  --device=/dev/devmm_svm \
  --device=/dev/hisi_hdc \
  -v /usr/local/Ascend:/usr/local/Ascend:ro \
  -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi:ro \
  --name pytorch-gpu \
  --shm-size=16g \
  -v <data_disk>:/data \
  <image> sleep infinity

Metax:

docker run -d \
  --device=/dev/mx0 --device=/dev/mx1 ... \
  -v /opt/metax:/opt/metax:ro \
  --name pytorch-gpu \
  --shm-size=16g \
  -v <data_disk>:/data \
  <image> sleep infinity

Iluvatar:

docker run -d \
  --device=/dev/bi0 --device=/dev/bi1 ... \
  -v /opt/iluvatar:/opt/iluvatar:ro \
  --name pytorch-gpu \
  --shm-size=16g \
  -v <data_disk>:/data \
  <image> sleep infinity
手順 6:コンテナーを起動する

docker run コマンドを実行します。同じ名前のコンテナーが存在する場合:

  1. 起動中か確認し、既存のコンテナーを使うか置き換えるかをユーザーに提示します
  2. 停止中の場合は、再起動するか置き換えるかをユーザーに提示します
手順 7:PyTorch GPU を検証する

検証スクリプトをコンテナー内にコピーして実行します。

docker cp .claude/skills/gpu-container-setup/scripts/validate_pytorch.py pytorch-gpu:/tmp/
docker exec pytorch-gpu python3 /tmp/validate_pytorch.py

想定される出力:

{
  "status": "PASS",
  "backend": "npu",
  "device_count": 8,
  "device_names": ["Ascend 910B", ...],
  "tests": {
    "device_detection": true,
    "tensor_creation": true,
    "matrix_multiply": true,
    "gpu_to_cpu_transfer": true
  }
}
手順 8:結果を報告する

次の内容をユーザーにまとめて報告します。

  • 検出された GPU ベンダーとデバイス
  • 使用したコンテナー名とイメージ
  • データマウントパス
  • 検証結果
  • アクセス方法:docker exec -it pytorch-gpu bash

エラー処理

エラー対応
GPU が検出されないベンダーをユーザーに尋ねるか、ドライバーを確認します
イメージのプルに失敗する別のレジストリまたはウェブ検索を試します
コンテナーの起動に失敗するデバイスのアクセス権を確認し、エラーを表示します
検証に失敗する詳細なエラーを表示し、修正方法を提案します

参照ファイル

  • references/gpu-detection.md - ベンダー別の検出方法
  • references/image-sources.md - イメージ検出ガイド(レジストリ API、優先順位、選択基準)
  • references/mount-requirements.md - ベンダー別のマウント仕様

使用例

User: /gpu-container-setup
User: setup a pytorch container
User: start container with ascend GPU
User: /gpu-container-setup --image nvcr.io/nvidia/pytorch:24.01-py3
User: /gpu-container-setup --image harbor.baai.ac.cn/flagrelease-public/ngctorch:2601

コメント