はじめに
SkyPilotは、カリフォルニア大学バークレー校のSky Computing Labが始めたオープンソースのフレームワークで、あらゆるクラウドインフラ上でAIやバッチ処理タスクを効率的に実行できるように設計されています。14以上のクラウドサービス(AWS、GCP、Azureなど)とKubernetesをサポートするSkyPilotは、統一された実行インターフェース、大幅なコスト削減、GPUの高い可用性を提供し、シンプルなYAMLまたはPython APIを通じて設定することで、ユーザーはコードを修正することなくクラウドにタスクをデプロイでき、最適なリソースを自動的に選択し、フォールトトレランスを実現する。SkyPilotは、ユーザーがコードを修正することなくクラウドにタスクをデプロイし、最適なリソースを自動的に選択し、フォールトトレランスを可能にする。2022年のリリース以来、GitHubで100万以上のダウンロードと7k以上のスターを集め、機械学習モデルのトレーニング、ハイパーパラメータのチューニング、バイオインフォマティクスなどで広く利用されている。
機能一覧
- マルチクラウドのミッション展開AWS、GCP、Azure、Kubernetesなど14以上のクラウド上でのタスク実行をサポートし、単一クラウドベンダーのロックインを回避。
- コスト最適化最も安価なクラウド・リージョンやインスタンス(オンデマンドやスポット・インスタンスなど)を自動的に選択し、最大3~6.5倍のコスト削減を実現します。
- GPU/TPUサポートGPU(NVIDIA A100など)とTPUリソースをシームレスにスケジューリング・管理し、計算効率を向上させます。
- 自動障害復旧容量不足や先取りが発生した場合、自動的に他のクラウドやリージョンに切り替えるため、タスクが中断されることはありません。
- コードとデータの同期ローカルのコードとデータをクラウドクラスターに自動的に同期し、デプロイプロセスを簡素化します。
- タスクキュー管理ハイパー・パラメーター・チューニングのようなシナリオのための大規模な同時実行タスク(例えば2000以上のジョブ)をサポートします。
- サービス展開(SkyServe)HTTPS サポートとロードバランシングポリシーを提供し、AI モデルサービスの展開を容易にします。
- リザーブド・インスタンスのサポートAWS Capacity Blocks、GCP Dynamic Workload Schedulerなどのオンプレミスリソースを統合します。
ヘルプの使用
SkyPilotは、開発者、研究者、ビジネスユーザーが簡単にインストールして使用できます。以下では、SkyPilotの主な機能のインストール、設定、操作方法について詳しく説明します。
設置プロセス
- 環境準備
Python 3.8以降がローカルにインストールされていること、およびピップ
パッケージ管理ツール。依存関係の衝突を避けるため、仮想環境を推奨する:python3 -m venv skypilot_env ソース skypilot_env/bin/activate
- SkyPilotのインストール
とおすピップ
最新バージョンをインストールしてください:pip install -U "skypilot[all]"
この中には
[すべて]
クラウドでサポートされている依存関係がすべてインストールされていることを示します。特定のクラウド(AWSなど)のみが必要な場合は、次のように置き換えます。スカイパイロット[aws]
. - クラウド認証
対象クラウドの認証情報を設定します。AWSを例に挙げる:- AWS CLIをインストールします:
pip install awscli
- 認証情報を設定する:
awsコンフィグ
アクセス・キーとシークレット・キーを入力する。
その他のクラウド(GCPやAzureなど)については、公式ドキュメントを参照して同様の設定を行う。
- AWS CLIをインストールします:
- インストールの確認
以下のコマンドを実行して、インストールが成功したかどうかを確認する:スカイチェック
出力には、有効になっているクラウド・サービスのステータスが表示される。
主な機能
1.ミッション・プロファイルの作成
SkyPilotはYAMLファイルを使ってタスクを定義します。例えば、PyTorchモデルを学習するには train.yaml
::
リソース: A100:1
アクセラレータ: A100:1 A100 GPUを1つ使用する#
num_nodes: 1 # シングルノード
workdir: ~/my_project # ローカル・プロジェクト・ディレクトリの同期
setup: | #の依存関係をインストールします。
pip install torch torchvision
run: | #の実行タスク
python main.py --epochs 10
リソース
GPUの種類や数などの計算資源を指定します。ワークディレクトリ
クラウドに自動同期するローカルコードカタログ。セットアップ
実行前の準備コマンド。走る
ミッション実行コマンド。
2.マンデートの開始
ターミナルで実行:
sky launch -c my-cluster train.yaml
-cマイクラスタ
クラスタに名前を付け、その後の管理を容易にした。- SkyPilotは自動的に最適なクラウドリソースを選択し、タスクを開始します。
3.委任状況の確認
クラスタの状態を確認する:
スカイステータス
実行中のすべてのクラスタとそのリソースの使用状況を表示します。
4.コスト最適化とスポットの例
スポットインスタンスを利用してコストを削減する:
sky launch -c my-spot-cluster train.yaml --use-spot
SkyPilotは、スポットインスタンスの停止を自動的に管理し、タスクを再開します。
5.デプロイメントサービス(SkyServe)
LLaMAモデルの展開の例として、以下のものを作成する。 serve.yaml
::
リソース
アクセラレータ: A100:1
service: replica: 2 # 2 replicas
レプリカ: 2 # 2レプリカ
ports: 8080 #サービスポート
run: || run: | run
python serve.py --model llama
サービスを開始する:
sky serve up serve.yaml -n llama-service
生成されたHTTPSエンドポイントにアクセスしてサービスを利用する。
6.大規模なコンカレント・ミッション
2000以上のタスクを実行(ハイパーパラメーターのチューニングなど):
sky jobs launch -c my-jobs train.yaml --num-jobs 2000
SkyPilotは自動的にリソースを割り当て、キューを管理します。
注目の機能
マルチクラウド・スイッチング
AWSにA100がない場合は、他のクラウドを指定してください:
sky launch -c my-cluster train.yaml --cloud gcp
または、SkyPilotが最も安いクラウドを自動的に選択します:
sky launch -c my-cluster train.yaml --cloud cheapest
GPUスケジューリング
利用可能なGPUリソースを見る
スカイショーグーパス
需要に応じて動的に調整 リソース
正鵠を得る アクセラレーター
パラメーター
ロギングとデバッグ
タスクログをリアルタイムで表示
スカイログ マイクラスタ
デバッグモードを有効にする:
export SKYPILOT_DEBUG=1
sky launch -c my-cluster train.yaml
ほら
- クレデンシャルのセキュリティクラウド認証情報ファイル(たとえば
~/.aws
)の許可を正しく与え、漏れを防ぐ。 - リソースリリースタスクが完了したらクラスタを手動でシャットダウンする:
スカイダウン・マイクラスター
- ドキュメンテーション・サポートより高度な使い方については、SkyPilotの公式ドキュメントを参照してください。
これらのステップを踏むことで、ユーザーはSkyPilotをすぐに使い始め、AIやバッチタスクを効率的に実行できるようになります。