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

Colab で試す

Launch ジョブは、W&B Runs を再現するための設計図です。ジョブは、ワークロードの実行に必要なソースコード、依存関係、入力を含む W&B Artifacts です。 wandb launch コマンドを使用して、ジョブを作成および実行します。
実行のために送信せずにジョブを作成するには、wandb job create コマンドを使用します。詳細については、コマンド リファレンス ドキュメントを参照してください。

Git ジョブ

W&B Launch では、リモート Git リポジトリ内の特定のコミット、ブランチ、またはタグから、コードやそのほかの追跡対象アセットをクローンする Git ベースのジョブを作成できます。コードを含む URI は --uri または -u フラグで指定し、必要に応じて --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 project に 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 の転送プロトコルが使用されます。

コード 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
次のコマンドを実行して、ディレクトリをコードアーティファクトとしてログし、ジョブを起動します:
wandb launch --uri . --job-name hello-world-code --project launch-quickstart --entry-point "python main.py"
前述のコマンドは、次の処理を行います。
  1. 現在のディレクトリを、hello-world-code という名前のコードアーティファクトとしてログします。
  2. launch-quickstart project に、hello-world-code という名前のジョブを作成します。
  3. 現在のディレクトリと Launch のデフォルトの Dockerfile からコンテナーイメージをビルドします。デフォルトの Dockerfile では、requirements.txt ファイルがインストールされ、エントリポイントが python main.py に設定されます。

Image jobs

また、事前に作成した Docker image を基にジョブを build することもできます。これは、ML コード向けの確立された build システムがすでにある場合や、ジョブのコードや requirements を調整する予定はないものの、ハイパーパラメーターや異なるインフラストラクチャー規模で experiment したい場合に便利です。 image は Docker Registry から pull され、指定された entry point、指定がない場合はデフォルトの entry point で run されます。--docker-image オプションに完全な image tag を渡すと、Docker image からジョブを作成して run できます。 事前に作成した image から simple なジョブを run するには、次のコマンドを使用します。
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           

ジョブの自動作成

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

Launch ジョブ名

デフォルトでは、W&B がジョブ名を自動的に生成します。この名前は、ジョブの作成方法 (GitHub、Code artifact、または Docker image) に応じて生成されます。必要に応じて、環境変数または 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 image ジョブでは、version alias がジョブの alias として自動的に追加されます。

コンテナー化

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

ビルドコンテキスト

ビルドコンテキストとは、コンテナーイメージをビルドするために Docker デーモンに送信されるファイルとディレクトリーのツリーを指します。デフォルトでは、Launch はジョブのソースコードのルートをビルドコンテキストとして使用します。ビルドコンテキストとしてサブディレクトリーを指定するには、ジョブを作成して起動する際に wandb launch--build-context 引数を使用します。
--build-context 引数は、複数の Projects を含むモノレポを参照する Git ジョブを扱う場合に特に便利です。ビルドコンテキストとしてサブディレクトリーを指定すると、モノレポ内の特定の project 向けのコンテナーイメージをビルドできます。公式の 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 ジョブリポジトリで --dockerfile 引数をどのように使用するかについては、上記の例を参照してください。

Requirements file

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