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.
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 einer Arbeitslast, die „Hello world“ ausgibt, und baut anschließend eine zeitgesteuerte Pipeline für die Vorverarbeitung und das Training auf. Wenn Sie bereits ein KI-Runtime-Workload-YAML haben, lesen Sie KI-Runtime-Workload in ein Bundle konvertieren.
Funktionsweise
- 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 Ihren Befehl auf der KI-Laufzeit 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 eine Jobausführung. Bei jedem Durchlauf stellt AI Runtime die GPU-Rechenleistung bereit, führt Ihren Befehl aus und zeichnet den Run im benannten MLflow-Experiment auf.
Requirements
- Ein Arbeitsbereich in einer unterstützten Region. Siehe Anforderungen.
- Die neueste Databricks CLI, authentifiziert auf Ihren Arbeitsbereich. 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 folgendem Inhalt. 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 Paket 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
Zeitplan testen und aktivieren
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
preperfolgreich ist, bevortrainstartet. Die Ausgabeprepmeldet 10 vorbereitete Zeilen, und die AusgabetrainmeldetTrained on cuda:0und den Verlust.In
databricks.ymländerepause_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. Weitere Informationen finden Sie unter Erstellen und Verwalten geplanter Notebookaufträge.
- Trainingsausführungen verfolgen. Siehe Experiment-Tracking und Beobachtbarkeit.
- Checkpoint-Modell, Optimierer und Zustand der Datenpipeline speichern. Siehe Trainingsleistung und Resilienz in AI Runtime verbessern.