Referenční informace k YAML pro úlohy

Important

Tato funkce je ve verzi Public Preview.

Definujte název experimentu trénovací úlohy, výpočetní prostředky, příkaz, prostředí a zdroj kódu v konfiguraci YAML úlohy, kterou air run --filepředáte . Tato stránka dokumentuje každé pole.

Note

Základní pravdou pro konfiguraci YAML je nápověda v rozhraní příkazového řádku. Spusťte air -h config zobrazení nejvyšší úrovně a air -h config.<section> (například air -h config.environment) pro podrobnosti o jednotlivých oddílech.

Minimální konfigurace

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

Odeslat pomocí:

air run --file train.yaml -p profile

Klíčové koncepty

Základní pole

Většina konfigurací trénování zahrnuje pět komponent:

  1. experiment_name:Požadovaný. Vytvoří nebo připojí k experimentu MLflow.
  2. environment: Volitelné. Python závislostí a základního prostředí.
  3. compute:Požadovaný. Prostředky GPU (typ a počet)
  4. command:Požadovaný. Příkaz nebo příkazy Bash použité ke spuštění trénování.
  5. code_source: Volitelné. Cesta k trénovacímu kódu, který je dostupný vzdáleně.

Vaše první trénovací úloha

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

V této konfiguraci:

  • experiment_name vytvoří experiment MLflow s názvem simple-training (nebo připojí nové spuštění, pokud už existuje).
  • environmentnainstaluje uvedené Python závislostí (zde torch a transformers).
  • compute přidělí jeden uzel H100 (8 H100 GPU).
  • code_source nahraje složku repo do uzlu, který je k dispozici na adrese $CODE_SOURCE_PATH.
  • command běží train.py přes torchrun 8 H100 GPU. Soubor se nachází v /home/username/repo/train.py místním prostředí.

Běžné případy použití

Přidejte proměnné prostředí

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

Použití tajných kódů (klíče rozhraní API, tokeny)

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

Tajné kódy používají formát scope/key a musí být nakonfigurované v tajných kódech Databricks. Nastavení najdete v tématu Správa tajných kódů .

Při sdílení šablony YAML musí jiní uživatelé vytvářet vlastní tajné kódy nebo mít přístup k odkazovanému tajnému kódu.

Python závislostí

Uveďte Python závislostí úlohy jako vložený seznam v částienvironment.dependencies:

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

environment.version vybere verzi bezserverového prostředí GPU. Je nepovinný a výchozí hodnota "4"je . Úplný seznam dostupných verzí prostředí najdete v tématu Bezserverové verze prostředí.

databricks_ai_v5 K dispozici jsou také verze5. Verze 5 je minimální standardní prostředí, které zahrnuje pouze bezserverové rozhraní GPU API, závislosti Databricks a MLflow. Verze databricks_ai_v5 je prostředí Databricks AI, které zahrnuje všechny balíčky ze standardního prostředí a také PyTorch a komplexní knihovny strojového učení. Úplný seznam balíčků najdete v tématu Bezserverové prostředí GPU verze 5.

Formát závislostí

Seznam závislostí se řídí specifikací základního prostředí Databricks. Každá položka je specifikace balíčku ve stylu pip (například my-library==6.1). Seznam také přijímá následující položky:

  • Soubory požadavků: odkaz na existující requirements.txt použití -r, například -r '/Workspace/Shared/requirements.txt'. Proměnné prostředí, jako $HOME jsou například rozbalené.
  • Kolečka: absolutní cesta k .whl souboru, například /Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl.
  • Adresy URL indexu: adresa URL indexu, například --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

Podporované příznaky instalace

Závislosti se instalují s uv. Následující příznaky stylu pip jsou podporovány jako položky seznamu:

  • Použije se na celou instalaci: --index-url, --extra-index-urla --find-links (-f) set nebo rozšířit indexy balíčků.
  • Použito na závislost, která následuje: --no-deps, --no-build-isolation, --no-cache-dira --force-reinstall. Příznak umístěte na vlastní řádek (nebo před specifikaci) následovaný závislostí, na kterou se vztahuje.

Pokud chcete například nainstalovat flash-attn před již nainstalovanou torch (bez izolace sestavení) a bez překladu vlastních závislostí:

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

Note

--trusted-host se nepodporuje. Protože uv konfiguruje vztah důvěryhodnosti na adresu URL indexu, použijte --index-url nebo --extra-index-url místo toho.

Vlastní image Dockeru

Jako alternativu environment.dependenciesmůžete zadat vlastní image kontejneru Dockeru pomocí environment.docker_image.url. environment.docker_image.url se vzájemně vylučují s oběma environment.dependencies a environment.version – nemůžete použít ani ve stejné úloze.

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

Před použitím vlastní image ji zaregistrujte v air register imagesouboru . Úplné podrobnosti, včetně požadavků na image, základních imagí Databricks a vzorů dockerfile, najdete v tématu Použití vlastních imagí Dockeru.

Práce se zdroji kódu

Blok code_source nahraje místní kód, aby ji úloha trénování spustila.

  • root_path je místní adresář k vytvoření snímku. Ve výchozím nastavení air zabalí pracovní strom as-is (včetně jakýchkoli nepotvrzených změn) jako prostý tarball.
  • Pokud chcete vytvořit snímek připnuté verze Gitu, přidejte git: blok s branch nebo commit. To vyžaduje root_path , aby se jedná o úložiště Git a umožnilo vytváření snímků s podporou verzí (ukládání do mezipaměti, git archive).
  • U velkých úložišť include_paths můžete vytvořit snímek podmnožinu.

