概要
このチュートリアルでは、W&B Launch を使用して Kubernetes 上でマルチノードジョブを実行する方法を学びます。手順は以下の通りです:- W&B アカウントと Kubernetes クラスターがあることを確認する。
- Volcano ジョブ用の Launch キューを作成する。
- Launch エージェントを Kubernetes クラスターにデプロイする。
- 分散トレーニングジョブを作成する。
- 分散トレーニングを Launch する。
前提条件
開始する前に、以下が必要になります:- W&B アカウント
- Kubernetes クラスター
Launch キューの作成
最初のステップは Launch キューの作成です。wandb.ai/launch にアクセスし、画面右上の青い Create a queue ボタンを押します。画面の右側からキュー作成ドロワーがスライドして表示されます。Entity を選択し、名前を入力して、キューのタイプとして Kubernetes を選択します。 設定(configuration)セクションに、volcano job のテンプレートを入力します。このキューから Launch されるすべての Runs は、このジョブ仕様を使用して作成されます。必要に応じてこの設定を変更し、ジョブをカスタマイズできます。 この設定ブロックには、Kubernetes ジョブ仕様、Volcano ジョブ仕様、または Launch したいその他のカスタムリソース定義(CRD)を指定できます。設定ブロック内のマクロ を使用して、このスペックの内容を動的に設定することも可能です。 このチュートリアルでは、Volcano の PyTorch プラグイン を利用したマルチノード PyTorch トレーニング用の設定を使用します。以下の設定を YAML または JSON としてコピー&ペーストしてください。- YAML
- JSON
Volcano のインストール
Kubernetes クラスターに Volcano をインストールするには、公式インストールガイド に従ってください。Launch エージェントのデプロイ
キューを作成したので、キューからジョブを取得して実行するための Launch エージェントをデプロイする必要があります。最も簡単な方法は、W&B 公式のhelm-charts リポジトリにある launch-agent チャート を使用することです。README の指示に従って Kubernetes クラスターにチャートをインストールし、エージェントが先ほど作成したキューをポーリングするように設定してください。
トレーニングジョブの作成
Volcano の PyTorch プラグインは、PyTorch コードが DDP(Distributed Data Parallel)を正しく使用している限り、MASTER_ADDR、RANK、WORLD_SIZE などの PyTorch DDP の動作に必要な環境変数を自動的に設定します。カスタム Python コードで DDP を使用する方法の詳細については、PyTorch のドキュメント を参照してください。
Launch
キューとクラスターのセットアップが完了したので、分散トレーニングを Launch しましょう。まずは、Volcano の PyTorch プラグインを使用してランダムなデータで単純な多層パーセプトロンをトレーニングする ジョブ を使用します。このジョブのソースコードは こちら にあります。 このジョブを Launch するには、ジョブのページ に移動し、画面右上の Launch ボタンをクリックします。ジョブを Launch するキューを選択するよう求められます。
- ジョブのパラメータを自由に設定します。
- 先ほど作成したキューを選択します。
- Resource config セクションで Volcano ジョブを修正し、ジョブのパラメータを変更します。例えば、
workerタスクのreplicasフィールドを変更することで、ワーカーの数を変更できます。 - Launch をクリックします。