Referensi YAML beban kerja

Important

Fitur ini ada di Pratinjau Umum.

Tentukan nama eksperimen, komputasi, perintah, lingkungan, dan sumber kode pekerjaan pelatihan dalam konfigurasi YAML beban kerja yang Anda teruskan ke air run --file. Halaman ini mendanai setiap bidang.

Note

Kebenaran dasar untuk konfigurasi YAML adalah bantuan dalam CLI. Jalankan air -h config untuk tampilan tingkat atas dan air -h config.<section> (misalnya, air -h config.environment) untuk detail per bagian.

Konfigurasi minimal

experiment_name: my-training
environment:
  dependencies:
    - mlflow
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: echo "Hello World"

Kirim dengan:

air run --file train.yaml -p profile

Konsep inti

Bidang inti

Sebagian besar konfigurasi pelatihan mencakup lima komponen:

  1. experiment_name:Diperlukan. Membuat atau menambahkan eksperimen MLflow.
  2. environment: Opsional. Python dependensi dan lingkungan dasar.
  3. compute:Diperlukan. Sumber daya GPU (jenis dan hitungan).
  4. command:Diperlukan. Perintah bash atau perintah yang digunakan untuk meluncurkan pelatihan.
  5. code_source: Opsional. Jalur ke kode pelatihan Anda, tersedia dari jarak jauh.

Pekerjaan pelatihan pertama Anda

experiment_name: simple-training
environment:
  dependencies:
    - torch
    - transformers
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

Dalam konfigurasi ini:

  • experiment_name membuat eksperimen MLflow bernama simple-training (atau menambahkan eksekusi baru jika sudah ada).
  • environmentmenginstal dependensi Python yang tercantum (di sini, torch dan transformers).
  • compute mengalokasikan satu simpul H100 (8 GPU H100).
  • code_source mengunggah folder repo ke simpul, tersedia di $CODE_SOURCE_PATH.
  • command train.py berjalan melalui torchrun di seluruh GPU 8 H100. File berada di /home/username/repo/train.py secara lokal.

Kasus penggunaan umum

Menambahkan variabel lingkungan

experiment_name: training-with-env
environment:
  dependencies:
    - torch
    - transformers
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

Menggunakan rahasia (kunci API, token)

experiment_name: training-with-secrets
environment:
  dependencies:
    - torch
    - transformers
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

Rahasia menggunakan format scope/key dan harus dikonfigurasi dalam Rahasia Databricks. Lihat Manajemen rahasia untuk penyiapan.

Saat berbagi templat YAML, pengguna lain harus membuat rahasia mereka sendiri atau memiliki akses ke rahasia yang direferensikan.

Python dependensi

Cantumkan dependensi Python beban kerja Anda sebagai daftar sebaris di bawah environment.dependencies:

environment:
  version: '4'
  dependencies:
    - torch
    - transformers

environment.version memilih versi lingkungan GPU tanpa server. Ini bersifat opsional dan default ke "4". Untuk daftar lengkap versi lingkungan yang tersedia, lihat Versi lingkungan tanpa server.

5 Versi dan databricks_ai_v5 juga tersedia. Versi 5 adalah lingkungan Standar minimal, yang hanya mencakup API GPU tanpa server, dependensi Databricks, dan MLflow. Versinya databricks_ai_v5 adalah lingkungan AI Databricks, yang mencakup semua paket dari lingkungan Standar, ditambah PyTorch dan pustaka pembelajaran mesin yang komprehensif. Untuk daftar paket lengkap, lihat Lingkungan GPU Tanpa Server versi 5.

Format dependensi

Daftar dependensi mengikuti Spesifikasi Lingkungan Dasar Databricks. Setiap entri adalah spesifikasi paket gaya pip (misalnya, my-library==6.1). Daftar ini juga menerima entri berikut:

  • File persyaratan: referensi ke yang sudah ada requirements.txt menggunakan -r, misalnya -r '/Workspace/Shared/requirements.txt'. Variabel lingkungan seperti $HOME diperluas.
  • Roda: jalur absolut ke .whl file, misalnya /Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl.
  • URL indeks: URL indeks, misalnya --index-url https://pypi.org/simple.
environment:
  version: '4'
  dependencies:
    - --index-url https://pypi.org/simple
    - -r '/Workspace/Shared/requirements.txt'
    - my-library==6.1
    - /Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl

Bendera penginstalan yang didukung

