# 設定

## 認証

Jobs を実行するには、`hf auth login` による認証が必要です。また、Jobs の開始と管理に権限を持つトークンを使用してください。

代わりに、CLIでは`--token`を、Pythonでは`token`引数を指定して、Hugging Face トークンを手動で渡すこともできます。

## 引数の渡し方

`--` を使用して、Jobs のオプションとコマンドまたはスクリプトとその引数を区切ります。`--` の後にあるオプション（`--help` や `--timeout` など）は、Jobs によって解釈されるのではなく、そのまま渡されます。これは UV Jobs と Docker Jobs の両方に適用されます。

```text
hf jobs uv run --flavor t4-small -- script.py --early-stopping-patience 3
               └─ Jobs option ┘    └─ script + arguments ─────────────┘
```

## UV Jobs

UVと同様に、実行するUVスクリプトまたはpythonコマンドを指定します:

```bash
>>> hf jobs uv run train.py
```

```bash
>>> hf jobs uv run python -c 'print("Hello from the cloud!")'
```

`hf jobs uv run` コマンドは、`--with` や `--python` のような UV 引数を受け入れます。`--with` 引数で Python の依存関係を指定でき、`--python` で使用する Python のバージョンを選択できます:

```bash
>>> hf jobs uv run --with trl train.py
>>> hf jobs uv run --python 3.12 train.py
```

例えば、`--` を使用してコマンドに引数を渡します:

```bash
>>> hf jobs uv run --with trl-jobs -- trl-jobs sft --model_name Qwen/Qwen3-0.6B --dataset_name trl-lib/Capybara
```

