Référence YAML de Workload pour le CLI Python legacy
Cette documentation a été supprimée et peut ne plus être mise à jour.
La CLI air basée sur Python, installée avec le package databricks-air, est désormais dépréciée et n'est plus activement maintenue.
Utilisez la CLI Databricks pour les nouvelles charges de travail. Consultez Utiliser la CLI Databricks avec AI Runtime.
Définissez le nom d'Experimentation, le compute, la commande, l'environnement et la source du code d'un Job d'entraînement dans la configuration YAML de charge de travail que vous transmettez à air run --file. Cette page documente chaque champ.
La vérité de terrain pour la configuration YAML est l’aide dans la CLI. Exécutez air -h config pour la vue de niveau supérieur et air -h config.<section> (par exemple air -h config.environment) pour les détails par section.
Configuration minimale
experiment_name: my-training
environment:
dependencies:
- mlflow
compute:
num_accelerators: 1
accelerator_type: GPU_1xA10
command: echo "Hello World"
Envoyer avec :
air run --file train.yaml -p profile
Concepts fondamentaux
Champs cœur
La plupart des configurations d'entraînement comprennent cinq composants :
experiment_name(Obligatoire) : Créer ou ajouter à une experimentation MLflow.environment(Facultatif) : dépendances Python et version de l'environnement de base.compute(Obligatoire) : ressources GPU (type et nombre).command(Obligatoire) : La commande Bash ou les commandes utilisées pour lancer l'entraînement.code_source(Facultatif) : chemin d'accès à votre code d'entraînement, rendu disponible à distance.
Pour les valeurs prises en charge et les contraintes de champ, consultez la Référence.
Votre premier job d’entraînement
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
Dans cette configuration :
experiment_namecrée une Experimentation MLflow nomméesimple-training(ou ajoute une nouvelle exécution si elle existe déjà).environmentutilise l'environnement par default et installetorchettransformers.computealloue un nœud H100 (8 GPU H100).code_sourceupload le dossierreposur le nœud, disponible sur$CODE_SOURCE_PATH.commandexécutetrain.pyviatorchrunsur les 8 GPU H100. Le fichier se trouve au niveau de/home/username/repo/train.pylocalement.
Cas d'utilisation courants
Ajouter des variables d’environnement
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
Utiliser des secrets (clés API, jetons)
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
Les secrets utilisent le format scope/key et doivent être configurés dans Databricks Secrets. Voir la Gestion des secrets pour la configuration.
Lors du partage d’un template YAML, les autres utilisateurs doivent créer leurs propres secrets ou avoir accès au secret référencé.
Environnement
Utilisez le bloc environment pour sélectionner un environnement GPU serverless et installer les dépendances Python. Par exemple, la configuration suivante sélectionne la version 4 de l'environnement standard et installe PyTorch et Transformers :
environment:
version: '4'
dependencies:
- torch
- transformers
Version de l'environnement
environment.version est facultatif et permet de sélectionner la version de l’environnement géré pour le workload.
Quelques exemples :
"4"ou"5"pour utiliser la version de l'environnement standard correspondante."databricks_ai_v5"pour utiliser Databricks AI environment version 5, qui inclut des packages ML préinstallés. (Liste complète des packages)
L’exemple suivant sélectionne la version 5 de l’environnement Databricks AI :
environment:
version: 'databricks_ai_v5'
dependencies: []
Si vous spécifiez environment.version, vous devez également fournir environment.dependencies en tant que liste inline. Utilisez une liste vide si vous n’avez pas besoin d’installer de packages supplémentaires.
Pour plus d'informations sur les environnements disponibles pour AI Runtime, consultez Configurer votre environnement.
Dépendances Python
Listez les dépendances Python de votre charge de travail sous forme de liste en ligne sous environment.dependencies.
Format des dépendances
La liste des dépendances respecte la spécification d’environnement de base de Databricks. Chaque entrée correspond à une spécification de package de type pip (par exemple, my-library==6.1). La liste accepte également les entrées suivantes :
- Fichiers des exigences : une référence à un
requirements.txtexistant utilisant-r, par exemple-r '/Workspace/Shared/requirements.txt'. Les variables d'environnement telles que$HOMEsont développées. - Roues : chemin absolu vers un fichier
.whl, par exemple/Workspace/Shared/path/to/simplejson-3.19.3-py3-none-any.whl - URL d'index : une URL d'index, par exemple
--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
Indicateurs d'installation pris en charge
Les dépendances sont installées avec uv. Les drapeaux de style pip suivants sont pris en charge en tant qu'entrées de liste :
- Appliqué à l'ensemble de l'installation :
--index-url,--extra-index-urlet--find-links(-f) définissent ou étendent les index de packages. - S'applique à la dépendance qui les suit :
--no-deps,--no-build-isolation,--no-cache-diret--force-reinstall. Placez l’indicateur sur sa propre ligne (ou avant la spécification), suivi de la dépendance à laquelle il s’applique.
Par exemple, pour installer flash-attn par rapport au torch déjà installé (pas d'isolement de build) et sans résoudre ses propres dépendances :
environment:
version: '4'
dependencies:
- torch
- --no-build-isolation
- --no-deps
- flash-attn
--trusted-host n'est pas pris en charge. Comme uv configure la confiance par URL d’index, utilisez plutôt --index-url ou --extra-index-url.
Images Docker personnalisées
Alternativement à environment.dependencies, vous pouvez spécifier une image de conteneur Docker personnalisée en utilisant environment.docker_image.url. environment.docker_image.url est mutuellement exclusif avec environment.dependencies et environment.version : vous ne pouvez pas utiliser les deux dans la même charge de travail.
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
Avant d'utiliser une image personnalisée, enregistrez-la auprès de air register image. Pour plus de détails, y compris les exigences en matière d’images, les images de base Databricks et les modèles Dockerfile, voir Utiliser des images Docker personnalisées avec la CLI Python héritée.
Travailler avec des sources de code
Le bloc code_source upload le code local pour que le job d’entraînement puisse l’exécuter.
root_pathest le répertoire local à capturer dans un snapshot. default,airpackage l'arborescence de travail telle quelle (y compris les modifications non validées) sous forme d'un simple tarball.- Pour créer un instantané d'une version git pin à la place, ajoutez un bloc
git:avec unbranchoucommit. Cela nécessite queroot_pathsoit un repository git et active l'instantané prenant en charge les versions (mise en cache,git archive). - Pour les grands repository,
include_pathsvous permet d’effectuer un snapshot d’un sous-ensemble.
Exemple 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
Sur la machine distante, le code est placé à /databricks/code_source/<directory_name>, où <directory_name> est le dernier composant de chemin de root_path. $CODE_SOURCE_PATH est défini sur ce chemin absolu, utilisez-le donc dans votre commande au lieu de coder en dur l'emplacement.
repository Git : pin par Branch ou commit
Pour les repository git, ajoutez un bloc git: pour pin la version du code par Branch ou par commit SHA. branch et commit s’excluent mutuellement : indiquez-en exactement un dans le bloc.
pin à une Branch (utilise le HEAD local de cette Branch) :
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
branch: main # Uses local HEAD of main (no remote fetch)
command: train.sh
Pin à un SHA de commit (reproductibilité exacte) :
code_source:
type: snapshot
snapshot:
root_path: /home/username/repo
git:
commit: abc1234567 # Pins specific commit
command: train.sh
Champs clés :
root_path(Obligatoire) : Chemin d'accès local vers la racine de votre repository git.git.branch(Facultatif) : nom de la Branch. Utilise HEAD local ; aucune extraction distante. Mutuellement exclusif avecgit.commit.git.commit(Facultatif) : AHS du commit spécifique. Mutuellement exclusif avecgit.branch.git.remote(Facultatif) : utilisez la tête distante de la Branch au lieu de la tête locale. Réglez surtruepour détecter automatiquement la distance, ou sur un nom distant (par exemple,upstream) pour récupérer à partir d’une distance spécifique. Uniquement valide avecgit.branch.
Si vous omettez le bloc git:, air package l'arborescence de travail sous la forme d'une simple archive tar, y compris les modifications non validées. Aucun champ supplémentaire n'est requis.
Répertoires hors Git
Vous pouvez prendre un instantané des répertoires qui ne sont pas des repository git. Omettez le bloc git:, qui nécessite que root_path soit un repository git. Sans cela, il n’y a pas de mise en cache de version ; une archive tar fraîche est upload à chaque exécution.
code_source:
type: snapshot
snapshot:
root_path: /home/username/my_project
command: $CODE_SOURCE_PATH/train.py
Filtrage de dossier avec include_paths
Pour les gros monorepos, prenez un instantané uniquement des dossiers spécifiques pour réduire le temps d'upload et de download ainsi que la taille de l'instantané :
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
Points clés :
- Le champ est facultatif. S'il n'est pas précisé, l'ensemble du repository est inclus par default.
- Les chemins d'accès doivent être relatifs à la racine du repository (sans
/au début). ..n’est pas autorisée ; vous ne pouvez pas référencer des répertoires parents.
Fonctionnalités avancées
Hyperparamètres personnalisés
Transmettez la configuration structurée à votre script de formation via 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
Lisez-les dans votre 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']
Fiabilité du job
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
Si la charge de travail échoue, elle est relancée deux fois. Chaque tentative dispose de 90 minutes pour se terminer, soit un budget total de 90 × 3 = 270 minutes.
Attribution des coûts
Joindre une charge de travail à une politique budgétaire existante via usage_policy_name. Le nom est résolu en identifiant de la politique lors du lancement de la charge de travail. Pour la configuration, voir Attribuer l’utilisation avec des politiques d’utilisation 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
Référence
Référence de champ de base
Champ | Type | Description | Exemple |
|---|---|---|---|
| chaîne | Nom de l'Experimentation pour MLflow. |
|
| chaîne | Emplacement racine des artefacts MLflow enregistrés par l’exécution. Facultatif. |
|
| liste | Liste en ligne des spécifications de dépendance pip. |
|
| chaîne | Version de l’environnement GPU serverless. Facultatif. Utilise l’environnement default si omis. Consultez Version de l’environnement. |
|
| int | Nombre de GPU. Doit être un multiple des GPU par nœud pour le |
|
| chaîne | Configuration de l’accélérateur, y compris le type de GPU et la forme du nœud. Voir Configurations GPU prises en charge. |
|
| dict | Configuration du code source. | Consultez Travailler avec les codes source. |
| chaîne | Commandes Bash pour lancer l’entraînement. |
|
Configurations GPU prises en charge
| GPU par nœud |
| Notes |
|---|---|---|---|
| 1 | Tout entier positif | Un seul A10, idéal pour le développement et les petites charges de travail. |
| 1 |
| Un seul H100. |
| 8 | Un multiple positif de 8 | Nœud H100 complet, typique pour l'entraînement distribué. |
Pour connaître les fonctionnalités d'accélération et les cas d'utilisation recommandés, consultez la section Matériel.
compute.num_accelerators est le nombre total de GPU pour le workload. Il doit s'agir d'un multiple du nombre de GPU par nœud pour le compute.accelerator_type sélectionné.
Champs optionnels
Configuration de l’environnement
environment:
version: '4'
dependencies:
- torch
- transformers
env_variables:
BATCH_SIZE: '32'
secrets:
HF_TOKEN: 'my_scope/hf_token'
Pour les versions d’environnement, le format des dépendances et les flags d’installation pris en charge, consultez Environnement.
Configuration d’image Docker personnalisée
environment:
docker_image:
url: myorg/myrepo:mytag
Mutuellement exclusif avec environment.dependencies et environment.version. Enregistrez l'image avec air register image avant de l'utiliser. Voir Utiliser des images Docker personnalisées avec l'ancienne CLI Python.
Configuration du code source
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/
Contraintes de champ :
git.branchetgit.commitsont mutuellement exclusifs : spécifiez-en exactement un dans le blocgit:.git.remotenécessitegit.branch(cela n'a aucun effet avecgit.commit).- Si vous omettez le bloc
git:, l’arborescence de travail est package sous forme d’archive tar simple, y compris les modifications non validées.
Paramètres personnalisés
Transmis à la charge de travail via HYPERPARAMETERS_PATH:
parameters:
model:
name: 'gpt2'
hidden_size: 768
training:
batch_size: 32
Nom de l’exécution MLflow
mlflow_run_name: 'experiment-001-baseline'
Emplacement des artefacts MLflow
Définissez mlflow_artifact_location pour stocker des artefacts pour une Experimentation MLflow dans un emplacement racine personnalisé. Si vous omettez ce champ, une nouvelle expérimentation utilise l’emplacement DBFS default, tel que dbfs:/databricks/mlflow-tracking/<experiment-id>/....
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
Si l'accès à DBFS est restreint ou si vous préférez Unity Catalog, spécifiez un chemin /Volumes/<catalog>/<schema>/<volume>/... ou l'URI dbfs:/Volumes/<catalog>/<schema>/<volume>/... équivalent. La CLI air convertit un chemin /Volumes en l'URI dbfs: utilisée par MLflow.
Utilisez un emplacement unique pour chaque expérience. L'emplacement de l'artefact d'une Experimentation MLflow est fixe lors de sa création. Si experiment_name identifie une Experimentation existante, mlflow_artifact_location doit correspondre à son emplacement d'artefact ou être omis. Pour utiliser un emplacement différent, spécifiez un nouveau nom d'expérience.
Résolution du chemin
Tous les chemins dans le YAML de workload sont relatifs au YAML de workload, sauf s'il s'agit de chemins absolus.
Structure des dossiers :
/home/username/my-project/
├── train.yaml
└── scripts/
└── train.py
Configuration 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