Converti un carico di lavoro di runtime AI in un pacchetto

Converti un YAML di un workload AI Runtime esistente in Declarative Automation Bundles per gestirlo come un lavoro persistente, aggiungere una pianificazione e comporlo con compiti di pre-elaborazione. Usa databricks air convert-to-dabs per generare il bundle, oppure usa le mappature dei campi in questa pagina per convertirlo manualmente.

Requisiti

Converti automaticamente un workload

Se già esegui un workload con databricks air run --file train.yaml, converti il file YAML del workload con databricks air convert-to-dabs.

  1. Inizia con il tuo workload esistente, YAML e codice. Ad esempio, train.yaml può puntare a uno script di addestramento in src/:

    experiment_name: my-training
    environment:
      dependencies:
        - torch
    compute:
      num_accelerators: 1
      accelerator_type: GPU_1xA10
    code_source:
      type: snapshot
      snapshot:
        root_path: src
    command: python $CODE_SOURCE_PATH/train.py
    
  2. Dalla directory che contiene train.yaml, esegui la conversione:

    databricks air convert-to-dabs train.yaml
    

    Il comando crea un databricks.yml e una directory generated_artifacts/ accanto al YAML. Traduce localmente la configurazione. Il bundle carica il codice quando lo distribuisci. Per altri layout di directory e opzioni di sovrascrittura, vedi Percorso di convertitore e file generati.

  3. Convalida, pubblica ed esegui il processo generato:

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

Il convertitore crea un lavoro con una sola attività GPU. Per aggiungere una pianificazione e attività di preelaborazione a databricks.yml, segui Pianificare i carichi di lavoro GPU e comporre attività. Il job distribuito persiste tra una run e l'altra. Usa databricks bundle destroy per rimuoverlo quando hai finito.

Percorsi del convertitore e file generati

databricks air convert-to-dabs train.yaml scrive il bundle nella directory del file YAML di input per impostazione predefinita. Risolve un percorso relativo code_source.snapshot.root_path rispetto alla directory del file YAML.

Per una sorgente di codice snapshot, la directory sorgente risolta deve trovarsi strettamente all'interno della directory di output del bundle. Con la posizione di output predefinita, root_path: . si risolve alla radice del bundle e viene rifiutato. O si utilizza una sottocartella sorgente, come src, oppure si seleziona una cartella di output che contenga la directory sorgente.

Ad esempio, se /project/training/train.yaml usa root_path: ., il seguente comando scrive il bundle in /project e impacchetta /project/training:

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

--output-dir modifica il punto in cui il bundle viene scritto. Non copia né muove il codice sorgente. Esegui i comandi successivi databricks bundle nella cartella di output.

Se i file generati esistono già, la conversione si interrompe. Usa --force per sovrascriverli. Questo sostituisce la configurazione del bundle generato, incluse eventuali modifiche manuali a quel file.

Il convertitore scrive i seguenti file:

  • databricks.yml: la configurazione del bundle, inclusi l'attività GPU e l'artefatto di codice.
  • generated_artifacts/command.sh: lo script di comando.
  • generated_artifacts/training_config.yaml: la configurazione del carico di lavoro.
  • generated_artifacts/hyperparameters.yaml: scritto quando parameters è impostato.
  • generated_artifacts/env_vars.json e generated_artifacts/secret_env_vars.json: scritto quando vengono impostate variabili di ambiente o segreti.

Mantieni insieme i file generati. Il bundle li carica durante il deployment. Quando hyperparameters.yaml è presente accanto a command.sh, il runtime imposta HYPERPARAMETERS_PATH su quel file.

Mappare manualmente i campi di carico di lavoro

Usa le seguenti mappature quando converti manualmente in un bundle da un YAML di workload AI Runtime. Per la conversione automatica, segui Convertire automaticamente un carico di lavoro. Per le definizioni dei campi del task, consulta il riferimento al task AI Runtime.

Campo YAML del carico di lavoro Impostazione del pacchetto
experiment_name ai_runtime_task.experiment
command Sposta il comando in uno script shell e fai riferimento a esso con 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 Impacchetta il codice con un artefatto tgz e farvi riferimento con ai_runtime_task.code_source_path, oppure usa un percorso di workspace o volume caricato.
environment.dependencies Il lavoro environments[].spec.dependencies.
environment.version environments[].spec.environment_version per un ambiente Standard, o environments[].spec.base_environment per un ambiente di IA Databricks.
environment.docker_image.url ai_runtime_task.docker_image_url
env_variables, secrets Il environment_variables del lavoro e il environment_variables_key del compito.
parameters Un hyperparameters.yaml file accanto allo script citato da command_path. Il runtime imposta HYPERPARAMETERS_PATH su questo file.
max_retries Del compito max_retries.
timeout_minutes Il timeout_seconds dell'attività, moltiplicando i minuti per 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

Risorse aggiuntive