Minimální příklad

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

Na vzdáleném počítači je kód umístěn na /databricks/code_source/<directory_name>, kde <directory_name> je poslední komponenta root_pathcesty . $CODE_SOURCE_PATH je nastavená na tuto absolutní cestu, proto ji použijte ve svém příkazu místo pevného kódování umístění.

Úložiště Git: Připnutí podle větve nebo potvrzení

Pro úložiště Git přidejte git: blok pro připnutí verze kódu podle větve nebo potvrzení SHA. branch a commit vzájemně se vylučují: zadejte přesně jeden v rámci bloku.

Připnout na větev (používá místní head této větve):

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

Připnutí na algoritmu SHA potvrzení (přesná reprodukovatelnost):

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

Klíčová pole:

  • root_path (Povinné): Místní cesta ke kořenovému adresáři úložiště Git.
  • git.branch (Volitelné): Název větve. Používá místní HEAD; žádné vzdálené načtení. Vzájemně se vylučuje s git.commit.
  • git.commit (Volitelné): Konkrétní algoritmus SHA potvrzení. Vzájemně se vylučuje s git.branch.
  • git.remote (Volitelné): Místo místního použijte vzdálenou hlavičku větve. Nastavte na true automatické rozpoznání vzdáleného umístění nebo na vzdálený název (například upstream) pro načtení z konkrétního vzdáleného umístění. Platné pouze s git.branch.

Pokud blok vynecháte git: , air zabalí pracovní strom jako prostý tarball, včetně jakýchkoli nepotvrzených změn. Nevyžaduje se žádné pole navíc.

Adresáře bez gitu

Můžete pořizovat snímky adresářů, které nejsou úložišti Git. Vynechat git: blok, který vyžaduje root_path , aby byl úložištěm Git. Bez ní neexistuje ukládání do mezipaměti žádné verze; každý běh se nahraje nový tarball.

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

Filtrování složek pomocí include_paths

U velkých monorepos můžete snímky jenom konkrétní složky snížit dobu nahrávání a stahování a velikost snímku:

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

klíčové body:

  • Pole je volitelné. Pokud ho vynecháte, bude ve výchozím nastavení zahrnuté celé úložiště.
  • Cesty musí být relativní vzhledem ke kořenovému adresáři úložiště (bez počátečních /).
  • .. není povoleno; nelze odkazovat na nadřazené adresáře.

Rozšířené funkce

Vlastní hyperparametry

Předání strukturované konfigurace do trénovacího skriptu prostřednictvím 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

Přečtěte si je ve skriptu:

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

Spolehlivost úloh

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

Pokud úloha selže, opakuje se dvakrát. Každý pokus má 90 minut na dokončení, takže celkový rozpočet hodin je 90 × 3 = 270 minut.

Určení nákladů

Připojte úlohu k existující rozpočtové politice prostřednictvím usage_policy_name. Název se při spuštění úlohy přeloží na ID zásady. Informace o nastavení najdete v tématu Použití atributů se zásadami použití bez serveru.

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

Základní pole

Pole Typ Description Example
experiment_name řetězec Název experimentu pro MLflow "my-training-job"
environment.dependencies list Vložený seznam specifikací závislostí pip. ["torch", "transformers"]
environment.version řetězec Bezserverová verze prostředí GPU. Optional. Výchozí hodnota je "4". "4"
compute.num_accelerators int Počet GPU. 1, , 48
compute.accelerator_type řetězec Typ GPU. "GPU_1xA10", "GPU_8xH100"
code_source dict Konfigurace zdroje kódu Viz Práce se zdroji kódu.
command řetězec Příkazy Bash ke spuštění trénování. torchrun --nproc_per_node=8 train.py

Podporované typy GPU

accelerator_type GPU na uzel Poznámky
GPU_1xA10 1 Jeden A10, vhodný pro vývoj a malé úlohy.
GPU_1xH100 1 Single H100.
GPU_8xH100 8 Plný uzel H100, typický pro distribuované trénování.

Možnosti akcelerátoru a doporučené případy použití najdete v tématu Možnosti hardwaru.

Volitelná pole

Konfigurace prostředí

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

Formát závislostí, podporované příznaky instalace a environment.versionviz Python závislostí.

Vlastní konfigurace image Dockeru

environment:
  docker_image:
    url: myorg/myrepo:mytag

Vzájemně se vylučují s environment.dependencies a environment.version. Před použitím si image air register image zaregistrujte. Viz Použití vlastních imagí Dockeru.

Konfigurace zdroje kódu

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/

Omezení polí:

  • git.branch a git.commit vzájemně se vylučují: zadejte přesně jeden v git: rámci bloku.
  • git.remote vyžaduje git.branch (nemá žádný účinek s git.commit).
  • Pokud tento blok vynecháte git: , pracovní strom se zabalí jako prostý tarball, včetně jakýchkoli nepotvrzených změn.

Vlastní parametry

Předané úloze prostřednictvím HYPERPARAMETERS_PATH:

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

Název spuštění MLflow

mlflow_run_name: 'experiment-001-baseline'

Rozlišení cesty

Všechny cesty v YAML úlohy jsou relativní vzhledem k YAML úlohy, pokud nejsou absolutními cestami.

Struktura složek:

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

Konfigurace 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