Konvertiere eine KI-Laufzeit-Workload in ein Bundle

Konvertiere ein bestehendes KI-Laufzeit-Workload-YAML in Declarative Automation Bundles, um es als dauerhaften Job zu verwalten, füge einen Zeitplan hinzu und setze es mit Vorverarbeitungsaufgaben zusammen. Verwenden Sie databricks air convert-to-dabs, um das Bündel zu generieren, oder verwenden Sie die Feldzuordnungen auf dieser Seite, um es manuell zu konvertieren.

Anforderungen

  • Ein bestehendes Workload-YAML und dessen Trainingscode.
  • Die neueste Databricks CLI. Aktualisieren Sie eine bestehende Installation vor der Konvertierung.
  • Um den generierten Job bereitzustellen und auszuführen, ist ein unterstützter Arbeitsbereich mit aktivierter AI-Laufzeit-Vorschau sowie eine damit authentifizierte CLI erforderlich. Weitere Informationen unter GPU-Workloads planen und Aufgaben erstellen.

Einen Workload automatisch umwandeln

Wenn du bereits eine Workload mit databricks air run --file train.yamlausführst, konvertiere deren Workload-YAML mit databricks air convert-to-dabs.

  1. Beginne mit deinem vorhandenen Workload, YAML und Code. Zum Beispiel kann src/ auf ein Trainingsskript in train.yaml verweisen:

    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. Aus dem Verzeichnis, das train.yaml enthält, führen Sie die Umwandlung aus:

    databricks air convert-to-dabs train.yaml
    

    Der Befehl erstellt databricks.yml und ein generated_artifacts/-Verzeichnis neben dem YAML. Es übersetzt die Konfiguration lokal. Das Bundle lädt den Code hoch, wenn du es deployest. Für andere Verzeichnislayouts und Überschreiboptionen siehe Konverterpfade und generierte Dateien.

  3. Validieren, deployen und führen Sie den generierten Job aus:

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

Der Konverter erstellt einen Job mit einer GPU-Aufgabe. Um einen Zeitplan und Vorverarbeitungsaufgaben zu databricks.yml hinzufügen, folgen Sie der Anleitung GPU-Workloads planen und Aufgaben erstellen. Der eingesetzte Job bleibt zwischen den Durchläufen bestehen. Benutze databricks bundle destroy, um es zu entfernen, wenn du fertig bist.

Konverterpfade und generierte Dateien

databricks air convert-to-dabs train.yaml schreibt das Bundle standardmäßig in das Verzeichnis der Eingabe-YAML-Datei. Es löst einen relativen Pfad code_source.root_path relativ zum YAML-Verzeichnis auf.

Für eine Codequelle muss das aufgelöste Quellverzeichnis streng innerhalb des Bundle-Ausgabeverzeichnisses liegen. Mit dem Standard-Ausgabestandort wird root_path: . zu dem Bundle-Stammverzeichnis aufgelöst und wird abgelehnt. Entweder verwenden Sie ein Quellunterverzeichnis, wie src, oder wählen Sie ein Ausgabeverzeichnis aus, das das Quellverzeichnis enthält.

Zum Beispiel schreibt der folgende Befehl, wenn /project/training/train.yamlroot_path: . verwendet, das Bündel in /project und paketiert /project/training:

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

--output-dir ändert, wo das Bundle geschrieben wird. Es kopiert oder verschiebt den Quellcode nicht. Führe die folgenden databricks bundle Befehle im Ausgabeverzeichnis aus.

Wenn bereits generierte Dateien existieren, stoppt die Konvertierung. Verwenden Sie --force, um sie zu überschreiben. Dies ersetzt die generierte Bundle-Konfiguration, einschließlich aller manuellen Änderungen an dieser Datei.

Der Konverter schreibt folgende Dateien:

  • databricks.yml: die Bundle-Konfiguration, einschließlich der GPU-Aufgabe und des Code-Artefakts.
  • generated_artifacts/command.sh: Das Befehlsskript.
  • generated_artifacts/training_config.yaml: die Arbeitslastkonfiguration.
  • generated_artifacts/hyperparameters.yaml: geschrieben, wenn parameters gesetzt ist.
  • generated_artifacts/env_vars.json und generated_artifacts/secret_env_vars.json: ausgegeben, wenn Umgebungsvariablen oder Geheimnisse gesetzt werden.

Behalte die generierten Dateien zusammen. Das Bundle lädt sie während der Bereitstellung hoch. Wenn hyperparameters.yaml neben command.sh vorhanden ist, setzt die Laufzeit HYPERPARAMETERS_PATH auf diese Datei.

Arbeitslastfelder manuell zuordnen

Verwenden Sie die folgenden Mappings beim manuellen Umwandeln in ein Bundle aus einem KI-Runtime-Workload YAML. Für die automatische Konvertierung folgen Sie Einen Workload automatisch konvertieren. Für Definitionen von Aufgabenfeldern für Tasks siehe die AI-Runtime-Aufgabenreferenz.

Workload-YAML-Feld Bündeleinstellung
experiment_name ai_runtime_task.experiment
command Verschieben Sie den Befehl in ein Shell-Skript und referenzieren Sie ihn mit 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 Paketiere den Code mit einem tgz Artefakt und referenziere ihn mit ai_runtime_task.code_source_path, oder verwende einen hochgeladenen Arbeitsbereich oder Volumenpfad.
environment.dependencies Der Job ist environments[].spec.dependencies.
environment.version environments[].spec.environment_version für eine Standardumgebung oder environments[].spec.base_environment für eine Databricks-KI-Umgebung.
environment.docker_image.url ai_runtime_task.docker_image_url
env_variables, secrets Des Jobs environment_variables und der Aufgabe environment_variables_key.
parameters Eine hyperparameters.yaml Datei neben dem Skript, auf das sich command_path bezieht. Die Laufzeit weist HYPERPARAMETERS_PATH dieser Datei zu.
max_retries Die Aufgabe max_retries.
timeout_minutes Die Aufgabe timeout_seconds, wobei Minuten mit 60 multipliziert werden.
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

Weitere Ressourcen