[CLI ドキュメント](https://huggingface.co/docs/huggingface_hub/package_reference/cli#hf-jobs-uv-run)と[UV Commands ドキュメント](https://docs.astral.sh/uv/reference/cli/#uv-run)で、すべての引数のリストを確認してください。

デフォルトでは、UV Jobsは`ghcr.io/astral-sh/uv:python3.12-bookworm` Dockerイメージで実行されますが、`--image <docker-image>` を使用して、UVがインストールされている別のイメージを指定できます。

イメージの選択方法や、その環境がUVの依存関係とどのように相互作用するかを理解するには、[Dockerイメージの使用](./jobs-images#use-an-image-with-uv)を参照してください。

### スクリプト内で起動設定を定義します

特定のランタイム（特定のイメージ、GPUの種類、システムインタプリタなど）でのみ正しく実行されるスクリプトは、その設定をPEP 723ヘッダーの任意の`[tool.hf-jobs]`テーブルに含めることができます。

```python
# /// script
# requires-python = ">=3.11"
# dependencies = ["vllm", "datasets"]
#
# [tool.hf-jobs]
# image   = "vllm/vllm-openai:unlimited-ocr"
# flavor  = "l4x1"
# python  = "/usr/bin/python3"
# secrets = ["HF_TOKEN"]
# ///
```

`hf jobs uv run ocr.py` を実行すると、そのイメージとハードウェアで起動します。単に `uv run` を実行する場合は、テーブルは無視されます。これは、`[tool.*]` テーブルは PEP 723 の一部であり、ツールは自分が管理していないテーブルをスキップするからです。

サポートされるキーはすべてオプションです: `image`、`flavor`、`python`、`timeout`、`name`、`namespace`、`env`、`secrets`、`labels`、`volumes`、`network_group`、`network_aliases`。これらは同名のフラグに対応します。スクリプト内の値はデフォルトとして機能します。明示的に指定されたフラグが常に優先され、`env`、`secrets`、`labels`、`volumes` はエントリごとにマージされるため、`-e` と `-v` はスクリプトで宣言された内容に追加されます。不明なキーはエラーとなり、`secrets` は名前のみを列挙します。値はスクリプトを実行するユーザーの環境から取得され、ローカルで設定されていないシークレットもエラーとなります。

`--dry-run` を使用すると、送信せずに解決された設定を出力できます。スクリプト由来の値には`(from script)`のマークが付きます。マージ規則の詳細については、[`hf` CLI ガイド](https://huggingface.co/docs/huggingface_hub/guides/cli#ship-the-launch-config-with-the-script)を参照してください。

> [!WARNING]
> このテーブルは`hf` CLIによってのみ読み取られます。`run_uv_job()`および`create_scheduled_uv_job()`はこれを無視するため、Pythonからは`image=`、`flavor=`などを明示的に渡してください。

## Docker Jobs

Dockerと同様に、使用するDockerイメージと実行するコマンドを指定します:

```bash
>>> hf jobs run ubuntu echo "Hello from the cloud!"
```

ここでは、`--help`はJobsのヘルプを表示するのではなく、Pythonに渡されます:

```bash
>>> hf jobs run --flavor cpu-basic python:3.12 -- python --help
```

[CLI ドキュメント](https://huggingface.co/docs/huggingface_hub/package_reference/cli#hf-jobs-run)で、すべての引数のリストを確認できます。

既存のイメージやDocker Spacesによってビルドされたイメージを使用する例については、[Dockerイメージの使用](./jobs-images)を参照してください。

## 環境変数とシークレット

### 組み込みの環境変数

Spacesの[組み込み環境変数](./spaces-overview#built-in-environment-variables)と同様に、Jobsはコンテナ内で自動的に以下の環境変数を提供します:

| 変数 | 説明 |
|----------|-------------|
| `JOB_ID` | 現在のジョブの一意な識別子（例: `699d874f1aad19adb8aaeadc`）です。これはUIおよびジョブのURLに表示されるIDと同じものです。 |
| `ACCELERATOR` | 利用可能なアクセラレーターの種類（例: `t4-medium`、`a10g-small`、`a100x4`）、または CPU のみのジョブの場合は `none`。 |
| `CPU_CORES` | ジョブに割り当てられるCPUコアの数。 |
| `MEMORY` | ジョブに割り当てられるメモリ量（例: `8Gi`）。 |
| `HF_NETWORK_GROUP_HOSTNAME` | ジョブの[ネットワークグループ](#network-groups)内のすべてのジョブに解決されるホスト名。ジョブがネットワークグループを宣言した場合にのみ設定されます。 |
| `HF_NETWORK_GROUP_PREFIX` | グループメンバーが主張しているエイリアスのホスト名を取得するために、エイリアスの先頭に付加するプレフィックスです（例: `${HF_NETWORK_GROUP_PREFIX}master`）。ジョブがネットワークグループを宣言した場合にのみ設定されます。 |

これらの変数を使用して、出力を追跡したり、利用可能なリソースに合わせてコードを調整したり、現在のジョブをプログラム的に参照したりできます。

```bash
# Access job environment information
>>> hf jobs run python:3.12 python -c "import os; print(f'Job: {os.environ.get(\"JOB_ID\")}, CPU: {os.environ.get(\"CPU_CORES\")}, Mem: {os.environ.get(\"MEMORY\")}')"
```

### ユーザー定義の環境変数

…を使用して、ジョブに環境変数を渡すことができます

```bash
# Pass environment variables
>>> hf jobs uv run -e FOO=foo -e BAR=bar python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'
```

```bash
# Pass an environment from a local .env file
>>> hf jobs uv run --env-file .env python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'
```

```bash
# Pass secrets - they will be encrypted server side
>>> hf jobs uv run -s MY_SECRET=psswrd python -c 'import os; print(os.environ["MY_SECRET"])'
```

```bash
# Pass secrets from a local .env.secrets file - they will be encrypted server side
>>> hf jobs uv run --secrets-file .env.secrets python -c 'import os; print(os.environ["MY_SECRET"])'
```

> [!TIP]
> `--secrets HF_TOKEN` を使用すると、ローカルの Hugging Face トークンを暗黙的に渡すことができます。この構文では、シークレットは環境変数から取得されます。`HF_TOKEN` の場合、環境変数が設定されていない場合、Hugging Face ホームフォルダ内のトークンファイルからトークンを読み取ることがあります。

## ボリューム

Hugging Face リポジトリ（モデル、データセット）、[Storage Buckets](./storage-buckets)、またはローカルディレクトリを、`-v` または `--volume` を使用してジョブコンテナにボリュームとしてマウントできます。Hub ソースには `hf://` URL スキームを使用します: `hf://[TYPE/]SOURCE:/MOUNT_PATH[:ro]`。ローカルディレクトリはソースとして直接指定します。

> [!TIP]
> マウントされたファイルは遅延取得されるため、マウントを使用すると、Jobはローカルディスクよりもはるかに大きなデータセットを扱うことができます。Jobでのマウント、ストリーミング、およびビッグデータの処理については、[大規模データセットの処理](./jobs-large-datasets)を参照してください。

ボリュームの種類:

| 型 | 例 |
|------|---------|
| モデルリポジトリ | `-v hf://openai/gpt-oss-120b:/model` |
| Datasetリポジトリ | `-v hf://datasets/stanfordnlp/imdb:/data` |
| ストレージバケット | `-v hf://buckets/username/my-bucket:/mnt` |
| サブフォルダ | `-v hf://datasets/org/my-dataset/train:/data` |
| ローカルディレクトリ | `-v ./training-data:/data` |

次に、マウントされたボリュームをコンテナ内のローカルディレクトリとして使用します:

```bash
# Mount a dataset and query it with DuckDB
>>> hf jobs run -v hf://datasets/stanfordnlp/imdb:/dataset \
...     duckdb/duckdb duckdb -c "SELECT * FROM '/dataset/**/*.parquet' LIMIT 5"

# Mount a bucket to save training checkpoints
>>> hf jobs uv run -v hf://buckets/username/my-bucket:/training-outputs \
...     sft.py --output-dir /training-outputs/training-v3-final
```

`-v` フラグを繰り返すことで、複数のボリュームをマウントできます:

```bash
>>> hf jobs run -v hf://datasets/username/my-dataset:/data -v hf://buckets/username/my-bucket:/output \
...     python:3.12 python script.py
```

モデルとデータセットは常に**読み取り専用**でマウントされます。ストレージバケットはデフォルトで**読み書き可能**であり、出力、チェックポイント、中間結果の保存に便利です。`:ro`を使用してバケットを読み取り専用モードでマウントします:

```bash
>>> hf jobs run -v hf://buckets/username/my-bucket:/mnt:ro python:3.12 ls /mnt
```

### ローカルディレクトリ

ローカルディレクトリをソースとして渡すと、Job の開始前に、自動的に作成されるプライベートな `jobs-artifacts` [Storage Bucket](./storage-buckets) に同期され、その後コンテナにマウントされます。ローカルディレクトリはデフォルトで**読み取り専用**でマウントされます。出力を書き込むには `:rw` を使用してください:

```bash
>>> hf jobs uv run -v ./pdfs:/input -v ./md-out:/output:rw ocr.py
```

同じディレクトリを再同期しても、新規または変更されたファイルのみがアップロードされます。Job が読み書き可能なボリュームに書き込んだファイルを取得するには、Job の終了後にそのバケットフォルダを同期して戻します。Job の開始時に、CLI が正確な `hf buckets sync` コマンドを出力します。スケジュールされた Job も動作します。スケジュールが作成された時点でディレクトリが一度同期され、以降の各トリガーで同じフォルダがマウントされます。Python では、[`sync_job_volume`](https://huggingface.co/docs/huggingface_hub/guides/jobs#mount-local-data) を使用します。

Pythonでは、[`Volume`](https://huggingface.co/docs/huggingface_hub/package_reference/jobs#huggingface_hub.Volume)クラスを使用します:

```python
from huggingface_hub import Volume, run_job

job = run_job(
    image="python:3.12",
    command=["python", "-c", "import os; print(os.listdir('/data'))"],
    volumes=[
        Volume(type="dataset", source="username/my-dataset", mount_path="/data"),
        Volume(type="bucket", source="username/my-bucket", mount_path="/output"),
    ],
)
```

> [!NOTE]
> ボリュームマウントには`huggingface_hub` >= 1.8.0 が必要です。詳細については、[Python クライアントのドキュメント](https://huggingface.co/docs/huggingface_hub/guides/jobs#mount-a-volume)および[インストールガイド](https://huggingface.co/docs/huggingface_hub/installation)を参照してください。

## ハードウェアの種類

`flavor` 引数を使用して、GPU または TPU でジョブを実行できます。例えば、A10G GPU で PyTorch ジョブを実行するには:

```bash
>>> hf jobs uv run --with torch --flavor a10g-small python -c "import torch; print(f'This code ran with the following GPU: {torch.cuda.get_device_name()}')"
```

これを実行すると、以下の出力が表示されます！

```
This code ran with the following GPU: NVIDIA A10G
```

[trl/scripts/sft.py](https://github.com/huggingface/trl/blob/main/trl/scripts/sft.py) のようなファインチューニングスクリプトを実行する別の例を以下に示します。

```bash
>>> hf jobs uv run --with trl --flavor a10g-small -s HF_TOKEN -- sft.py --model_name_or_path Qwen/Qwen2-0.5B ...
```

> [!TIP]
> Hugging Face のインフラストラクチャ上で TRL を使用してモデルの学習ジョブを実行するための包括的なガイドについては、[TRL Jobs Training のドキュメント](https://huggingface.co/docs/trl/main/en/jobs_training)を参照してください。ファインチューニングのレシピ、ハードウェアの選択、モデルを効率的に学習するためのベストプラクティスについて解説しています。

`hf jobs hardware` コマンドを使用して、利用可能な `--flavor` オプションのリストを確認できます（デフォルトは `cpu-basic`）:

```bash
>>> hf jobs hardware
name             pretty name             cpu       ram      storage   accelerator               cost/min  cost/hour
cpu-basic        CPU Basic               2 vCPU    16 GB    50 GB                               $0.0002   $0.01
cpu-upgrade      CPU Upgrade             8 vCPU    32 GB    50 GB                               $0.0005   $0.03
cpu-performance  CPU Performance         32 vCPU   256 GB   1024 GB                             $0.0317   $1.90
cpu-xl           CPU XL                  16 vCPU   124 GB   1000 GB                             $0.0167   $1.00
t4-small         Nvidia T4 - small       4 vCPU    15 GB    50 GB     1x T4 (16 GB)             $0.0067   $0.40
t4-medium        Nvidia T4 - medium      8 vCPU    30 GB    100 GB    1x T4 (16 GB)             $0.0100   $0.60
a10g-small       Nvidia A10G - small     4 vCPU    15 GB    110 GB    1x A10G (24 GB)           $0.0167   $1.00
a10g-large       Nvidia A10G - large     12 vCPU   46 GB    200 GB    1x A10G (24 GB)           $0.0250   $1.50
a10g-largex2     2x Nvidia A10G - large  24 vCPU   92 GB    1000 GB   2x A10G (48 GB)           $0.0500   $3.00
a10g-largex4     4x Nvidia A10G - large  48 vCPU   184 GB   2000 GB   4x A10G (96 GB)           $0.0833   $5.00
a100-large       Nvidia A100 - large     12 vCPU   142 GB   1000 GB   1x A100 (80 GB)           $0.0417   $2.50
a100x4           4x Nvidia A100          48 vCPU   568 GB   4000 GB   4x A100 (320 GB)          $0.1667   $10.00
a100x8           8x Nvidia A100          96 vCPU   1136 GB  8000 GB   8x A100 (640 GB)          $0.3333   $20.00
h200             Nvidia H200             23 vCPU   256 GB   3000 GB   1x H200 (141 GB)          $0.0833   $5.00
h200x2           Nvidia H200             46 vCPU   512 GB   6000 GB   2x H200 (282 GB)          $0.1667   $10.00
h200x4           Nvidia H200             92 vCPU   1024 GB  12000 GB  4x H200 (564 GB)          $0.3333   $20.00
h200x8           Nvidia H200             184 vCPU  2048 GB  24000 GB  8x H200 (1128 GB)         $0.6667   $40.00
rtx-pro-6000     Nvidia RTX PRO 6000     23 vCPU   256 GB   475 GB    1x RTX PRO 6000 (96 GB)   $0.0458   $2.75
rtx-pro-6000x2   Nvidia RTX PRO 6000     46 vCPU   512 GB   950 GB    2x RTX PRO 6000 (192 GB)  $0.0917   $5.50
rtx-pro-6000x4   Nvidia RTX PRO 6000     92 vCPU   1024 GB  1900 GB   4x RTX PRO 6000 (384 GB)  $0.1833   $11.00
rtx-pro-6000x8   Nvidia RTX PRO 6000     184 vCPU  2048 GB  3800 GB   8x RTX PRO 6000 (768 GB)  $0.3667   $22.00
l4x1             1x Nvidia L4            8 vCPU    30 GB    400 GB    1x L4 (24 GB)             $0.0133   $0.80
l4x4             4x Nvidia L4            48 vCPU   186 GB   3200 GB   4x L4 (96 GB)             $0.0633   $3.80
l40sx1           1x Nvidia L40S          8 vCPU    62 GB    380 GB    1x L40S (48 GB)           $0.0300   $1.80
l40sx4           4x Nvidia L40S          48 vCPU   382 GB   3200 GB   4x L40S (192 GB)          $0.1383   $8.30
l40sx8           8x Nvidia L40S          192 vCPU  1534 GB  6500 GB   8x L40S (384 GB)          $0.3917   $23.50
```

## ポートを公開する

ジョブは、`--expose <port>`（CLI）または `expose=[<port>]`（Python API）を使用して、パブリックなジョブプロキシ経由でコンテナポートを公開できます。公開された各ポートは `https://<job_id>--<port>.hf.jobs` でアクセス可能であり、ジョブのネームスペースに対する `read` アクセス権限を持つ HF トークンが必要です。

```bash
curl -H "Authorization: Bearer $HF_TOKEN" https://<job_id>--<port>.hf.jobs/
```

この機能は`hf jobs run`、`hf jobs uv run`、およびそれらのスケジュール実行バリアントで動作します。フラグを繰り返すことで複数のポートを公開できます（`--expose 8000 --expose 8001`）、またはリストに複数のポートを指定します（`expose=[8000, 8001]`）。

HF トークンなしでポートを到達可能にするには、代わりに `--expose-public <port>`（CLI）または `expose_public=[<port>]`（Python API）を使用してください。これにより、URL を知っている誰でもそのポートに到達できるようになるため、共有しても安全なサービスでのみ使用してください。両方のオプションを組み合わせることも可能です。その場合、一部のポートは HF トークンが必要になり、他のポートは公開されます。

> [!NOTE]
> 公開されたポートは、ジョブの実行中のみ、ジョブのハードウェア料金に加えて、わずかな定額時間料金として課金されます。詳細は[料金ページ](./jobs-pricing)を参照してください。

### CLI

```bash
# Expose a web server running on port 8000
>>> hf jobs run --expose 8000 python:3.12 python -m http.server 8000
✓ Job started
  id: 6a2aa7cec4f53f9fc5aa4cff
  url: https://huggingface.co/jobs/Wauplin/6a2aa7cec4f53f9fc5aa4cff
Hint: Exposed ports are reachable at (requires an HF token with read access to the job):
  https://6a2aa7cec4f53f9fc5aa4cff--8000.hf.jobs
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
```

### Python

```python
>>> from huggingface_hub import run_job
>>> job = run_job(image="python:3.12", command=["python", "-m", "http.server", "8000"], expose=[8000])
>>> job.status.expose_urls
['https://6a2ab384c4f53f9fc5aa4d4f--8000.hf.jobs']
```

### 実行中のJobのポートを変更する

`hf jobs expose` を使用すると、Job を再起動せずに公開するポートを変更できます:

```bash
# Expose port 8000 (requires an HF token)
>>> hf jobs expose <job_id> 8000

# Expose port 8000 (requires an HF token) and port 9000 publicly
>>> hf jobs expose <job_id> 8000 --public 9000

# Close all exposed ports
>>> hf jobs expose <job_id> --clear
```

このコマンドは公開ポートのリスト全体を置き換えるため、リストから除外したポートは閉じられます。Python では `update_job_expose` を使用します。

## SSH

実行中のJobに対してインタラクティブなSSHセッションを開き、デバッグ、検査、またはコンテナ内で直接作業を行うことができます。Jobの作成時に`--ssh`（CLI）または`ssh=True`（Python API）でこれを有効にし、`hf jobs ssh <job_id>`で接続します。

JobのnamespaceへのWriteアクセス権限を持つユーザーのみが許可されます（つまり、Jobの作成者、またはWrite権限を持つオーナー組織のメンバー）。認証は、[https://huggingface.co/settings/keys](https://huggingface.co/settings/keys)に登録されたSSH公開鍵によって行われます。

SSHは`hf jobs run`および`hf jobs uv run`で利用可能です。スケジュールされたジョブではサポートされていません。

### CLI

```bash
# Start a job with SSH enabled
>>> hf jobs run --ssh --detach --timeout 10m python:3.12 sleep infinity
✓ Job started
  id: 6a2bd1f1871c005b5352ad31
  url: https://huggingface.co/jobs/Wauplin/6a2bd1f1871c005b5352ad31
Hint: Use `hf jobs ssh 6a2bd1f1871c005b5352ad31` to open an SSH session into the job.

# Open an SSH session into the job
>>> hf jobs ssh 6a2bd1f1871c005b5352ad31
```

実行せずにSSHコマンドを出力することもできます（`--dry-run`）。また、特定のidentity fileを渡すこともできます（`-i`/`--identity-file`）：

```bash
>>> hf jobs ssh 6a2bd1f1871c005b5352ad31 --dry-run
ssh 6a2bd1f1871c005b5352ad31@ssh.hf.jobs

>>> hf jobs ssh 6a2bd1f1871c005b5352ad31 -i ~/.ssh/id_ed25519
```

### Python

```python
>>> from huggingface_hub import run_job
>>> job = run_job(image="python:3.12", command=["sleep", "infinity"], ssh=True)
>>> job.status.ssh_url
'ssh://6a2bd1f1871c005b5352ad31@ssh.hf.jobs'
```

次に、ターミナルから`hf jobs ssh <job_id>`で接続するか、`ssh <job_id>@ssh.hf.jobs`で直接接続します。

### ポートフォワーディング

これは通常の SSH 接続であるため、SSH の `-L` および `-R` フラグを使用して、お使いのマシンと Job の間でポートを転送できます。`ssh` を直接使用し（正確な接続先を取得するには `hf jobs ssh <job_id> --dry-run` を使用してください）、転送フラグを追加してください。

`-L`（ローカルフォワーディング）を使用して、マシンからJob内で実行されているサービスにアクセスします。例えば、トレーニングJobで起動したTensorBoardに到達するには:

```bash
# Forward local port 6006 to the Job's TensorBoard on port 6006
>>> ssh -L 6006:localhost:6006 6a2bd1f1871c005b5352ad31@ssh.hf.jobs
```

次に、ブラウザで[http://localhost:6006](http://localhost:6006)を開きます。

`-R`（リモートフォワーディング）を使用すると、Jobがあなたのマシンで実行されているサービスにアクセスできるようになります。例えば、ローカルのデータベースやAPIをJobに公開するには:

```bash
# Make your local port 8080 reachable from inside the Job on port 8080
>>> ssh -R 8080:localhost:8080 6a2bd1f1871c005b5352ad31@ssh.hf.jobs
```

## ネットワークグループ

ジョブは、`--network-group <name>`（CLI）または`network_group="<name>"`（Python API）を使用してネットワークグループに参加できます。同じ namespace とリソースグループ内でグループを共有するジョブは、すべてのポートで相互に到達できます。`HF_NETWORK_GROUP_HOSTNAME` はすべてのメンバーに解決され、`${HF_NETWORK_GROUP_PREFIX}<alias>` は`--network-alias <alias>`（CLI）または`network_aliases=[<alias>]`（Python API）でエイリアスを取得したメンバーに解決されます。

これは`hf jobs run`および`hf jobs uv run`で動作します。メンバーは準備が整う前に解決可能であるため、リトライを伴って接続してください。グループ名とエイリアスは小文字の英数字とダッシュのみで、最大46文字および34文字です。ジョブのエイリアスは一意である必要があります。

### CLI

```bash
# Start a server, reachable by the other members of the group as "master"
>>> hf jobs run --detach --network-group train --network-alias master python:3.12 python -m http.server 8000

# Start a client in the same group
>>> hf jobs run --detach --network-group train python:3.12 sh -c 'curl --retry 10 --retry-connrefused "http://${HF_NETWORK_GROUP_PREFIX}master:8000/"'
```

### Python

```python
>>> from huggingface_hub import run_job
>>> server = run_job(
...     image="python:3.12",
...     command=["python", "-m", "http.server", "8000"],
...     network_group="train",
...     network_aliases=["master"],
... )
>>> client = run_job(
...     image="python:3.12",
...     command=["sh", "-c", 'curl --retry 10 --retry-connrefused "http://${HF_NETWORK_GROUP_PREFIX}master:8000/"'],
...     network_group="train",
... )
```

マルチノードの学習フレームワークでは、レンデブーホストとしてエイリアスを使用できます。例: `torchrun --master_addr "${HF_NETWORK_GROUP_PREFIX}master"`

## タイムアウト

ジョブにはデフォルトのタイムアウト（30分）が設定されており、これを過ぎると自動的に停止します。モデルの学習など、長時間実行されるタスクを実行する際には、この点を理解しておくことが重要です。

ジョブの実行時に`--timeout`パラメータを使用して、カスタムのタイムアウト値を指定できます。タイムアウトは2つの方法で指定できます。

1. **数値として**（秒として解釈されます）：

`--timeout` を使用し、秒数（ここでは2時間 = 7200秒）を指定します:

```bash
>>> hf jobs uv run --timeout 7200 --with torch --flavor a10g-large train.py
```

2. **時間単位付きの文字列として**:

または、`--timeout` を使用して、異なる時間単位を指定します:

```bash
>>> hf jobs uv run --timeout 2h --with torch --flavor a10g-large train.py
```

その他の例:

```bash
--timeout 30m    # 30 minutes
--timeout 1.5h   # 1.5 hours
--timeout 1d     # 1 day
--timeout 3600s  # 3600 seconds
```

サポートされている時間単位:
- `s` - 秒
- `m` - 分
- `h` - 時間
- `d` - 日

> [!WARNING]
> タイムアウトを指定しない場合、ジョブにはデフォルトのタイムアウトが適用されます。数時間かかる可能性のあるモデルの学習などの長時間実行タスクでは、予期しないジョブの終了を避けるために、適切なタイムアウトを設定してください。

## リトライ

デフォルトでは、Job は1回だけ実行されます。失敗した Job を再試行するには、`--attempts <n>`（CLI）または `attempts=<n>`（Python API）を使用します。この数値には初回の実行が含まれるため、`--attempts 3` を指定すると、最大2回の再試行が可能になります。

```bash
>>> hf jobs uv run --attempts 3 --flavor a10g-large train.py
```

これは`hf jobs run`、`hf jobs uv run`、およびそれらのスケジュール実行バリアントで動作します。

リトライは、同じ Job ID の下でコマンドを最初から再実行します。リトライが前回の試行で停止した箇所から再開できるようにするには、マウントされたバケットにチェックポイントを保存し、スクリプトがそれらから再開するようにしてください。Train Models on Jobs の [After it ends](./jobs-training#after-it-ends) を参照してください。

## 名前空間

`--namespace` 引数を使用して、組織アカウントの下でジョブを実行します。組織アカウントの下でジョブの開始と管理の権限を持つトークンでログインしていることを確認してください。

```bash
>>> hf jobs uv run --namespace my-org-name python -c "print('Running in an org account')"
```

適切な権限を持つトークンを手動で渡すこともできます。

```bash
>>> hf jobs uv run --namespace my-org-name --token hf_xxx python -c "print('Running in an org account')"
```

## ラベル

`-l` または `--label` を使用して、Job に1つ以上のラベルを追加し、メタデータを付与できます。このメタデータは、後でウェブサイトやCLI上で Job をフィルタリングするために使用できます。

`--label my-label` でラベルを追加するか、`--label key=value` でキーと値のラベルを追加します。キーと値には、英字、数字、`-`、`_` を含めることができます。例:

```bash
hf jobs uv run --label fine-tuning --label model=Qwen3-06B --label dataset=Capybara ...
```

同じ`key`を複数回使用すると、最後の`key=value`が`key`を持つ以前のラベルを上書きして破棄することに注意してください。

### ジョブに名前を付ける

UI上でJobを見つけやすく識別しやすくするために、Jobに名前を付けます。名前は`name`ラベルとして保存され、一意である必要はありません。UIでは、Jobは名前でグループ化されます。

```bash
hf jobs run --name daily-report python:3.12 python report.py
```

`--name` を指定しない場合、Job はその Docker イメージまたはスクリプトの名前と、コマンドの短いハッシュ値からなる名前が付けられます。これにより、同じコマンドの再実行では同じ名前が共有され、異なるコマンドには異なる名前が付けられます（例: `python:3.12` で実行される Job に対して `python-3-12-6b9d662c` が付けられる）。

### ラベルを更新

`hf jobs labels` を使用して、既存の Job のラベルを更新します。`--label` を渡すと既存のラベルがすべて置き換えられ、`--name` のみを渡すとラベルは保持されます。

```bash
# Replace the labels on a Job
hf jobs labels <job_id> --label env=prod --label team=ml

# Name an existing Job (keeps its other labels)
hf jobs labels <job_id> --name daily-report

# Remove all labels from a Job
hf jobs labels <job_id> --clear
```

