Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa documentazione è stata ritirata e potrebbe non essere aggiornata.
La CLI basata air su Python, installata con il databricks-air pacchetto, è ora deprecata e non è più mantenuta attivamente.
Usa la CLI Databricks per i nuovi carichi di lavoro. Vedi Utilizzare la Databricks CLI con Runtime di AI.
Definisci il nome dell'esperimento, le risorse di calcolo, il comando, l'ambiente e il codice sorgente di un processo di training nel file di configurazione YAML del carico di lavoro che passi a air run --file. Questa pagina documenta ogni campo.
Note
Il riferimento autorevole per la configurazione YAML è la guida integrata nella CLI. Eseguire air -h config per la visualizzazione di primo livello e air -h config.<section> ( ad esempio , air -h config.environment) per i dettagli per sezione.
Configurazione minima
experiment_name: my-training
environment:
dependencies:
- mlflow
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
Invia tramite:
air run --file train.yaml -p profile
Concetti di base
Campi principali
La maggior parte delle configurazioni di training include cinque componenti:
-
experiment_name(Richiesto): Crea o aggiunge a un esperimento MLflow. -
environment(Opzionale): dipendenze Python e versione base dell'ambiente. -
compute(Richiesto): risorse GPU (tipo e conteggio). -
command(Richiesto): Il comando o i comandi bash usati per avviare l'addestramento. -
code_source(Opzionale): Percorso verso il tuo codice di addestramento, reso disponibile da remoto.
Per valori supportati e vincoli di campo, vedi Riferimento.
Il primo lavoro di formazione
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
In questa configurazione:
-
experiment_namecrea un esperimento MLflow denominatosimple-training(o aggiunge una nuova esecuzione se esiste già). -
environmentusa l'ambiente predefinito e installatorchetransformers. -
computealloca un nodo H100 (8 GPU H100). -
code_sourcecarica la cartellareponel nodo, disponibile all'indirizzo$CODE_SOURCE_PATH. -
commandviene eseguitotrain.pytramitetorchrunle 8 GPU H100. Il file si trova in/home/username/repo/train.pylocale.
Casi d'uso comuni
Aggiungere variabili di ambiente
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
Usare segreti (chiavi 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
I segreti usano il formato scope/key e devono essere configurati in Segreti di Databricks. Vedere Gestione dei segreti per la configurazione.
Quando si condivide un modello YAML, altri utenti devono creare i propri segreti o avere accesso al segreto a cui si fa riferimento.
Ambiente
Usa il environment blocco per selezionare un ambiente GPU serverless e installare le dipendenze di Python. Ad esempio, la seguente configurazione seleziona la versione 4 dell'ambiente Standard e installa PyTorch e Transformers:
environment:
version: '4'
dependencies:
- torch
- transformers
Versione dell'ambiente
environment.version è opzionale e seleziona la versione dell'ambiente gestito per il carico di lavoro.
Ecco alcuni esempi:
-
"4"oppure"5"utilizzare la corrispondente versione dell'ambiente standard. -
"databricks_ai_v5"per utilizzare l'ambiente AI di Databricks versione 5, che include pacchetti specifici per ML preinstallati. (Lista completa dei pacchetti)
Il seguente esempio seleziona l'ambiente AI di Databricks versione 5:
environment:
version: 'databricks_ai_v5'
dependencies: []
Se specifichi environment.version, devi anche fornire environment.dependencies come lista inline. Usa una lista vuota se non hai bisogno di installare pacchetti aggiuntivi.
Per informazioni sugli ambienti disponibili per AI Runtime, vedi Configura il tuo ambiente.
dipendenze Python
Elenca le dipendenze da Python del tuo carico di lavoro come una lista inline sotto environment.dependencies.
Formato di dipendenza
L'elenco delle dipendenze segue la specifica dell'ambiente di base di Databricks. Ogni voce è una specifica di pacchetto di tipo pip (ad esempio, my-library==6.1). L'elenco accetta anche le voci seguenti:
-
File dei requisiti: un riferimento a un oggetto esistente
requirements.txtusando-r, ad esempio-r '/Workspace/Shared/requirements.txt'. Le variabili di ambiente,$HOMEad esempio vengono espanse. -
Wheels: il percorso assoluto di un file
.whl, ad esempio/Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl. -
URL di indice: URL di indice, ad esempio
--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
Flag di installazione supportati
Le dipendenze vengono installate con uv. I flag di tipo pip seguenti sono supportati come voci di elenco:
-
Si applica all'intera installazione:
--index-url,--extra-index-urle--find-links(-f) impostano o estendono gli indici del pacchetto. -
Applicato alla dipendenza che li segue:
--no-deps,--no-build-isolation,--no-cache-dire--force-reinstall. Posiziona il flag su una riga separata (o prima della specifica), seguito dalla dipendenza a cui si applica.
Ad esempio, per installare flash-attn rispetto a torch già installato (senza isolamento della build) e senza risolvere le relative dipendenze:
environment:
version: '4'
dependencies:
- torch
- --no-build-isolation
- --no-deps
- flash-attn
Note
--trusted-host non è supportato. Poiché uv configura l'attendibilità per ogni URL di indice, usa --index-url o --extra-index-url invece.
Immagini Docker personalizzate
In alternativa a environment.dependencies, è possibile specificare un'immagine del contenitore Docker personalizzata usando environment.docker_image.url.
environment.docker_image.url è mutuamente esclusivo sia con environment.dependencies sia con environment.version: non è possibile utilizzare nessuno dei due nello stesso carico di lavoro.
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
Prima di usare un'immagine personalizzata, registrarla con air register image. Per dettagli completi, inclusi requisiti di immagine, immagini base Databricks e pattern Dockerfile, vedi Usa immagini Docker personalizzate con la CLI legacy di Python.
Lavorare con le sorgenti del codice
Il code_source blocco carica il codice locale in modo che il processo di training possa eseguirlo.
-
root_pathè la directory locale di cui creare un'istantanea. Per impostazione predefinita,airarchivia l'albero di lavoro così com'è (incluse eventuali modifiche non sottoposte a commit) in un semplice archivio tar. - Per creare invece uno snapshot di una versione Git bloccata, aggiungi un blocco
git:con unbrancho uncommit. Ciò richiede cheroot_pathsia un repository git e abilita la creazione di snapshot basata sulle versioni (memorizzazione nella cache,git archive). - Per i repository di grandi dimensioni,
include_pathsconsente di creare uno snapshot di un subset.
Esempio minimo
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
Nel computer remoto il codice viene inserito in /databricks/code_source/<directory_name>, dove <directory_name> è il componente di percorso finale di root_path.
$CODE_SOURCE_PATH è impostato su quel percorso assoluto, quindi usalo nel comando invece di codificare esplicitamente il percorso.
Repository Git: aggiungere per ramo o commit
Per i repository git, aggiungere un blocco git: per fissare la versione del codice in base al branch o al commit SHA.
branch e commit si escludono a vicenda: specificare esattamente uno all'interno del blocco.
Fissa a un ramo (usa l'HEAD locale di quel ramo):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main # Uses local HEAD of main (no remote fetch)
command: train.sh
Aggiungere a un commit SHA (riproducibilità esatta):
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
commit: abc1234567 # Pins specific commit
command: train.sh
Campi chiave:
-
root_path(Obbligatorio): percorso locale alla radice del repository git. -
git.branch(Facoltativo): nome del ramo. Utilizza HEAD locale; nessun recupero dal remoto. Si escludono congit.commita vicenda. -
git.commit(Facoltativo): SHA specifico del commit. Si escludono congit.brancha vicenda. -
git.remote(Facoltativo): usa l'HEAD remoto del ramo anziché quello locale. Impostare sutrueper rilevare automaticamente il telecomando o su un nome remoto (ad esempio,upstream) per recuperare da un remoto specifico. Valido solo congit.branch.
Se si omette il blocco git:, air crea un semplice archivio tar dell'albero di lavoro, incluse eventuali modifiche di cui non è ancora stato eseguito il commit. Non è necessario alcun campo aggiuntivo.
Directory non Git
È possibile creare snapshot delle directory che non sono repository Git. Omettere il blocco git:, che richiede che root_path sia un repository Git. Senza di esso, non c'è alcuna memorizzazione nella cache della versione; viene caricato un nuovo tarball per ogni esecuzione.
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: $CODE_SOURCE_PATH/train.py
Filtraggio delle cartelle con include_paths
Per i monorepo di grandi dimensioni, crea uno snapshot solo di cartelle specifiche per ridurre i tempi di caricamento e download e le dimensioni dello snapshot:
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
Punti principali:
- Il campo è facoltativo. Se viene omesso, l'intero repository viene incluso per impostazione predefinita.
- I percorsi devono essere relativi alla radice del repository (nessun carattere iniziale
/). -
..non è consentito; non è possibile fare riferimento alle directory parent.
Funzionalità avanzate
Iperparametri personalizzati
Passa la configurazione strutturata allo script di addestramento tramite 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
Leggili nel tuo script:
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']
Affidabilità dei processi
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
Se il carico di lavoro fallisce, viene ritentato due volte. Ogni tentativo ha 90 minuti da completare, quindi il budget totale di wall-clock è 90 × 3 = 270 minuti.
Attribuzione dei costi
Collega un carico di lavoro a un criterio di bilancio esistente tramite usage_policy_name. Il nome viene associato all'ID del criterio quando viene avviato il carico di lavoro. Per la configurazione, vedere Utilizzo degli attributi con criteri di utilizzo serverless.
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
Riferimenti
Riferimento del campo principale
| Campo | Tipo | Description | Example |
|---|---|---|---|
experiment_name |
string | Nome dell'esperimento per MLflow. | "my-training-job" |
mlflow_artifact_location |
string | Posizione radice per gli artefatti MLflow registrati dalla run. Optional. | /Volumes/main/default/mlflow-artifacts/my-training |
environment.dependencies |
list | Elenco in linea delle specifiche delle dipendenze di pip. | ["torch", "transformers"] |
environment.version |
string | Versione dell'ambiente GPU serverless. Optional. Usa l'ambiente predefinito se omesso. Vedi Versione Ambiente. |
"4", "5", "databricks_ai_v5" |
compute.num_accelerators |
int | Numero di GPU. Deve essere un multiplo delle GPU per nodo per il selezionato compute.accelerator_type. |
1, 4, 8 |
compute.accelerator_type |
string | Configurazione dell'acceleratore, inclusi il tipo di GPU e la forma del nodo. Vedi Configurazioni GPU supportate. |
"GPU_1xA10", "GPU_1xH100", "GPU_8xH100" |
code_source |
dict | Configurazione dell'origine del codice. | Vedi Lavorare con le origini del codice sorgente. |
command |
string | Comandi Bash per avviare il training. | torchrun --nproc_per_node=8 train.py |
Configurazioni GPU supportate
accelerator_type |
GPU per nodo |
num_accelerators Requisito |
Note |
|---|---|---|---|
GPU_1xA10 |
1 | Qualsiasi intero positivo | Un A10 singolo, ideale per lo sviluppo e carichi di lavoro ridotti. |
GPU_1xH100 |
1 | 1 |
H100 singolo. |
GPU_8xH100 |
8 | Un multiplo positivo di 8 | Nodo H100 completo, tipico per il training distribuito. |
Per le capacità degli acceleratori e i casi d'uso consigliati, vedi Opzioni hardware.
compute.num_accelerators è il numero totale di GPU per il carico di lavoro. Deve essere un multiplo delle GPU per nodo per il selezionato compute.accelerator_type.
Campi facoltativi
Configurazione dell'ambiente
environment:
version: '4'
dependencies:
- torch
- transformers
env_variables:
BATCH_SIZE: '32'
secrets:
HF_TOKEN: 'my_scope/hf_token'
Per le versioni dell'ambiente, il formato delle dipendenze e i flag di installazione supportati, vedi Ambiente.
Configurazione dell'immagine Docker personalizzata
environment:
docker_image:
url: myorg/myrepo:mytag
Si escludono a vicenda con environment.dependencies e environment.version. Registrare l'immagine con air register image prima dell'uso. Vedi Usa immagini Docker personalizzate con la CLI Python legacy.
Configurazione dell'origine del codice
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/
Vincoli di campo:
-
git.branchegit.commitsi escludono a vicenda: specificare esattamente uno all'interno delgit:blocco. -
git.remoterichiedegit.branch(non ha alcun effetto congit.commit). - Se si omette il blocco
git:, l'albero di lavoro viene impacchettato come un semplice tarball, incluse eventuali modifiche di cui non è stato eseguito il commit.
Parametri personalizzati
Passato al carico di lavoro tramite HYPERPARAMETERS_PATH:
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
Nome dell'esecuzione MLflow
mlflow_run_name: 'experiment-001-baseline'
Posizione dell'artefatto MLflow
Imposta mlflow_artifact_location per memorizzare artefatti per un esperimento MLflow in una posizione root personalizzata. Se ometti questo campo, un nuovo esperimento utilizza la posizione DBFS predefinita, come dbfs:/databricks/mlflow-tracking/<experiment-id>/....
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
Se l'accesso a DBFS è limitato o preferisci Unity Catalog, specifica un /Volumes/<catalog>/<schema>/<volume>/... percorso o l'URI equivalente dbfs:/Volumes/<catalog>/<schema>/<volume>/... . La air CLI converte un percorso /Volumes nell'URI dbfs: usato da MLflow.
Usa una location unica per ogni esperimento. La posizione dell'artefatto di un esperimento MLflow è fissata quando l'esperimento viene creato. Se experiment_name identifica un esperimento esistente, mlflow_artifact_location deve corrispondere alla sua posizione dell'artefatto o essere omesso. Per usare una posizione diversa, specifica un nuovo nome per l'esperimento.
Risoluzione del percorso
Tutti i percorsi nel file YAML del carico di lavoro sono relativi al carico di lavoro YAML, a meno che non siano percorsi assoluti.
Struttura delle cartelle:
/home/username/my-project/
├── train.yaml
└── scripts/
└── train.py
Configurazione 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