Dependensi diinstal dengan uv. Bendera gaya pip berikut didukung sebagai entri daftar:

  • Diterapkan ke seluruh penginstalan: --index-url, , --extra-index-urldan --find-links (-f) mengatur atau memperluas indeks paket.
  • Diterapkan ke dependensi yang mengikutinya: --no-deps, , --no-build-isolation--no-cache-dir, dan --force-reinstall. Tempatkan bendera pada barisnya sendiri (atau sebelum spesifikasi), diikuti oleh dependensi yang berlaku untuknya.

Misalnya, untuk menginstal flash-attn terhadap yang sudah diinstal torch (tidak ada isolasi build) dan tanpa menyelesaikan dependensinya sendiri:

environment:
  version: '4'
  dependencies:
    - torch
    - --no-build-isolation
    - --no-deps
    - flash-attn

Note

--trusted-host tidak didukung. Karena uv mengonfigurasi kepercayaan per URL indeks, gunakan --index-url atau --extra-index-url sebagai gantinya.

Gambar Docker Kustom

Sebagai alternatif untuk environment.dependencies, Anda dapat menentukan gambar kontainer Docker kustom menggunakan environment.docker_image.url. environment.docker_image.url saling eksklusif dengan environment.dependencies dan environment.version — Anda tidak dapat menggunakan baik dalam beban kerja yang sama.

experiment_name: my-dcs-training
environment:
  docker_image:
    url: myorg/myrepo:mytag
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: python /app/train.py

Sebelum menggunakan gambar kustom, daftarkan dengan air register image. Untuk detail selengkapnya, termasuk persyaratan gambar, gambar dasar Databricks, dan pola Dockerfile, lihat Menggunakan gambar Docker kustom.

Bekerja dengan sumber kode

code_source Blok mengunggah kode lokal sehingga pekerjaan pelatihan dapat menjalankannya.

  • root_path adalah direktori lokal untuk rekam jepret. Secara default, air mengemas pohon kerja as-is (termasuk perubahan yang tidak dilakukan) sebagai tarball biasa.
  • Untuk snapshot versi git yang disematkan, tambahkan git: blok dengan branch atau commit. Ini harus root_path menjadi repositori git dan memungkinkan rekam jepret yang sadar versi (penembolokan, git archive).
  • Untuk repositori besar, include_paths memungkinkan Anda membuat rekam jepret subset.

Contoh minimal

experiment_name: simple-training
environment:
  dependencies:
    - torch
    - transformers
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

Pada komputer jarak jauh, kode ditempatkan di , di /databricks/code_source/<directory_name>mana <directory_name> merupakan komponen jalur akhir dari root_path. $CODE_SOURCE_PATH diatur ke jalur absolut tersebut, jadi gunakan di perintah Anda alih-alih mengkodekan lokasi secara permanen.

Repositori Git: sematkan menurut cabang atau penerapan

Untuk repositori git, tambahkan git: blok untuk menyematkan versi kode menurut cabang atau dengan menerapkan SHA. branch dan commit saling eksklusif: tentukan tepat satu dalam blok.

Sematkan ke cabang (menggunakan KEPALA lokal cabang tersebut):

code_source:
  type: snapshot
  snapshot:
    root_path: /home/username/repo
    git:
      branch: main # Uses local HEAD of main (no remote fetch)
command: train.sh

Sematkan ke SHA penerapan (reproduktifitas yang tepat):

code_source:
  type: snapshot
  snapshot:
    root_path: /home/username/repo
    git:
      commit: abc1234567 # Pins specific commit
command: train.sh

Bidang kunci:

  • root_path (Wajib): Jalur lokal ke akar repositori git Anda.
  • git.branch (Opsional): Nama cabang. Menggunakan HEAD lokal; tidak ada pengambilan jarak jauh. Bersifat saling eksklusif dengan git.commit.
  • git.commit (Opsional): SHA penerapan tertentu. Bersifat saling eksklusif dengan git.branch.
  • git.remote (Opsional): Gunakan HEAD jarak jauh cabang alih-alih yang lokal. Atur ke true untuk mendeteksi jarak jauh secara otomatis, atau ke nama jarak jauh (misalnya, upstream) untuk mengambil dari jarak jauh tertentu. Hanya valid dengan git.branch.

Jika Anda menghilangkan git: blok, air mengemas pohon kerja sebagai tarball biasa, termasuk perubahan yang tidak dikomit. Tidak diperlukan bidang tambahan.

Direktori non-git

Anda dapat mengambil rekam jepret direktori yang bukan repositori git. Hilangkan git: blok , yang mengharuskan root_path menjadi repositori git. Tanpa itu, tidak ada penembolokan versi; tarball segar diunggah untuk setiap eksekusi.

