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

Launch ジョブの作成

LaunchジョブはW&B runsを再現するためのブループリントです。ジョブは、ワークロードを実行するために必要なソースコード、依存関係、および入力をキャプチャする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 repository を一時ディレクトリにクローンします。
  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 URL または SSH URL のいずれかです。URLのタイプはジョブソースコードを取得するプロトコルを決定します。

リモートURLタイプURL形式アクセスと認証の要件
httpshttps://github.com/organization/repository.gitgitリモートで認証するためのユーザー名とパスワード
sshgit@github.com:organization/repository.gitgitリモートで認証するためのsshキー

ホスティングプロバイダーによって正確なURL形式は異なることに注意してください。wandb launch --uri で作成したジョブは、指定された --uri に指定された転送プロトコルを使用します。

コードアーティファクトジョブ

JobsはW&B Artifactsに保存された任意のソースコードから作成できます。アーティファクトとジョブの新しいコードを作成するには、--uriまたは-u引数を使用してローカルディレクトリを指定します。

まず、空のディレクトリを作成し、次の内容のPythonスクリプトmain.pyを追加します:

import wandb

with wandb.init() as run:
run.log({"metric": 0.5})

次の内容のrequirements.txtファイルを追加します:

wandb>=0.17.1

次のコマンドでディレクトリをコードアーティファクトとしてログし、ジョブを開始します:

wandb launch --uri . --job-name hello-world-code --project launch-quickstart --entry-point "python main.py"

このコマンドは次のことを行います:

  1. 現在のディレクトリをhello-world-codeという名前のコードアーティファクトとしてログします。
  2. launch-quickstartプロジェクトにhello-world-codeという名前のジョブを作成します。
  3. 現在のディレクトリからLaunchのデフォルトDockerfileを使ってコンテナイメージをビルドします。デフォルトのDockerfileはrequirements.txtファイルをインストールし、エントリーポイントをpython main.pyに設定します。

イメージジョブ

もう一つの方法として、予め作成されたDockerイメージからジョブをビルドすることもできます。これは、MLコードのための既存のビルドシステムを持っている場合や、ハイパーパラメータや異なるインフラストラクチャースケールを使って実験したいが、コードや要件を調整する必要がない場合に便利です。

イメージはDockerレジストリからプルされ、指定されたエントリーポイント(指定されていない場合はデフォルトのエントリーポイント)で実行されます。Dockerイメージからジョブを作成および実行するために、--docker-imageオプションに完全なイメージタグを渡します。

以下のコマンドを使用して、プレメイドイメージからシンプルなジョブを実行します:

wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"

自動ジョブ作成

W&Bは、Launchで作成されていない場合でも、トラックされたソースコードを持つジョブを自動的に作成して追跡します。次の条件のいずれかを満たす場合、runsはトラックされたソースコードを持つとみなされます:

  • runに関連するgitリモートおよびコミットハッシュがある
  • コードアーティファクトをログした(詳細はRun.log_codeを参照)
  • WANDB_DOCKER環境変数がイメージタグに設定されたDockerコンテナでrunが実行された

LaunchジョブがW&B runによって自動的に作成された場合、GitリモートURLはローカルgitリポジトリから推測されます。

Launchジョブの名前

デフォルトでは、W&Bは自動的にジョブ名を生成します。名前はジョブの作成方法(GitHub、コードアーティファクト、またはDockerイメージ)に基づいて生成されます。代わりに、環境変数またはW&B Python SDKを使用してLaunchジョブの名前を定義することができます。

次の表は、ジョブソースに基づいてデフォルトで使用される命名規則について説明しています:

ソース命名規則
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やコードアーティファクトジョブはコンテナビルドステップが必要です。

ジョブのコンテナ化は、wandb launchの引数とジョブソースコード内のファイルでカスタマイズできます。

ビルドコンテキスト

ビルドコンテキストとは、コンテナイメージをビルドするためにDockerデーモンに送信されるファイルとディレクトリのツリーを指します。デフォルトでは、Launchはジョブソースコードのルートをビルドコンテキストとして使用します。サブディレクトリをビルドコンテキストとして指定するには、ジョブを作成および開始するときにwandb launch--build-context引数を使用します。

ヒント

--build-context引数は、複数のProjectsを持つモノリポを参照するGitジョブで作業する際に特に便利です。サブディレクトリをビルドコンテキストとして指定することで、モノリポ内の特定のProjectのためのコンテナイメージをビルドできます。

公式のW&B Launch jobs repositoryを使用した例については、上記の例を参照してください。

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 repositoryを使用した例については、上記の例を参照してください。

Requirementsファイル

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

Was this page helpful?👍👎