メインコンテンツへスキップ

Colab で試す

Launch ジョブは、W&B の run を再現するための設計図です。ジョブは、ワークロードを実行するために必要なソースコード、依存関係、入力を取り込んだ W&B Artifacts です。 wandb launch コマンドを使ってジョブを作成して実行します。
ジョブを実行用に送信せずに作成するには、wandb job create コマンドを使用します。詳しくは command reference docs を参照してください。

Git ジョブ

W&B Launch を使うと、リモート git リポジトリ内の特定のコミット、ブランチ、またはタグからコードやその他の追跡対象のアセットをクローンする Git ベースのジョブを作成できます。--uri または -u フラグを使用してコードを含む URI を指定し、必要に応じて --build-context フラグでサブディレクトリを指定します。 次のコマンドで git リポジトリから「hello world」ジョブを実行します。
wandb launch --uri "https://github.com/wandb/launch-jobs.git" --build-context jobs/hello_world --dockerfile Dockerfile.wandb --project "hello-world" --job-name "hello-world" --entry-point "python job.py"
このコマンドは次の処理を行います。
  1. 一時ディレクトリに W&B Launch jobs リポジトリ をクローンします。
  2. hello プロジェクトに hello-world-git という名前のジョブを作成します。ジョブは、そのリポジトリのデフォルトブランチの先頭のコミット(最新コミット)に紐づけられます。
  3. jobs/hello_world ディレクトリと Dockerfile.wandb からコンテナイメージをビルドします。
  4. コンテナを起動し、python job.py を実行します。
特定のブランチまたはコミットハッシュからジョブをビルドするには、-g--git-hash 引数を追加します。利用可能な引数の一覧を表示するには、wandb launch --help を実行してください。

リモート URL の形式

Launch ジョブに関連付けられた git リモートは、HTTPS または SSH のいずれかの URL を使用できます。URL の種類によって、ジョブのソースコードを取得する際に使用されるプロトコルが決まります。
リモート URL の種類URL の形式アクセスおよび認証の要件
httpshttps://github.com/organization/repository.gitgit リモートに対して認証するためのユーザー名とパスワード
sshgit@github.com:organization/repository.gitgit リモートに対して認証するための SSH 鍵
正確な URL の形式はホスティングプロバイダーによって異なる点に注意してください。wandb launch --uri で作成されたジョブでは、指定した --uri に含まれる転送プロトコルが使用されます。

コード Artifact ジョブ

W&B Artifact に保存されている任意のソースコードからジョブを作成できます。ローカル ディレクトリを --uri または -u 引数で指定して、新しいコード Artifact とジョブを作成します。 まずは、空のディレクトリを作成し、次の内容の main.py という名前の Python スクリプトを追加します:
import wandb

with wandb.init() as run:
    run.log({"metric": 0.5})
次の内容の requirements.txt ファイルを追加してください:
wandb>=0.17.1
ディレクトリを code Artifacts としてログに記録し、次のコマンドでジョブを起動します:
wandb launch --uri . --job-name hello-world-code --project launch-quickstart --entry-point "python main.py"
前述のコマンドは次のことを行います。
  1. 現在のディレクトリを、hello-world-code という名前のコード Artifacts としてログに記録します。
  2. launch-quickstart プロジェクトに、hello-world-code という名前のジョブを作成します。
  3. 現在のディレクトリと Launch のデフォルト Dockerfile を元にコンテナイメージをビルドします。デフォルトの Dockerfile は、requirements.txt に記載されたパッケージをインストールし、エントリーポイントを python main.py に設定します。

イメージ ジョブ

別の方法として、あらかじめ用意された Docker イメージから job を作成することもできます。これは、すでに ML コード用のビルド システムが確立されている場合や、その job のコードや要件を変更する予定はないが、ハイパーパラメーターや異なるインフラ規模で実験したい場合に便利です。 イメージは Docker レジストリからプルされ、指定されたエントリーポイント、または何も指定されていない場合はデフォルトのエントリーポイントで実行されます。--docker-image オプションに完全なイメージ タグを渡すことで、Docker イメージから job を作成して実行できます。 あらかじめ用意されたイメージから単純な job を実行するには、次のコマンドを使用します。
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           