code_source:
  type: snapshot
  snapshot:
    root_path: /home/username/my_project
command: $CODE_SOURCE_PATH/train.py

Pemfilteran folder dengan include_paths

Untuk monorepos besar, rekam jepret hanya folder tertentu untuk mengurangi waktu unggah dan unduhan dan ukuran rekam jepret:

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

Poin-poin penting:

  • Bidang bersifat opsional. Jika dihilangkan, seluruh repositori disertakan secara default.
  • Jalur harus relatif terhadap akar repositori (tanpa leading /).
  • .. tidak diperbolehkan; Anda tidak dapat mereferensikan direktori induk.

Fitur tingkat lanjut

Hiperparameter kustom

Teruskan konfigurasi terstruktur ke skrip pelatihan Anda melalui HYPERPARAMETERS_PATH:

experiment_name: parameterized-training
environment:
  dependencies:
    - torch
    - transformers
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

Baca di skrip Anda:

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']

Keandalan pekerjaan

experiment_name: reliable-training
environment:
  dependencies:
    - torch
    - transformers
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

Jika beban kerja gagal, beban kerja akan dicoba ulang dua kali. Setiap upaya memiliki 90 menit untuk diselesaikan, sehingga total anggaran jam dinding adalah 90 × 3 = 270 menit.

Atribusi biaya

Lampirkan beban kerja ke kebijakan anggaran yang ada melalui usage_policy_name. Nama diselesaikan ke ID kebijakan saat beban kerja diluncurkan. Untuk penyiapan, lihat Penggunaan atribut dengan kebijakan penggunaan tanpa server.

experiment_name: my-training
environment:
  dependencies:
    - mlflow
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: echo "Hello World"
usage_policy_name: my team policy

Reference

Bidang inti

Ladang Type Description Example
experiment_name string Nama eksperimen untuk MLflow. "my-training-job"
environment.dependencies list Daftar sebaris spesifikasi dependensi pip. ["torch", "transformers"]
environment.version string Versi lingkungan GPU tanpa server. Optional. Secara default menjadi "4". "4"
compute.num_accelerators int Jumlah GPU. 1, , 48
compute.accelerator_type string Jenis GPU. "GPU_1xA10", "GPU_8xH100"
code_source Dict Konfigurasi sumber kode. Lihat Bekerja dengan sumber kode.
command string Perintah Bash untuk meluncurkan pelatihan. torchrun --nproc_per_node=8 train.py

Jenis GPU yang didukung

accelerator_type GPU per simpul Notes
GPU_1xA10 1 A10 tunggal, baik untuk pengembangan dan beban kerja kecil.
GPU_1xH100 1 H100 tunggal.
GPU_8xH100 8 Simpul H100 penuh, khas untuk pelatihan terdistribusi.

Untuk kemampuan akselerator dan kasus penggunaan yang direkomendasikan, lihat Opsi perangkat keras.

Bidang opsional

Konfigurasi lingkungan

environment:
  version: '4'
  dependencies:
    - torch
    - transformers
env_variables:
  BATCH_SIZE: '32'
secrets:
  HF_TOKEN: 'my_scope/hf_token'

Untuk format dependensi, bendera penginstalan yang didukung, dan environment.version, lihat Python dependensi.

Konfigurasi gambar Docker kustom

environment:
  docker_image:
    url: myorg/myrepo:mytag

Saling eksklusif dengan environment.dependencies dan environment.version. Daftarkan gambar sebelum air register image digunakan. Lihat Menggunakan gambar Docker kustom.

Konfigurasi sumber kode

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/

Batasan bidang:

  • git.branch dan git.commit saling eksklusif: tentukan tepat satu dalam git: blok.
  • git.remote git.branch membutuhkan (tidak berpengaruh dengan git.commit).
  • Jika Anda menghilangkan git: blok, pohon kerja dipaketkan sebagai tarball biasa, termasuk perubahan yang tidak dilakukan.

Parameter kustom

Diteruskan ke beban kerja melalui HYPERPARAMETERS_PATH:

parameters:
  model:
    name: 'gpt2'
    hidden_size: 768
  training:
    batch_size: 32

Nama eksekusi MLflow

mlflow_run_name: 'experiment-001-baseline'

Resolusi jalur

Semua jalur dalam YAML beban kerja relatif terhadap YAML beban kerja kecuali jalur tersebut adalah jalur absolut.

Struktur folder:

/home/username/my-project/
├── train.yaml
└── scripts/
    └── train.py

Konfigurasi YAML:

experiment_name: my-training
environment:
  dependencies:
    - torch
    - transformers
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