mcpField
S
skypilot-multi-cloud-orchestration

skypilot-multi-cloud-orchestration

github.com/kalarislabsその他7343 回インストール4 日前に更新
リポジトリ

skypilot-multi-cloud-orchestration について

SkyPilotを使って複数のクラウドプロバイダーで機械学習ワークロードを実行・管理するためのスキルガイドです。コストやリージョンに応じたリソース選択、Spotジョブの復旧、分散ジョブ、モデルサービングを解説します。

主な機能

  1. 01マルチクラウドのワークロード編成
  2. 02クラウドとリージョンの自動選択
  3. 03Spotジョブの復旧
  4. 04マルチノード分散トレーニング
  5. 05マネージドジョブとチェックポイント
  6. 06Sky Serveによるモデルサービング

活用シーン

  1. 01複数クラウドでのGPUトレーニング起動
  2. 02復旧可能なSpotジョブの実行
  3. 03マルチノードトレーニングの管理
  4. 04自動スケーリングするモデルエンドポイントのデプロイ

インストール

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

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill skypilot-multi-cloud-orchestration

インストール後、Claude Code で/skypilot-multi-cloud-orchestrationを入力して読み込まれたか確認します。

同梱ファイル

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

references/
advanced-usage.md
sky-serve-model-serving.md
troubleshooting.md

詳細

SkyPilot マルチクラウドオーケストレーション

SkyPilot を使用して、コストを自動最適化しながらクラウド間で ML ワークロードを実行する包括的なガイドです。

SkyPilot を使用する場面

SkyPilot は次の場合に使用します:

  • 複数のクラウド(AWS、GCP、Azure など)で ML ワークロードを実行する場合
  • クラウドやリージョンの自動選択によるコスト最適化が必要な場合
  • 自動復旧機能を使ってスポットインスタンスで長時間のジョブを実行する場合
  • 分散マルチノードトレーニングを管理する場合
  • 20 以上のクラウドプロバイダーで統一されたインターフェースを利用したい場合
  • ベンダーロックインを避けたい場合

主な機能:

  • マルチクラウド:AWS、GCP、Azure、Kubernetes、Lambda、RunPod など、20 以上のプロバイダー
  • コスト最適化:最も安価なクラウドやリージョンを自動選択
  • スポットインスタンス:自動復旧によりコストを 3~6 倍削減
  • 分散トレーニング:ギャングスケジューリングによるマルチノードジョブ
  • マネージドジョブ:自動復旧、チェックポイント、フォールトトレランス
  • Sky Serve:オートスケーリングによるモデルサービング

代わりに次を使用してください:

  • Modal:Python ネイティブ API による、よりシンプルなサーバーレス GPU の場合
  • RunPod:単一クラウドの永続ポッドの場合
  • Kubernetes:既存の K8s インフラストラクチャを使用する場合
  • Ray:Ray ベースのオーケストレーションのみを行う場合

クイックスタート

インストール
pip install "skypilot[aws,gcp,azure,kubernetes]"

# Verify cloud credentials
sky check
Hello World

hello.yaml を作成します:

resources:
  accelerators: T4:1

run: |
  nvidia-smi
  echo "Hello from SkyPilot!"

起動します:

sky launch -c hello hello.yaml

# SSH to cluster
ssh hello

# Terminate
sky down hello

基本概念

タスク YAML の構造
# Task name (optional)
name: my-task

# Resource requirements
resources:
  cloud: aws              # Optional: auto-select if omitted
  region: us-west-2       # Optional: auto-select if omitted
  accelerators: A100:4    # GPU type and count
  cpus: 8+                # Minimum CPUs
  memory: 32+             # Minimum memory (GB)
  use_spot: true          # Use spot instances
  disk_size: 256          # Disk size (GB)

# Number of nodes for distributed training
num_nodes: 2

# Working directory (synced to ~/sky_workdir)
workdir: .

# Setup commands (run once)
setup: |
  pip install -r requirements.txt

# Run commands
run: |
  python train.py
主なコマンド
コマンド用途
sky launchクラスターを起動してタスクを実行
sky exec既存のクラスターでタスクを実行
sky statusクラスターのステータスを表示
sky stopクラスターを停止(状態を保持)
sky downクラスターを終了
sky logsタスクのログを表示
sky queueジョブキューを表示
sky jobs launchマネージドジョブを起動
sky serve upサービングエンドポイントをデプロイ

