Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Dieses Feature befindet sich in der Public Preview. Um sie zu verwenden, muss ein Arbeitsbereichsadministrator die AI-Laufzeit-Vorschau auf der Previews-Seite aktivieren. Siehe Manage Azure Databricks Previews.
Verwenden Sie Declarative Automation Bundles, um eine KI-Laufzeit-GPU-Workload zu planen und sie mit anderer Arbeit zu kombinieren, wie z. B. der Upstream-Datenvorbereitung. Definiere die Arbeitslast und ihren Zeitplan in YAML und deploye sie dann als Job. Für eine Trainingspipeline führen Sie die Vorverarbeitung auf dem CPU-Compute aus und starten Sie das GPU-Training, nachdem die Daten bereit sind.
Dieser Leitfaden beginnt mit einem Workload, der "Hello world" druckt, und erstellt dann eine geplante Vorverarbeitungs- und Trainingspipeline. Wenn Sie bereits ein KI-Runtime-Workload-YAML haben, lesen Sie KI-Runtime-Workload in ein Bundle konvertieren.
So funktioniert es
- Ein Bundle enthält deinen Code und eine
databricks.ymlKonfiguration. - Ein Job gruppiert Aufgaben und definiert, wann sie ausgeführt werden.
- Ein
ai_runtime_taskführt deinen Befehl auf serverloser GPU-Rechenleistung aus.
Das depends_on Feld verbindet Aufgaben zu einem gerichteten azyklischen Graphen (DAG), und das schedule Feld plant den Job so ein, dass er in einem Rhythmus läuft.
databricks bundle deploy Lädt den Code hoch und erstellt oder aktualisiert den Job.
databricks bundle run startet sofort einen Jobrun. Bei jedem Durchlauf stellt AI Runtime die GPU-Rechenleistung bereit, führt Ihren Befehl aus und zeichnet den Run im benannten MLflow-Experiment auf.
Anforderungen
- Ein Arbeitsbereich in einer unterstützten Region. Siehe Anforderungen.
- Die neueste Databricks-CLI, bei Ihrem Arbeitsbereich authentifiziert. Aktualisieren Sie eine bestehende Installation, bevor Sie diese Beispiele verwenden.
- Für das Preprocessing-Beispiel benötigen Sie ein bestehendes Unity-Catalog-Volume. Die Lauf-Identität des Jobs benötigt
USE CATALOG,USE SCHEMA, ,READ VOLUMEundWRITE VOLUMEPrivilegien für dieses Volumen. Siehe Berechtigungen für Unity-Katalogvolumes.
Hallo-Welt-Beispiel mit ai_runtime_task
Dieses Beispiel führt einen Shell-Befehl auf einer A10-GPU aus.
Erstelle ein Verzeichnis für das Bundle. In diesem Verzeichnis erstellen Sie
command.shmit folgendem Inhalt:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Im selben Verzeichnis
databricks.ymlerstellen:bundle: name: hello-ai-runtime resources: jobs: hello: name: hello-ai-runtime tasks: - task_key: hello environment_key: default ai_runtime_task: experiment: hello-ai-runtime deployments: - command_path: ${workspace.file_path}/command.sh compute: accelerator_type: GPU_1xA10 accelerator_count: 1 environments: - environment_key: default spec: environment_version: '6' targets: dev: mode: development default: trueAus dem Bundle-Verzeichnis validieren, deployen und führen Sie den Job aus:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devÖffnen Sie die von der CLI ausgedruckte Run-URL und sehen Sie sich die Ausgabe der
helloAufgabe an. Sie enthältHello world. Der Lauf taucht auch imhello-ai-runtimeMLflow-Experiment auf.
Komplexeres Beispiel: Planen Sie eine Preprocessing- und Trainingspipeline
Dieses Beispiel bereitet einen kleinen Datensatz auf der CPU vor und trainiert dann ein lineares Modell auf einer A10-GPU. Beide Aufgaben verwenden dieselbe Volumendatei, um Daten zwischen ihnen zu übertragen. Der Job ist täglich um 09:00 UTC angesetzt, der Zeitplan ist pausiert, bis du ihn testest.
Erstelle das Projekt
Erstellen Sie ein separates Verzeichnis mit folgendem Layout:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyErstellen Sie
prep.pymit den folgenden Inhalten. Ersetze<catalog>,<schema>und<volume>durch die Namen deiner Volumes. Dieses Quellnotebook normalisiert die Eingabewerte und schreibt die vorbereiteten Daten auf das Volume:# Databricks notebook source import json from pathlib import Path data_path = Path("/Volumes/<catalog>/<schema>/<volume>/scheduled-training/data.json") inputs = [value / 10 for value in range(10)] data = {"x": inputs, "y": [2 * value + 1 for value in inputs]} data_path.parent.mkdir(parents=True, exist_ok=True) data_path.write_text(json.dumps(data)) print(f"Prepared {len(inputs)} rows at {data_path}")Erstellen Sie
src/train.pymit den folgenden Inhalten. Verwenden Sie denselben Volume-Pfad wie inprep.py:import json from pathlib import Path import torch data_path = Path("/Volumes/<catalog>/<schema>/<volume>/scheduled-training/data.json") data = json.loads(data_path.read_text()) x = torch.tensor(data["x"], device="cuda").reshape(-1, 1) y = torch.tensor(data["y"], device="cuda").reshape(-1, 1) model = torch.nn.Linear(1, 1).to("cuda") optimizer = torch.optim.SGD(model.parameters(), lr=0.1) for _ in range(200): optimizer.zero_grad() loss = torch.nn.functional.mse_loss(model(x), y) loss.backward() optimizer.step() print(f"Trained on {x.device}: loss={loss.item():.4f}")Erstellen Sie
command.sh, um den Trainingscode auszuführen. Das folgende Bundle paketiertsrc/, sodassCODE_SOURCE_PATHauf das extrahiertesrc-Verzeichnis verweist:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pyErstellen Sie
databricks.ymlmit den folgenden Inhalten. Das Bundle enthältsrc/für die GPU-Aufgabe. DasprepNotebook läuft mit serverloser CPU-Berechnung unddepends_onstartettrainerst, wennpreperfolgreich abgeschlossen wird.max_concurrent_runs: 1verhindert, dass Läufe dieses Jobs gegenseitig die Eingabedatei des anderen überschreiben:bundle: name: scheduled-training artifacts: code: type: tgz path: . include: [src] files: - source: ./dist/code.tgz resources: jobs: train_pipeline: name: scheduled-training max_concurrent_runs: 1 schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: PAUSED tasks: - task_key: prep notebook_task: notebook_path: ./prep.py - task_key: train depends_on: - task_key: prep environment_key: training ai_runtime_task: experiment: scheduled-training code_source_path: ./dist/code.tgz deployments: - command_path: ${workspace.file_path}/command.sh compute: accelerator_type: GPU_1xA10 accelerator_count: 1 environments: - environment_key: training spec: environment_version: '6' dependencies: - torch targets: dev: mode: development default: true
Testen und aktivieren Sie die Zeitplanungsfunktion
Von
scheduled-training/aus stelle das Bundle bereit und starte einen manuellen Lauf:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devÖffnen Sie die von der CLI ausgedruckte Run-URL. Bestätigen Sie, dass das
prepgelingt, bevortrainstartet. Die Ausgabeprepmeldet 10 vorbereitete Zeilen, und die AusgabetrainmeldetTrained on cuda:0und den Verlust.In
databricks.ymländere denpause_statusdes Zeitplans vonPAUSEDzuUNPAUSED. Der Zeitplanblock ist jetzt:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDStellen Sie die Änderung bereit, um den täglichen Zeitplan zu aktivieren:
databricks bundle deploy --target devDas Festlegen von
pause_status: UNPAUSEDaktiviert diese Zeitplanvorgabe explizit selbst für ein Entwicklungsziel. In Jobs & Pipelines öffnen Sie den bereitgestellten Job und bestätigen, dass sein Zeitplan für 09:00 UTC aktiv ist. Siehe Ausführen von Jobs nach einem Zeitplan.
Um geplante Durchläufe zu pausieren, setzen Sie pause_status: PAUSED und deployen erneut. Um den Beispieljob und die vom Bundle hochgeladenen Dateien zu entfernen, führen Sie Folgendes aus dem Bundle-Verzeichnis aus:
databricks bundle destroy --target dev
Die vorbereiteten Daten in Ihrem Volume bleiben erhalten. Lösche das scheduled-training Datenverzeichnis, wenn du es nicht mehr brauchst.
Weitere Ressourcen
- Wandeln Sie eine bestehende KI-Laufzeit-Workload-YAML in ein Bundle um. Siehe Konvertieren einer KI-Runtime-Workload in ein Paket.
- Konfigurieren Sie Codepakete, Rechenressourcen, Umgebungen und Aufgabenparameter. Siehe „AI-Runtime-Bundle-Aufgaben konfigurieren“.
- Plane ein bestehendes Notebook für die Ausführung auf einer GPU. Siehe Schedule mit der Jobs-API und deklarativen Automatisierungspaketen.
- Trainingsläufe verfolgen Siehe Experiment-Tracking und Beobachtbarkeit.
- Checkpoint-Modell, Optimierer und Zustand der Datenpipeline speichern. Siehe Trainingsleistung und Resilienz in AI Runtime verbessern.