> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Launch job を作成する

> Git リポジトリ、コードアーティファクト、または Docker image から W&B Launch job を `wandb launch` コマンドを使用して作成します。

<Card title="Try in Colab" href="https://colab.research.google.com/drive/1wX0OSVxZJDHRsZaOaOEDx-lLUrO1hHgP" icon="code" />

このページでは、W\&B Launch job の作成方法を説明します。これにより、必要に応じて W\&B run を再現できます。Launch job は W\&B run を再現するための設計図です。ジョブは W\&B Artifacts であり、ワークロードの実行に必要なソースコード、依存関係、および入力を取得します。

Git リポジトリ、ローカルのコードディレクトリ、または事前にビルドされた Docker image からワークロードをパッケージ化し、後で異なるパラメーターや異なるインフラストラクチャーで再実行したい場合に、このページを使用してください。

`wandb launch` コマンドを使用してジョブを作成および実行します。

<Note>
  実行のために送信せずにジョブを作成するには、`wandb job create` コマンドを使用します。詳細については、[コマンドリファレンスドキュメント](/ja/products/wandb/ref/cli/wandb-job/wandb-job-create) を参照してください。
</Note>

<h2 id="git-jobs">
  Git ジョブ
</h2>

ソースコードがリモートリポジトリにあり、Launch が特定のコミット、ブランチ、またはタグでそれをクローンする場合に、Git ベースのジョブを使用します。W\&B Launch は、リモート Git リポジトリのコミット、ブランチ、またはタグからコードおよびその他の追跡されたアセットをクローンします。コードを含む URI を指定するには `--uri` または `-u` フラグを使用し、サブディレクトリを指定するにはオプションの `--build-context` フラグを使用します。

Git リポジトリから hello world ジョブを実行するには、次のコマンドを使用します：

```bash theme={"system"}
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 リポジトリ](https://github.com/wandb/launch-jobs) を一時ディレクトリにクローンします。
2. `hello` project に `hello-world-git` という名前のジョブを作成します。このジョブは、リポジトリのデフォルトブランチの先頭にあるコミットに関連付けられます。
3. `jobs/hello_world` ディレクトリと `Dockerfile.wandb` からコンテナーイメージをビルドします。
4. コンテナーを起動し、`python job.py` を実行します。

コマンドの完了後、`hello-world` project に再利用可能な Git ベースのジョブが作成され、他のユーザーまたはオートメーションが `wandb launch` で再実行できるようになります。

特定のブランチまたはコミットハッシュからジョブをビルドするには、`-g`、`--git-hash` 引数を追加します。引数の完全なリストについては、`wandb launch --help` を実行してください。

<h3 id="remote-url-format">
  リモート URL の形式
</h3>

Launch job に関連付けられた Git リモートは、HTTPS または SSH の URL のいずれかです。URL のタイプは、ジョブのソースコードを取得するために使用されるプロトコルを決定します。

| リモート URL のタイプ | URL の形式 | アクセスと認証の要件 |
| - | - | - |
| HTTPS | `https://github.com/organization/repository.git` | Git リモートで認証するためのユーザー名とパスワード |
| SSH | `git@github.com:organization/repository.git` | Git リモートで認証するための SSH キー |

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

<h2 id="code-artifact-jobs">
  コードアーティファクトジョブ
</h2>

ソースがリモートの Git リポジトリではなくローカルディレクトリにある場合に、コードアーティファクトジョブを使用します。W\&B アーティファクトに保存されている任意のソースコードからジョブを作成できます。ローカルディレクトリを `--uri` または `-u` 引数で使用して、新しいコードアーティファクトとジョブを作成します。

開始するには、空のディレクトリを作成し、`main.py` という名前の Python スクリプトを次の内容で追加します:

```python theme={"system"}
import wandb

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

`requirements.txt` というファイルに以下の内容を追加します：

```text theme={"system"}
wandb>=0.17.1
```

ディレクトリをコードアーティファクトとしてログして、以下のコマンドでジョブを起動します：

```bash theme={"system"}
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` に設定します。

コマンドが完了すると、ローカルコードは W\&B のコードアーティファクトとして取得され、`launch-quickstart` project の再利用可能なジョブに関連付けられます。

<h2 id="image-jobs">
  Image ジョブ
</h2>

あるいは、事前に作成された Docker image から ジョブ を構築することもできます。このアプローチは、ML コード用のビルドシステムをすでに持っている場合、または ジョブ のコードや要件を調整する予定はないが、ハイパーパラメーターや異なるインフラストラクチャースケールで実験したい場合に便利です。

Launch は Docker registry から image をプルし、指定されたエントリポイントで実行します。指定がない場合はデフォルトのエントリポイントを使用します。Docker image から ジョブ を作成して実行するには、完全なイメージタグを `--docker-image` オプションに渡します。

次のコマンドで、事前に作成された image から ジョブ を実行します:

```bash theme={"system"}
wandb launch --docker-image "wandb/job_hello_world:main" --project "hello-world"           
```

<h2 id="automatic-job-creation">
  ジョブの自動作成
</h2>

`wandb launch` で明示的に作成するジョブに加えて、W\&B は追跡されたコードの実行に伴う副作用としてジョブを作成できます。W\&B は、追跡されたソースコードを持つ run に対して、Launch で作成されたものでなくても、自動的にジョブを作成して追跡します。以下の3つの条件のいずれかを満たす場合、run は追跡されたソースコードを持っていると見なされます：

* run に Git リモートとコミットハッシュが関連付けられている。
* run がコードアーティファクトをログしています。[`Run.log_code`](/ja/products/wandb/ref/python/experiments/run#log_code) を参照してください。
* run が `WANDB_DOCKER` 環境変数がイメージタグに設定された Docker コンテナーで実行された。

W\&B が W\&B run から Launch ジョブを自動的に作成する場合、W\&B はローカルの Git リポジトリから Git リモート URL を推測します。

<h3 id="launch-job-names">
  Launch ジョブ名
</h3>

デフォルトでは、W\&B がジョブ名を自動的に生成します。名前はジョブの作成方法 (GitHub、コードアーティファクト、または Docker image) によって異なります。または、環境変数または W\&B Python SDK を使用して Launch ジョブの名前を定義できます。

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

| ソース | 命名規則 |
| - | - |
| GitHub | `job-[GIT-REMOTE-URL]-[PATH-TO-SCRIPT]` |
| Code artifact | `job-[CODE-ARTIFACT-NAME]` |
| Docker image | `job-[IMAGE-NAME]` |

W\&B 環境変数または W\&B Python SDK を使用してジョブに名前を付けます。

<Tabs>
  <Tab title="環境変数">
    希望するジョブ名に `WANDB_JOB_NAME` 環境変数を設定します。例:

    ```bash theme={"system"}
    WANDB_JOB_NAME=awesome-job-name
    ```
  </Tab>

  <Tab title="W&B Python SDK">
    `wandb.Settings` を使用してジョブの名前を定義します。次に、`wandb.init()` で W\&B を初期化するときにこのオブジェクトを渡します。例:

    ```python theme={"system"}
    settings = wandb.Settings(job_name="my-job-name")
    wandb.init(settings=settings)
    ```
  </Tab>
</Tabs>

<Note>
  Docker image ジョブの場合、W\&B はバージョンのエイリアスをジョブのエイリアスとして自動的に追加します。
</Note>

<h2 id="containerization">
  コンテナー化
</h2>

ジョブはコンテナー内で実行されます。Image jobs は事前にビルドされた Docker image を使用しますが、Git およびコードアーティファクトのジョブはコンテナービルドステップを必要とします。

`wandb launch` への引数やジョブのソースコード内のファイルを使用して、ジョブのコンテナー化をカスタマイズできます。以下のセクションでは、ビルドコンテキストの制御、カスタム Dockerfile の提供、Python の依存関係の管理方法について説明します。

<h3 id="build-context">
  Build context
</h3>

「build context」という用語は、コンテナーイメージをビルドするために Docker デーモンに送信されるファイルとディレクトリのツリーを指します。デフォルトでは、Launch はジョブのソースコードのルートを build context として使用します。サブディレクトリを build context として指定するには、ジョブを作成して起動する際に `wandb launch` の `--build-context` 引数を使用します。

<Note>
  `--build-context` 引数は、複数の project を含む monorepo を参照する Git ジョブで作業する場合に便利です。サブディレクトリを build context として指定することで、monorepo 内の特定の project 用のコンテナーイメージをビルドできます。

  公式の W\&B Launch jobs repository で `--build-context` 引数の使い方の実演を確認するには、[Git ジョブ](#git-jobs) を参照してください。
</Note>

<h3 id="dockerfile">
  Dockerfile
</h3>

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 ジョブ](#git-jobs) を参照してください。

<h3 id="requirements-file">
  要件ファイル
</h3>

カスタム Dockerfile が提供されていない場合、Launch は build context 内でインストールする Python dependencies を探します。build context のルートに `requirements.txt` ファイルが見つかった場合、Launch はそのファイルにリストされた dependencies をインストールします。それ以外の場合は、`pyproject.toml` ファイルが見つかった場合、Launch は `project.dependencies` セクションから dependencies をインストールします。