GPU の構成

利用可能なアクセラレーター
# NVIDIA GPUs
accelerators: T4:1
accelerators: L4:1
accelerators: A10G:1
accelerators: L40S:1
accelerators: A100:4
accelerators: A100-80GB:8
accelerators: H100:8

# Cloud-specific
accelerators: V100:4         # AWS/GCP
accelerators: TPU-v4-8       # GCP TPUs
GPU のフォールバック
resources:
  accelerators:
    H100: 8
    A100-80GB: 8
    A100: 8
  any_of:
    - cloud: gcp
    - cloud: aws
    - cloud: azure
スポットインスタンス
resources:
  accelerators: A100:8
  use_spot: true
  spot_recovery: FAILOVER  # Auto-recover on preemption

クラスター管理

起動と実行
# Launch new cluster
sky launch -c mycluster task.yaml

# Run on existing cluster (skip setup)
sky exec mycluster another_task.yaml

# Interactive SSH
ssh mycluster

# Stream logs
sky logs mycluster
自動停止
resources:
  accelerators: A100:4
  autostop:
    idle_minutes: 30
    down: true  # Terminate instead of stop
# Set autostop via CLI
sky autostop mycluster -i 30 --down
クラスターのステータス
# All clusters
sky status

# Detailed view
sky status -a

分散トレーニング

マルチノードの設定
resources:
  accelerators: A100:8

num_nodes: 4  # 4 nodes × 8 GPUs = 32 GPUs total

setup: |
  pip install torch torchvision

run: |
  torchrun \
    --nnodes=$SKYPILOT_NUM_NODES \
    --nproc_per_node=$SKYPILOT_NUM_GPUS_PER_NODE \
    --node_rank=$SKYPILOT_NODE_RANK \
    --master_addr=$(echo "$SKYPILOT_NODE_IPS" | head -n1) \
    --master_port=12355 \
    train.py
環境変数
変数説明
SKYPILOT_NODE_RANKノードのインデックス(0 から num_nodes-1)
SKYPILOT_NODE_IPS改行区切りの IP アドレス
SKYPILOT_NUM_NODESノードの合計数
SKYPILOT_NUM_GPUS_PER_NODEノードあたりの GPU 数
ヘッドノードのみでの実行
run: |
  if [ "${SKYPILOT_NODE_RANK}" == "0" ]; then
    python orchestrate.py
  fi

マネージドジョブ

スポット中断からの復旧
# Launch managed job with spot recovery
sky jobs launch -n my-job train.yaml
チェックポイント
name: training-job

file_mounts:
  /checkpoints:
    name: my-checkpoints
    store: s3
    mode: MOUNT

resources:
  accelerators: A100:8
  use_spot: true

run: |
  python train.py \
    --checkpoint-dir /checkpoints \
    --resume-from-latest
ジョブ管理
# List jobs
sky jobs queue

# View logs
sky jobs logs my-job

# Cancel job
sky jobs cancel my-job

ファイルのマウントとストレージ

ローカルファイルの同期
workdir: ./my-project  # Synced to ~/sky_workdir

file_mounts:
  /data/config.yaml: ./config.yaml
  ~/.vimrc: ~/.vimrc
クラウドストレージ
file_mounts:
  # Mount S3 bucket
  /datasets:
    source: s3://my-bucket/datasets
    mode: MOUNT  # Stream from S3

  # Copy GCS bucket
  /models:
    source: gs://my-bucket/models
    mode: COPY  # Pre-fetch to disk

  # Cached mount (fast writes)
  /outputs:
    name: my-outputs
    store: s3
    mode: MOUNT_CACHED
ストレージモード
モード説明最適な用途
MOUNTクラウドからストリーミング大規模データセット、読み取り中心
COPYディスクに事前取得小さなファイル、ランダムアクセス
MOUNT_CACHED非同期アップロードでキャッシュチェックポイント、出力

Sky Serve(モデルサービング)

詳細、コード例、パラメーター表については、references/sky-serve-model-serving.md を参照してください。この手順が該当する場合に読んでください。

コスト最適化

