Terms and concepts
W&B Launchでは、ジョブをキューにエンキューしてrunを作成します。ジョブはW&Bを使用して計測されたPythonスクリプトです。キューは実行すべきジョブのリストを保持し、ターゲットリソースで実行されます。エージェントはキューからジョブを引き出し、ターゲットリソース上でジョブを実行します。W&BはLaunchジョブを他のrunと同様に追跡します。
Launch job
Launchジョブは、完了すべきタスクを表す特定の種類のW&B Artifactです。例えば、一般的なLaunchジョブにはモデルのトレーニングやモデルの評価のトリガーがあります。ジョブの定義には以下が含まれます:
- Pythonコードおよびその他のファイルアセット、少なくとも1つの実行可能なエントリポイントを含む。
- 入力(configパラメータ)および出力(ログされたメトリクス)に関する情報。
- 環境に関する情報。(例:
requirements.txt
、基本のDockerfile
)
ジョブ定義には主に3種類あります:
Job types | Definition | How to run this job type |
---|---|---|
Artifact-based (またはcode-based) jobs | コードおよびその他のアセットはW&B Artifactとして保存されます。 | Artifact-based jobsを実行するには、Launchエージェントにビルダーを設定する必要があります。 |
Git-based jobs | コードおよびその他のアセットは、特定のコミット、ブランチ、またはタグからクローン化されます。 | Git-based jobsを実行するには、Launchエージェントにビルダーとgitリポジトリの資格情報を設定する必要があります。 |
Image-based jobs | コードおよびその他のアセットはDockerイメージに焼き付けられます。 | Image-based jobsを実行するには、Launchエージェントにイメージリポジトリの資格情報を設定する必要があります。 |
Launchジョブはモデルのトレーニングに関連しない活動も実行できます - 例えば、モデルをTriton推論サーバーにデプロイすることなど - ただし、すべてのジョブはwandb.init
を呼び出して完了する必要があります。これにより、W&Bワークスペースで追跡目的のためにrunが作成されます。
W&BアプリのプロジェクトワークスペースのJobs
タブで作成したジョブを確認できます。そこからジョブをlaunch queueに送って、様々なターゲットリソースで実行できます。
Launch queue
Launch キューは特定のターゲットリソースで実行するジョブの順序リストです。Launchキューは先入れ先出し(FIFO)です。キューの数に実質的な制限はありませんが、各ターゲットリソースごとに1つのキューを持つのが良いガイドラインです。ジョブはW&BアプリのUI、W&B CLI、またはPython SDKでエンキューされます。その後、1つ以上のLaunchエージェントを設定してキューからアイテムを引き出し、キューのターゲットリソースで実行させることができます。
Target resources
Launchキューがジョブを実行するために設定されたコンピュート環境をターゲットリソースと呼びます。
W&B Launchは以下のターゲットリソースをサポートしています:
各ターゲットリソースは、それぞれ異なる設定パラメータのセット(リソース構成)を受け入れます。リソース構成は、各Launchキューによって定義されたデフォルト値を取り、各ジョブによって独立して上書きすることができます。詳細は各ターゲットリソースのドキュメントを参照してください。
Launch agent
Launchエージェントは、Launchキューを定期的にチェックしてジョブを実行する軽量で持続性のあるプログラムです。Launchエージェントがジョブを受信すると、最初にジョブ定義からイメージをビルドまたはプルし、ターゲットリソース上で実行します。
1つのエージェントが複数のキューをポーリングすることができますが、エージェントはポーリングしている各キューのバックターゲットリソースをすべてサポートするように適切に設定する必要があります。
Launch agent environment
エージェント環境は、Launchエージェントがジョブをポーリングして実行する環境です。
エージェントの実行環境はキューのターゲットリソースから独立しています。つまり、エージェントは必要なターゲットリソースにアクセスできるように適切に設定されている限り、どこにでもデプロイできます。