Convertir une charge de travail AI Runtime en bundle

Convertir un YAML de charge d’exécution IA existant en Declarative Automation Bundles pour le gérer comme un travail persistant, ajouter un planning, et le composer avec des tâches de prétraitement. Utilisez databricks air convert-to-dabs pour générer le bundle, ou utilisez les mappages de champs sur cette page pour le convertir manuellement.

Requirements

Convertir automatiquement une charge de travail

Si vous exécutez déjà une charge de travail avec databricks air run --file train.yaml, convertissez son YAML de charge de travail avec databricks air convert-to-dabs.

  1. Commencez par votre fichier YAML existant et votre code. Par exemple, train.yaml peut pointer vers un script d’entraînement dans src/:

    experiment_name: my-training
    environment:
      dependencies:
        - torch
    compute:
      num_accelerators: 1
      accelerator_type: GPU_1xA10
    code_source:
      root_path: src
    command: python $CODE_SOURCE_PATH/train.py
    
  2. Depuis le répertoire contenant train.yaml, exécutez la conversion :

    databricks air convert-to-dabs train.yaml
    

    La commande crée les répertoires databricks.yml et generated_artifacts/ à côté du YAML. Il traduit la configuration localement. Le bundle téléverse le code lorsque vous le déployez. Pour d’autres dispositions de répertoires et options d’écrasement, voir Chemins de convertisseur et fichiers générés.

  3. Validez, déployez et exécutez le job généré :

    databricks bundle validate
    databricks bundle deploy
    databricks bundle run my-training --no-wait
    

Le convertisseur crée un travail avec une seule tâche GPU. Pour ajouter une planification et des tâches de prétraitement à databricks.yml, consultez la rubrique Planifier des charges de travail GPU et composer des tâches. Le travail déployé est conservé entre les exécutions. Utilisez databricks bundle destroy pour le supprimer une fois que vous avez terminé.

Chemins de convertisseur et fichiers générés

databricks air convert-to-dabs train.yaml écrit par défaut le bundle dans le répertoire du YAML d’entrée. Il résout un chemin relatif code_source.root_path par rapport au répertoire du YAML.

Pour une source de code, le répertoire source résolu doit se trouver strictement à l’intérieur du répertoire de sortie du bundle. Avec la position de sortie par défaut, root_path: . se résout à la racine du bundle et est rejeté. Soit utilisez un sous-répertoire source, comme src, soit sélectionnez un répertoire de sortie qui contient le répertoire source.

Par exemple, si /project/training/train.yaml utilise /project, la commande suivante écrit le bundle dans /project/training et empaquete root_path: .:

databricks air convert-to-dabs /project/training/train.yaml --output-dir /project

--output-dir modifie l’endroit où le bundle est écrit. Il ne copie pas et ne déplace pas le code source. Exécutez les commandes suivantes databricks bundle depuis le répertoire de sortie.

Si les fichiers générés existent déjà, la conversion s’arrête. Utilisez --force pour les écraser. Cela remplace la configuration du bundle généré, y compris les modifications manuelles de ce fichier.

Le convertisseur écrit les fichiers suivants :

  • databricks.yml: la configuration du bundle, incluant la tâche GPU et l’artefact de code.
  • generated_artifacts/command.sh: le script de commande.
  • generated_artifacts/training_config.yaml: la configuration de la charge de travail.
  • generated_artifacts/hyperparameters.yaml: écrit quand parameters est défini.
  • generated_artifacts/env_vars.json et generated_artifacts/secret_env_vars.json : créés lorsque des variables d’environnement ou des secrets sont définis.

Gardez les fichiers générés ensemble. Le bundle les téléverse lors du déploiement. Lorsque hyperparameters.yaml est présent à côté de command.sh, le runtime définit HYPERPARAMETERS_PATH sur le chemin de ce fichier.

Associez manuellement les champs de charge de travail

Utilisez les mappages suivants lors de la conversion manuelle vers un bundle depuis un YAML de charge de travail AI Runtime. Pour la conversion automatique, suivez Convertir une charge de travail automatiquement. Pour les définitions des champs de tâche, voir la référence des tâches AI Runtime.

Champ YAML de charge de travail Paramètre du bundle
experiment_name ai_runtime_task.experiment
command Déplacez la commande dans un script shell et faites-y référence avec ai_runtime_task.deployments[].command_path.
compute.accelerator_type ai_runtime_task.deployments[].compute.accelerator_type
compute.num_accelerators ai_runtime_task.deployments[].compute.accelerator_count
code_source Emballez le code avec un artefact tgz et référencez-le avec ai_runtime_task.code_source_path, ou utilisez un espace de travail téléversé ou un chemin de volume.
environment.dependencies Le environments[].spec.dependencies du travail.
environment.version environments[].spec.environment_version pour un environnement standard, ou environments[].spec.base_environment pour un environnement IA Databricks.
environment.docker_image.url ai_runtime_task.docker_image_url
env_variables, secrets Le environment_variables du travail et le environment_variables_key de la tâche.
parameters Un hyperparameters.yaml fichier à côté du script référencé par command_path. Le runtime définit HYPERPARAMETERS_PATH sur le chemin de ce fichier.
max_retries Le max_retries de la tâche.
timeout_minutes Le timeout_seconds de la tâche, en multipliant les minutes par 60.
mlflow_run_name ai_runtime_task.mlflow_run
mlflow_experiment_directory ai_runtime_task.mlflow_experiment_directory
mlflow_artifact_location ai_runtime_task.mlflow_artifact_location

Ressources additionnelles