メインコンテンツまでスキップ

Volcanoを使ったマルチノードジョブの起動

このチュートリアルでは、Kubernetes上でW&BとVolcanoを使ってマルチノードトレーニングジョブを起動する手順を紹介します。

概要

このチュートリアルでは、W&B Launchを使ってKubernetes上でマルチノードジョブを起動する方法を学びます。以下のステップに従います:

  • Weights & BiasesアカウントとKubernetesクラスターを用意する
  • Volcanoジョブ用のローンチキューを作成する
  • KubernetesクラスターにLaunchエージェントをデプロイする
  • 分散トレーニングジョブを作成する
  • 分散トレーニングを開始する

前提条件

開始する前に、以下が必要です:

  • Weights & Biasesアカウント
  • Kubernetesクラスター

ローンチキューを作成

最初のステップはローンチキューを作成することです。wandb.ai/launchにアクセスし、画面の右上にある青いCreate a queueボタンをクリックします。右側からキュー作成ドロワーが表示されます。エンティティを選択し、名前を入力し、キューのタイプとしてKubernetesを選択します。

設定セクションには、volcano jobテンプレートを入力します。ここから起動する任意のrunsは、このジョブ仕様を使用して作成されるため、この設定をカスタマイズしてジョブを調整することができます。

この設定ブロックは、Kubernetesジョブ仕様、Volcanoジョブ仕様、または他の任意のカスタムリソース定義(CRD)を受け入れることができます。設定ブロックでのマクロの使用により、このスペックの内容を動的に設定できます。

このチュートリアルでは、volcanoのpytorchプラグインを使用したマルチノードpytorchトレーニングの設定を使用します。以下の設定をYAMLまたはJSONとしてコピーして貼り付けることができます:

kind: Job
spec:
tasks:
- name: master
policies:
- event: TaskCompleted
action: CompleteJob
replicas: 1
template:
spec:
containers:
- name: master
image: ${image_uri}
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
- name: worker
replicas: 1
template:
spec:
containers:
- name: worker
image: ${image_uri}
workingDir: /home
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
plugins:
pytorch:
- --master=master
- --worker=worker
- --port=23456
minAvailable: 1
schedulerName: volcano
metadata:
name: wandb-job-${run_id}
labels:
wandb_entity: ${entity_name}
wandb_project: ${project_name}
namespace: wandb
apiVersion: batch.volcano.sh/v1alpha1

ドロワーの下部にあるCreate queueボタンをクリックして、キューの作成を完了します。

Volcanoのインストール

KubernetesクラスターにVolcanoをインストールするには、公式インストールガイドに従ってください。

Launchエージェントのデプロイ

キューを作成したので、次は作成したキューからジョブを取得して実行するLaunchエージェントをデプロイする必要があります。最も簡単な方法は、W&Bの公式launch-agentチャートを使うことです。READMEの指示に従って、このチャートをKubernetesクラスターにインストールし、先ほど作成したキューをポーリングするようにエージェントを設定してください。

トレーニングジョブの作成

Volcanoのpytorchプラグインは、pytorch ddpが動作するために必要な環境変数(例:MASTER_ADDRRANKWORLD_SIZEなど)を自動的に設定します。pytorchコードが正しくDDPを使用している限り、他の操作はそのまま動作します。DDPの使用方法については、pytorchのドキュメントを参照してください。

ヒント

Volcanoのpytorchプラグインは、PyTorch Lightningの Trainer を使ったマルチノードトレーニングとも互換性があります。

起動 🚀

キューとクラスターの設定が完了したので、いよいよ分散トレーニングを開始します!最初に使用するのは、volcanoのpytorchプラグインを使ってランダムデータ上でシンプルな多層パーセプトロンをトレーニングするジョブです。このジョブのソースコードはこちらから入手できます。

このジョブを起動するには、ジョブのページにアクセスし、画面の右上のLaunchボタンをクリックします。ジョブを起動するキューを選択するように求められます。

  1. 任意のジョブパラメータを設定します。
  2. 先ほど作成したキューを選択します。
  3. Resource configセクションでvolcanoジョブを修正し、ジョブのパラメータを変更します。例えば、workerタスクのreplicasフィールドを変更してワーカーの数を変更できます。
  4. Launchをクリックします 🚀

W&B UIからジョブの進行状況を監視し、必要に応じてジョブを停止することができます。

Was this page helpful?👍👎