自動ジョブ作成

W&B は、Launch を使って作成されていない run であっても、ソースコードが追跡されているすべての run に対して、自動的にジョブを作成して追跡します。次の 3 つの条件のいずれかを満たしている場合、その run はソースコードが追跡されていると見なされます。
  • run に関連付けられた Git のリモートとコミットハッシュがある。
  • run がコード Artifacts をログしている。Run.log_code を参照。
  • run が、WANDB_DOCKER 環境変数がイメージタグに設定された Docker コンテナ内で実行された。
W&B run によって Launch ジョブが自動的に作成される場合、Git リモート URL はローカルの Git リポジトリから推測されます。

Launch ジョブ名

デフォルトでは、W&B が自動的にジョブ名を生成します。ジョブ名は、ジョブの作成方法(GitHub、コード Artifacts 、Docker イメージ)に応じて決まります。別の方法として、環境変数または W&B Python SDK を使って Launch ジョブの名前を定義することもできます。 次の表は、ジョブのソースごとのデフォルトのジョブ名の命名規則を示します。
SourceNaming convention
GitHubjob-<git-remote-url>-<path-to-script>
Code artifactjob-<code-artifact-name>
Docker imagejob-<image-name>
W&B の環境変数または W&B Python SDK を使ってジョブに名前を付ける
WANDB_JOB_NAME 環境変数を希望するジョブ名に設定します。例:
WANDB_JOB_NAME=awesome-job-name
Docker イメージのジョブの場合、バージョン エイリアスが自動的にジョブのエイリアスとして追加されます。

コンテナ化

ジョブはコンテナ内で実行されます。イメージ ジョブは事前にビルドされた Docker イメージを使用し、Git ジョブとコード Artifacts ジョブではコンテナイメージのビルドステップが必要です。 ジョブのコンテナ化は、wandb launch への引数と、ジョブのソースコード内のファイルによってカスタマイズできます。

ビルドコンテキスト

ここで言う「ビルドコンテキスト」とは、コンテナイメージをビルドするために Docker デーモンに送信されるファイルおよびディレクトリのツリーを指します。デフォルトでは、Launch はジョブのソースコードのルートディレクトリをビルドコンテキストとして使用します。サブディレクトリをビルドコンテキストとして指定するには、ジョブを作成して起動する際に wandb launch--build-context 引数を使用します。
--build-context 引数は、複数のプロジェクトを含むモノレポジトリを参照する Git ジョブを扱う場合に特に便利です。サブディレクトリをビルドコンテキストとして指定することで、そのモノレポジトリ内の特定のプロジェクト用コンテナイメージをビルドできます。公式の W&B Launch jobs リポジトリで --build-context 引数を使用する方法については、上記の例を参照してください。

Dockerfile

Dockerfile は、Docker イメージをビルドするための手順を記述したテキストファイルです。デフォルトでは、Launch は requirements.txt ファイルをインストールする既定の Dockerfile を使用します。カスタム Dockerfile を使用するには、wandb launch--dockerfile 引数でファイルへのパスを指定します。 Dockerfile のパスはビルドコンテキストからの相対パスで指定します。たとえば、ビルドコンテキストが jobs/hello_world で、Dockerfile が jobs/hello_world ディレクトリ内にある場合、--dockerfile 引数には Dockerfile.wandb を指定します。公式の W&B Launch jobs リポジトリで --dockerfile 引数を使用する方法については、上記の例 を参照してください。

Requirements ファイル

カスタムの Dockerfile が指定されていない場合、Launch はインストールすべき Python の依存関係を探すためにビルドコンテキストを検索します。ビルドコンテキストのルートに requirements.txt ファイルが見つかった場合、Launch はそのファイルに記載されている依存関係をインストールします。requirements.txt がない場合に pyproject.toml ファイルが見つかれば、Launch は project.dependencies セクションから依存関係をインストールします。