Try in Colab
wandb launch コマンドを使用してジョブを作成および実行します。
実行のために送信せずにジョブを作成するには、
wandb job create コマンドを使用します。詳細については、コマンドリファレンスドキュメント を参照してください。Git ジョブ
ソースコードがリモートリポジトリにあり、Launch が特定のコミット、ブランチ、またはタグでそれをクローンする場合に、Git ベースのジョブを使用します。W&B Launch は、リモート Git リポジトリのコミット、ブランチ、またはタグからコードおよびその他の追跡されたアセットをクローンします。コードを含む URI を指定するには--uri または -u フラグを使用し、サブディレクトリを指定するにはオプションの --build-context フラグを使用します。
Git リポジトリから hello world ジョブを実行するには、次のコマンドを使用します:
- W&B Launch jobs リポジトリ を一時ディレクトリにクローンします。
helloproject にhello-world-gitという名前のジョブを作成します。このジョブは、リポジトリのデフォルトブランチの先頭にあるコミットに関連付けられます。jobs/hello_worldディレクトリとDockerfile.wandbからコンテナーイメージをビルドします。- コンテナーを起動し、
python job.pyを実行します。
hello-world project に再利用可能な Git ベースのジョブが作成され、他のユーザーまたはオートメーションが wandb launch で再実行できるようになります。
特定のブランチまたはコミットハッシュからジョブをビルドするには、-g、--git-hash 引数を追加します。引数の完全なリストについては、wandb launch --help を実行してください。
リモート URL の形式
Launch job に関連付けられた Git リモートは、HTTPS または SSH の URL のいずれかです。URL のタイプは、ジョブのソースコードを取得するために使用されるプロトコルを決定します。
なお、正確な URL の形式はホスティングプロバイダーによって異なります。
wandb launch --uri を使用して作成されたジョブは、指定された --uri で指定された転送プロトコルを使用します。
コードアーティファクトジョブ
ソースがリモートの Git リポジトリではなくローカルディレクトリにある場合に、コードアーティファクトジョブを使用します。W&B アーティファクトに保存されている任意のソースコードからジョブを作成できます。ローカルディレクトリを--uri または -u 引数で使用して、新しいコードアーティファクトとジョブを作成します。
開始するには、空のディレクトリを作成し、main.py という名前の Python スクリプトを次の内容で追加します:
requirements.txt というファイルに以下の内容を追加します:
- カレントディレクトリを
hello-world-codeという名前のコードアーティファクトとしてログします。 launch-quickstartproject にhello-world-codeという名前のジョブを作成します。- カレントディレクトリと Launch のデフォルトの Dockerfile からコンテナーイメージをビルドします。デフォルトの Dockerfile は
requirements.txtファイルをインストールし、エントリポイントをpython main.pyに設定します。
launch-quickstart project の再利用可能なジョブに関連付けられます。
Image ジョブ
あるいは、事前に作成された Docker image から ジョブ を構築することもできます。このアプローチは、ML コード用のビルドシステムをすでに持っている場合、または ジョブ のコードや要件を調整する予定はないが、ハイパーパラメーターや異なるインフラストラクチャースケールで実験したい場合に便利です。 Launch は Docker registry から image をプルし、指定されたエントリポイントで実行します。指定がない場合はデフォルトのエントリポイントを使用します。Docker image から ジョブ を作成して実行するには、完全なイメージタグを--docker-image オプションに渡します。
次のコマンドで、事前に作成された image から ジョブ を実行します:
ジョブの自動作成
wandb launch で明示的に作成するジョブに加えて、W&B は追跡されたコードの実行に伴う副作用としてジョブを作成できます。W&B は、追跡されたソースコードを持つ run に対して、Launch で作成されたものでなくても、自動的にジョブを作成して追跡します。以下の3つの条件のいずれかを満たす場合、run は追跡されたソースコードを持っていると見なされます:
- run に Git リモートとコミットハッシュが関連付けられている。
- run がコードアーティファクトをログしています。
Run.log_codeを参照してください。 - run が
WANDB_DOCKER環境変数がイメージタグに設定された Docker コンテナーで実行された。
Launch ジョブ名
デフォルトでは、W&B がジョブ名を自動的に生成します。名前はジョブの作成方法 (GitHub、コードアーティファクト、または Docker image) によって異なります。または、環境変数または W&B Python SDK を使用して Launch ジョブの名前を定義できます。 次の表は、ジョブソースに基づいてデフォルトで使用されるジョブ命名規則を説明しています。
W&B 環境変数または W&B Python SDK を使用してジョブに名前を付けます。
- 環境変数
- W&B Python SDK
希望するジョブ名に
WANDB_JOB_NAME 環境変数を設定します。例:Docker image ジョブの場合、W&B はバージョンのエイリアスをジョブのエイリアスとして自動的に追加します。
コンテナー化
ジョブはコンテナー内で実行されます。Image jobs は事前にビルドされた Docker image を使用しますが、Git およびコードアーティファクトのジョブはコンテナービルドステップを必要とします。wandb launch への引数やジョブのソースコード内のファイルを使用して、ジョブのコンテナー化をカスタマイズできます。以下のセクションでは、ビルドコンテキストの制御、カスタム Dockerfile の提供、Python の依存関係の管理方法について説明します。
Build context
「build context」という用語は、コンテナーイメージをビルドするために Docker デーモンに送信されるファイルとディレクトリのツリーを指します。デフォルトでは、Launch はジョブのソースコードのルートを build context として使用します。サブディレクトリを build context として指定するには、ジョブを作成して起動する際にwandb launch の --build-context 引数を使用します。
--build-context 引数は、複数の project を含む monorepo を参照する Git ジョブで作業する場合に便利です。サブディレクトリを build context として指定することで、monorepo 内の特定の project 用のコンテナーイメージをビルドできます。公式の W&B Launch jobs repository で --build-context 引数の使い方の実演を確認するには、Git ジョブ を参照してください。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 引数の使い方のデモについては、Git ジョブ を参照してください。
要件ファイル
カスタム Dockerfile が提供されていない場合、Launch は build context 内でインストールする Python dependencies を探します。build context のルートにrequirements.txt ファイルが見つかった場合、Launch はそのファイルにリストされた dependencies をインストールします。それ以外の場合は、pyproject.toml ファイルが見つかった場合、Launch は project.dependencies セクションから dependencies をインストールします。