ワークロード YAML リファレンス
ベータ版
AI Runtime CLI は ベータ版です。
本ページは、air run --file に渡されるワークロード YAML 構成の参照情報です。
YAML構成の正解はCLIヘルプです。トップレベルビューに対してair -h configを実行し、セクションごとの詳細に対してair -h config.<section>(たとえば、air -h config.environment)を実行します。
最小限の構成
experiment_name: my-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
送信方法:
air run --file train.yaml -p profile
基本概念
コア項目
ほとんどのトレーニング構成には、5つのコンポーネントが含まれます。
experiment_name必須。MLflowエクスペリメントを作成または追加します。environment:オプション。Python の依存関係とベース環境compute必須。GPUリソース(タイプと数)command必須。トレーニングの起動に使用されるbashコマンド。code_source:オプション。リモートでアクセスできるトレーニングコードのパス。
初めてのトレーニングジョブ
experiment_name: simple-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/train.py
この構成では:
experiment_namesimple-trainingという名前のMLflowエクスペリメントを作成します(または、既に存在する場合は新しい実行を追加します)。environmentrequirements.yamlから依存関係をインストールします。computeH100ノードを1つ割り当てます(H100 GPU 8基)。code_sourceフォルダrepoをノードにアップロードし、$CODE_SOURCE_PATHで利用可能です。commandtrain.pyをtorchrun経由で 8基のH100 GPUで実行します。/home/username/repo/train.pyにローカルにあります。
一般的なユースケース
環境変数を追加
experiment_name: training-with-env
environment:
dependencies: requirements.yaml
env_variables:
BATCH_SIZE: '32'
LEARNING_RATE: '0.001'
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 train.py
シークレットを使用する(APIキー、トークン)
experiment_name: training-with-secrets
environment:
dependencies: requirements.yaml
secrets:
HF_TOKEN: 'my_scope/hf_token'
WANDB_API_KEY: 'my_scope/wandb'
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 train.py
シークレットはscope/key形式を使用し、Databricks Secrets で設定する必要があります。設定については、「シークレット管理」を参照してください。
YAMLテンプレートを共有する際、他のユーザーは独自のシークレットを作成するか、参照されているシークレットにアクセスできる必要があります。
ソースコードの操作
code_source ブロックがローカルコードをアップロードすることで、トレーニングジョブがそれを実行できます。
root_pathスナップショットのローカルディレクトリです。デフォルトでは、airはワーキングツリーをそのまま(コミットされていない変更を含む)プレーンな tarball としてパッケージ化します。- ピン留めされたGitバージョンのスナップショットを作成するには、代わりに、
branchまたはcommitを含むgit:ブロックを追加してください。これには、root_pathがGitリポジトリである必要があり、バージョン対応のスナップショット作成(キャッシュ、git archive)を有効にします。 - 大規模なリポジトリでは、
include_pathsを使用してサブセットをスナップショットできます。
最小限の例
experiment_name: simple-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
command: python $CODE_SOURCE_PATH/train.py
リモートマシンでは、コードは/databricks/code_source/<directory_name>に配置されます。ここで、<directory_name>はroot_pathの最終パスコンポーネントです。$CODE_SOURCE_PATH はその絶対パスに設定されています。場所をハードコードするのではなく、コマンドでそれを使用してください。
Gitリポジトリ:ブランチまたはコミットによるピン留め
Gitリポジトリの場合、ブランチまたはコミットSHAでコードバージョンをピン留めするために、git:ブロックを追加します。branch と commit は相互に排他的です。ブロック内では、いずれか一方のみを指定してください。
ブランチにピン留め (そのブランチのローカルHEADを使用します):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main # Uses local HEAD of main (no remote fetch)
command: train.sh
コミットSHAにピン留め(正確な再現性):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
commit: abc1234567 # Pins specific commit
command: train.sh
キーフィールド:
root_path(必須)— gitリポジトリのルートへのローカル パス。git.branch(オプション)Branch名ローカルHEADを使用します;リモートフェッチは行いません。git.commitと相互に排他的です。git.commit(オプション)特定のコミットSHAです。git.branchと相互に排他的です。git.remote(オプション)ローカルのHEADではなく、ブランチのリモートHEADを使用します。trueに設定するとリモートが自動検出されます。または、特定の「リモート」から取得する場合は、リモート名(例:upstream)に設定してください。git.branchでのみ有効です。
git:ブロックを省略すると、airは、コミットされていない変更点を含む作業ツリーをプレーンなtarボールとしてパッケージ化します。追加のフィールドは不要です。
Gitリポジトリ以外のディレクトリ
Gitリポジトリではないディレクトリのスナップショットを作成できます。git:ブロックは省略してください。root_pathはGitリポジトリである必要があります。これがないと、バージョンキャッシュは行われず、実行ごとに新しいtarballがアップロードされます。
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: $CODE_SOURCE_PATH/train.py
フォルダ フィルタリング include_paths
大規模なモノレポでは、アップロードとダウンロードの時間、およびスナップショットのサイズを削減するため、特定のフォルダーのみをスナップショットしてください:
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
include_paths:
- research/models
- research/common
- research/configs
command: python $CODE_SOURCE_PATH/research/models/launch_training.py
キーポイント:
- フィールドはオプションです。省略した場合、リポジトリ全体がデフォルトで含まれます。
- パスはリポジトリのルートに相対的である必要があります(先頭に
/なし)。 ..許可されていません;親ディレクトリは参照できません。
高度な機能
カスタム ハイパーパラメーター
HYPERPARAMETERS_PATH を介してトレーニング用スクリプトに構造化された設定を渡す:
experiment_name: parameterized-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 train.py
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
learning_rate: 0.0001
スクリプトで読み取ります。
import os
import yaml
with open(os.environ['HYPERPARAMETERS_PATH']) as f:
params = yaml.safe_load(f)
learning_rate = params['training']['learning_rate']
model_name = params['model']['name']
ジョブの信頼性
experiment_name: reliable-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main
command: torchrun --nproc_per_node=8 train.py
max_retries: 2
timeout_minutes: 90
ワークロードが失敗した場合、2回再試行されます。各試行の制限時間は90分です。つまり、合計の実質時間は90 × 3 = 270分です。
コストアトリビューション
既存の予算ポリシーにusage_policy_id経由でワークロードをアタッチしてください。セットアップについては、サーバレス利用ポリシーでの属性の使用を参照してください。
experiment_name: my-training
environment:
dependencies: requirements.yaml
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
usage_policy_id: abcd123-25b8-3e87-9a2c-f86eb19d101c
リファレンス
コア項目
フィールド | Type | 説明 | 例 |
|---|---|---|---|
| string | MLflowのエクスペリメント名。 |
|
| string |
|
|
| int | GPU数。 |
|
| string | GPUタイプ。 |
|
| 辞書 | コードソース構成。 | ソースコードの操作を参照してください。 |
| string | トレーニングを起動するBash コマンド |
|
サポートされている GPU タイプ
| ノードあたりのGPU | 注 |
|---|---|---|
| 1 | シングル A10 は、開発や小規模なワークロードに最適です。 |
| 1 | 単一のH100。 |
| 8 | フル H100 ノードは、分散トレーニングに一般的に使用されます。 |
アクセラレータの機能と推奨されるユースケースについては、「ハードウェアのオプション」を参照してください。
任意フィールド
環境設定
environment:
dependencies: requirements.yaml
env_variables:
BATCH_SIZE: '32'
secrets:
HF_TOKEN: 'my_scope/hf_token'
依存関係ファイルの形式については、「requirements.yaml」のリファレンスを参照してください。
ソースコード構成
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo # REQUIRED — local path to repo or directory
git: # Optional (git repos only) — pin to a branch or commit
branch: main # Branch name; uses local HEAD unless 'remote' is set
# commit: abc1234567 # Mutually exclusive with 'branch'
remote: false # Optional — true to auto-detect remote HEAD, or a remote name string
include_paths: # Optional — filter included paths
- src/
- configs/
フィールドの制約:
git.branchgit.commitは相互に排他的です。そのため、「git:」ブロック内では正確に1つを指定してください。git.remotegit.branchが必要です(git.commitでは効果がありません)。git:ブロックを省略すると、ワーキングツリーは、コミットされていない変更を含んだ通常のtarballとしてパッケージされます。
カスタム パラメーター
HYPERPARAMETERS_PATH を介してワークロードに渡されるもの:
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
MLflow実行名
mlflow_run_name: 'experiment-001-baseline'
パスの解決
ワークロード YAML 内のすべてのパスは、絶対パスでない限り、ワークロード YAML に対して相対的です。
フォルダ構造:
/home/username/my-project/
├── train.yaml
├── requirements.yaml
└── scripts/
└── train.py
YAML 設定:
experiment_name: my-training
environment:
dependencies: requirements.yaml # Relative to train.yaml
compute:
num_accelerators: 8
accelerator_type: GPU_8xH100
code_source:
type: snapshot
snapshot:
root_path: . # Relative to train.yaml
git:
branch: main
command: torchrun --nproc_per_node=8 $CODE_SOURCE_PATH/scripts/train.py