Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est disponible en préversion publique.
Utilisez DABs pour définir sous forme de code une charge de travail d’entraînement pour AI Runtime. Gardez-le sous contrôle de version, déployez-le sur différents environnements, planifiez-le et combinez-le à d’autres tâches. Cette page décrit la procédure d’entraînement personnalisé, dans laquelle ai_runtime_task exécute votre propre commande à partir d’un répertoire de code sur une infrastructure de calcul GPU sans serveur.
C’est une tâche différente de celle de faire tourner un notebook sur une carte graphique serverless via un bundle. Pour l’exemple de base du pack notebook-on-GPU, voir API de jobs et bundles d’automatisation déclarative.
Requirements
- Un espace de travail avec le Runtime IA activé. Consultez Spécifications.
- La ligne de commande (CLI) Databricks (interface en ligne) s’installait et configurait pour déployer des bundles.
Définissez une tâche d’exécution IA dans un ensemble
An ai_runtime_task nomme une expérience, pointe votre code d’entraînement avec code_source_path, et déclare un déploiement : la commande à exécuter et la carte graphique sur laquelle l’exécuter. Ajoutez cette offre d’emploi à votre pack :
resources:
jobs:
train:
tasks:
- task_key: train
ai_runtime_task:
experiment: my-experiment
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
code_source_path pointe vers votre code d’entraînement emballé, et command_path c’est le script que la tâche exécute. Les nouvelles tentatives, les délais d’attente et les autorisations sont définis sur la tâche et le job de la même manière que pour n’importe quel job Azure Databricks ; vos pratiques existantes pour les bundles restent donc valables. Pour savoir comment emballer et référencer votre code, voir Envoyer votre code d’entraînement.
Champs ai_runtime_task
| Champ | Type | Description |
|---|---|---|
experiment |
Chaîne | Required. Le nom de l’expérience MLflow pour l’exécution. Voir Suivi et observabilité de l’expérience. |
code_source_path |
Chaîne | Le code d’entraînement à exécuter : le fichier généré d’un artefact tgz empaqueté, ou un chemin /Workspace ou /Volumes vers du code déjà téléversé. Voir Envoyer votre code de formation. |
deployments |
Série | Required. Un seul déploiement décrivant la commande et le calcul sur lequel l’exécuter. Chaque entrée contient command_path, compute et un name facultatif. |
deployments[].command_path |
Chaîne | Required. Le script sur lequel la tâche s’exécute sur chaque nœud. |
deployments[].compute.accelerator_type |
Chaîne | Required. Le type de GPU, par exemple GPU_1xA10, GPU_1xH100, ou GPU_8xH100. |
deployments[].compute.accelerator_count |
Integer | Required. Le nombre total de GPU sur tous les nœuds — un multiple du nombre par nœud encodé dans accelerator_type. |
deployments[].name |
Chaîne | Un nom optionnel pour le déploiement, utilisé dans les journaux et l’interface utilisateur. |
docker_image_url |
Chaîne | Une image Docker personnalisée optionnelle pour exécuter la commande, au lieu de l’environnement géré. Consultez Utiliser des images Docker personnalisées. |
mlflow_run |
Chaîne | Nom d’affichage facultatif pour l’exécution MLflow. |
mlflow_experiment_directory |
Chaîne | Un répertoire d’espace de travail optionnel sous lequel l’expérience est créée. Doit commencer par /Workspace. Réglez cela lors de l’exécution en tant que principal de service sans repertoire utilisateur par défaut. |
mlflow_artifact_location |
Chaîne | Un emplacement racine facultatif pour les artefacts MLflow, par exemple un chemin /Volumes/<catalog>/<schema>/<volume>/…. Doit correspondre à l’emplacement de l’artefact d’une expérience existante ou être omis. |
Définissez les nouvelles tentatives, les délais d’attente, les autorisations et l’environnement (environment_key) sur la tâche et le travail — pas à l’intérieur de ai_runtime_task. Pour la référence complète de la tâche, voir Tâche d’exécution IA.
Configurez l’accélérateur matériel
Réglez accelerator_type sur la charge de travail dont vous avez besoin, et accelerator_count sur le nombre total de GPU. Le nombre est un multiple du nombre de GPU par nœud : 1 pour GPU_1xA10 et GPU_1xH100, et 8 pour GPU_8xH100. Un nombre supérieur à la taille par nœud exécute la tâche sur plusieurs nœuds — par exemple, GPU_8xH100 avec accelerator_count: 16 s’exécute sur deux nœuds. Pour des conseils sur le choix d’un accélérateur, voir Options matérielles.
Note
Pour les exécutions sur plusieurs nœuds, AI Runtime exécute votre commande sur chaque nœud et renseigne les variables d’environnement standard pour l’entraînement distribué dans l’environnement de la tâche — NUM_NODES, WORLD_SIZE, LOCAL_WORLD_SIZE, MASTER_ADDR et MASTER_PORT. Lisez-les à partir de votre commande (par exemple, lors d’un torchrun lancement) ; vous ne les définissez pas dans le bundle.
Définir l’environnement et les dépendances
Déclarez un bloc environments sur le job et faites-y référence depuis la tâche avec environment_key. AI Runtime installe les dépendances listées avant que votre commande ne s’exécute :
resources:
jobs:
train:
tasks:
- task_key: train
environment_key: default
ai_runtime_task:
# experiment, code_source_path, and deployments as above
environments:
- environment_key: default
spec:
environment_version: '5'
dependencies:
- numpy
Pour les environnements disponibles, voir Configurer votre environnement.
Envoyez votre code d’entraînement
code_source_path indique à la tâche où se trouve votre code d’entraînement. Elle prend l’une des deux formes suivantes :
-
Un artefact empaqueté
tgz— déclarez un artefact et pointezcode_source_pathvers son fichier de sortie. Azure Databricks génère l’archive tar et la charge surdatabricks bundle deploy. C’est ainsi que vous envoyez du code depuis un annuaire de projet local ou une révision Git engagée. - Un chemin d’espace de travail ou de volume — code déjà téléchargé, utilisé as-is.
Artefact emballé
Déclarez un tgz artefact et pointez code_source_path vers son fichier de sortie. Sur databricks bundle deploy, la CLI crée l’archive tar, la télécharge, puis la tâche l’extrait et exécute votre commande sur celle-ci :
artifacts:
code:
type: tgz
path: .
include: [src]
files:
- source: ./dist/code.tgz
resources:
jobs:
train:
tasks:
- task_key: train
ai_runtime_task:
code_source_path: ./dist/code.tgz
Utilisez include pour empaqueter les fichiers de votre arborescence de travail, ou git pour créer un instantané d’une branche ou d’un commit validé.
Chemin de l’espace de travail ou du volume
Pour utiliser du code déjà téléversé, définissez code_source_path sur un chemin /Workspace/… ou /Volumes/…. Azure Databricks utilise le chemin tel quel et n’empaquette rien.
Les champs d’artefact tgz :
| Champ | Description |
|---|---|
type |
tgz crée une archive tar compressée avec gzip à partir de fichiers sources, au lieu d’exécuter la commande build. |
path |
Le répertoire de base à empaqueter.
include les chemins et les noms des entrées de l’archive sont relatifs à celle-ci. |
include |
Une liste des sous-chemins de path à empaqueter. Omettre l’empaquetage de l’ensemble de path. Respecte .gitignore ; les sync.include et sync.exclude à l’échelle du lot ne s’appliquent pas. Alternative à une build commande. |
git |
Faites un instantané d’une référence Git engagée au lieu de l’arbre de travail. Définissez git.branch ou git.commit (commit prévaut lorsque les deux sont définis). Alternative à une build commande. |
files[].source |
Le chemin du bitume construit. Pointez code_source_path vers ceci. |
Note
L’exécution IA extrait votre code dans un répertoire et l’expose comme variable d’environnement CODE_SOURCE_PATH . Référencez-le depuis votre commande pour que les chemins relatifs se résolvent, par exemple cd "$CODE_SOURCE_PATH" avant d’exécuter votre script.
Exemple complet
Cet exemple s’entraîne sur un seul GPU A10 depuis un projet local, sans configuration préalable de la CLI au-delà de l’installation et de la configuration de la CLI Azure Databricks. Le projet comprend trois fichiers :
my-training/
├── databricks.yml
├── command.sh
└── src/
└── train.py
command.sh est le point d’entrée nommé par command_path. Il se transforme dans le répertoire de code extrait et exécute le script d’entraînement :
#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py
databricks.yml nomme le bundle, empaquette src/ en tant qu’artefact tgz, l’exécute en tant que ai_runtime_task, installe numpy dans l’environnement de tâche, et définit des cibles de développement et de production :
bundle:
name: my-training
artifacts:
code:
type: tgz
path: .
include: [src]
files:
- source: ./dist/code.tgz
resources:
jobs:
train:
name: my-training
tasks:
- task_key: train
environment_key: default
ai_runtime_task:
experiment: /Users/me@example.com/my-training
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
environments:
- environment_key: default
spec:
environment_version: '5'
dependencies:
- numpy
targets:
dev:
mode: development
default: true
prod:
mode: production
Déployez le package et exécutez la tâche.
databricks bundle deploy construit et télécharge l’artefact tgz et crée le travail ; databricks bundle run le lance :
databricks bundle deploy --target dev
databricks bundle run train --target dev
Construire des flux de travail multitâches
Un ai_runtime_task est une tâche de job Azure Databricks, il s’intègre donc au reste d’un job. Vous pouvez effectuer une étape de préparation avant la formation, combiner les tâches GPU et CPU dans un même poste, et utiliser différents accélérateurs par tâche.
Commander des tâches avec depends_on
Utilisez depends_on pour exécuter des tâches en séquence. Le pipeline suivant exécute un carnet de préparation, puis une tâche d’entraînement GPU qui ne commence qu’après le succès de la tâche de préparation :
resources:
jobs:
train_pipeline:
tasks:
- task_key: prep
notebook_task:
notebook_path: ./prep.py
- task_key: train
depends_on:
- task_key: prep
ai_runtime_task:
experiment: my-experiment
code_source_path: ./dist/code.tgz
deployments:
- command_path: ./command.sh
compute:
accelerator_type: GPU_1xA10
accelerator_count: 1
Combinez les tâches GPU et CPU
Dans le pipeline ci-dessus, seule l’étape d’entraînement nécessite un GPU. Garder le travail non lié au GPU, comme la préparation des données, dans des tâches séparées permet de concentrer le temps GPU sur l’entraînement.
Note
ai_runtime_task ne prend pas en charge les valeurs de tâche de travail Azure Databricks ({{tasks.<task_key>.values.<name>}} ou dbutils.jobs.taskValues). Pour transmettre les données entre les étapes, écrivez-les dans un emplacement partagé que les deux tâches peuvent lire, comme un volume Unity Catalog ou un fichier workspace, et référez ce chemin depuis chaque tâche.
Planifiez la charge de travail
Ajoutez un schedule à la tâche pour l’exécuter à intervalles réguliers. Envoiez le planning en pause pour que le déploiement du bundle ne démarre pas seul, puis remettez le programme en pause quand vous êtes prêt :
resources:
jobs:
train_pipeline:
schedule:
quartz_cron_expression: '0 0 9 * * ?'
timezone_id: UTC
pause_status: PAUSED
Promotion du développement à la production
La promotion du développement vers la production est une fonctionnalité standard du bundle dont la tâche AI Runtime hérite telle quelle.
Cibles et modes de regroupement
Définissez un objectif de production en mode: production parallèle avec votre objectif de développement. La cible contrôle où le paquet est déployé et comment ses ressources sont nommées :
targets:
dev:
mode: development
default: true
prod:
mode: production
Déployer et exécuter des applications
Déployez et exécutez le bundle sur une cible avec les commandes bundle standard :
databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev
Étapes suivantes
- Exécutez et gérez les charges de travail d’exécution IA depuis la ligne de commande avec la CLI d’exécution IA.
- Suivre les entraînements et gérer les points de contrôle. Voir Suivi et observabilité de l’expérience.