クラウドの自動選択
# SkyPilot finds cheapest option
resources:
  accelerators: A100:8
  # No cloud specified - auto-select cheapest
# Show optimizer decision
sky launch task.yaml --dryrun
クラウドの優先設定
resources:
  accelerators: A100:8
  any_of:
    - cloud: gcp
      region: us-central1
    - cloud: aws
      region: us-east-1
    - cloud: azure
環境変数
envs:
  HF_TOKEN: $HF_TOKEN  # Inherited from local env
  WANDB_API_KEY: $WANDB_API_KEY

# Or use secrets
secrets:
  - HF_TOKEN
  - WANDB_API_KEY

よくあるワークフロー

ワークフロー 1:チェックポイントを使用したファインチューニング
name: llm-finetune

file_mounts:
  /checkpoints:
    name: finetune-checkpoints
    store: s3
    mode: MOUNT_CACHED

resources:
  accelerators: A100:8
  use_spot: true

setup: |
  pip install transformers accelerate

run: |
  python train.py \
    --checkpoint-dir /checkpoints \
    --resume
ワークフロー 2:ハイパーパラメーターのスイープ
name: hp-sweep-${RUN_ID}

envs:
  RUN_ID: 0
  LEARNING_RATE: 1e-4
  BATCH_SIZE: 32

resources:
  accelerators: A100:1
  use_spot: true

run: |
  python train.py \
    --lr $LEARNING_RATE \
    --batch-size $BATCH_SIZE \
    --run-id $RUN_ID
# Launch multiple jobs
for i in {1..10}; do
  sky jobs launch sweep.yaml \
    --env RUN_ID=$i \
    --env LEARNING_RATE=$(python -c "import random; print(10**random.uniform(-5,-3))")
done

デバッグ

# SSH to cluster
ssh mycluster

# View logs
sky logs mycluster

# Check job queue
sky queue mycluster

# View managed job logs
sky jobs logs my-job

よくある問題

問題解決策
クォータ超過クォータの増加を申請するか、別のリージョンを試してください
スポット中断自動復旧には sky jobs launch を使用してください
ファイル同期が遅い出力には MOUNT_CACHED モードを使用してください
GPU を利用できないフォールバック先のクラウドには any_of を使用してください

参考資料

リソース

エージェントの実行手順

  1. 環境を確認します。 ハードウェア、フレームワークとサーバーのバージョン、モデル形式、想定負荷を確認します。
  2. 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果に影響する値は推測せず、質問します。
  3. まず小規模で実行します。 スケールアップする前に、単一のリクエストを処理または記録するか、エンドツーエンドで実行します。
  4. 上記の手順と参考情報を使用して、タスク全体を実行します。
  5. 結果を検証します。 レイテンシ、スループット、出力の正確性を参照値と比較して測定し、リソース使用量とコストを確認します。
  6. 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確定の点を明記します。
このような場合対応方法
サーバーの起動に失敗する、または OOM が発生するモデルのサイズとメモリ、量子化、並列処理の設定を確認します。
これらの手順に記載されている関数、フラグ、エンドポイントがインストール済みのバージョンにないインストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して対応し、ユーザーに伝えます。API を捏造してはいけません。
必須の入力、識別子、パラメーターが曖昧ユーザーに質問するか、実行前に前提を明示します。

誠実性に関するルール

  • 結果、パラメーター、識別子、引用、統計を捏造してはいけません。実行または検証できない場合は、その旨を明確に伝えます。
  • サービスや認証情報を公開してはいけません。プロビジョニング前にクラウドの費用を確認します。
  • ここに記載されたバージョン固有の情報は古くなっている可能性があるため、インストール済みバージョンの公式ドキュメントで確認します。
  • 費用が発生する操作、共有 GPU またはクラウドクォータを消費する操作、個人データや患者データに触れる操作、取り消せない操作を行う前に、確認を求めます。

関連スキル

  • modal-serverless-gpu:ML ワークロードを実行するためのサーバーレス GPU クラウドプラットフォーム。
  • lambda-labs-gpu-cloud:ML のトレーニングと推論に使用する、予約制およびオンデマンドの GPU クラウドインスタンス。
  • ray-train:クラスター間での分散トレーニングのオーケストレーション。

コメント