Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Den här funktionen finns som allmänt tillgänglig förhandsversion. För att använda den måste en workspace-administratör aktivera AI Runtime-förhandsvisningen från sidan Förhandsgranskningar. Se Hantera förhandsversioner av Azure Databricks.
Använd Declarative Automation Bundles för att schemalägga en AI-runtime-GPU-arbetsbelastning och kombinera den med annat arbete, såsom upstream-dataförberedelse. Definiera arbetslasten och dess schema i YAML, och distribuera dem sedan som ett jobb. För en träningspipeline, kör förbehandling på CPU-resurser och starta GPU-träning efter att datan är klar.
Denna guide börjar med en arbetsbelastning som skriver ut "Hello world" och bygger sedan en schemalagd förbehandlings- och träningspipeline. Om du redan har en AI Runtime-arbetsbelastnings-YAML, se Konvertera en AI Runtime-arbetsbelastning till ett paket.
Så här fungerar det
- Ett paket innehåller din kod och en
databricks.ymlkonfiguration. - Ett jobb grupperar uppgifter och definierar när de körs.
- En
ai_runtime_taskkör ditt kommando på serverlösa GPU-beräkningsresurser.
Fältet depends_on kopplar samman uppgifter i en riktad acyklisk graf (DAG), och schedule fältet schemalägger ditt jobb att köras i en rytm.
databricks bundle deploy laddar upp koden och skapar eller uppdaterar jobbet.
databricks bundle run startar en jobbkörning omedelbart. Vid varje körning tillhandahåller AI Runtime GPU-beräkningen, kör ditt kommando och registrerar körningen i det namngivna MLflow-experimentet.
Requirements
- En arbetsyta i en region som stöds. Se Krav.
- Den senaste Databricks CLI är autentiserad till din arbetsyta. Uppdatera en befintlig installation innan du använder dessa exempel.
- För förbehandlingsexemplet behövs en befintlig Unity Catalog-volym. Jobbets köridentitet kräver
USE CATALOG,USE SCHEMA,READ VOLUME, ochWRITE VOLUMEprivilegier för den volymen. Se Behörigheter för Unity Catalog-volymer.
Hello world-exempel med ai_runtime_task
Det här exemplet kör ett shell-kommando på ett A10-grafikkort.
Skapa en katalog för paketet. I den katalogen, skapa
command.shmed följande innehåll:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Skapa
databricks.ymli samma katalog: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: trueFrån bundle-katalogen, validera, distribuera och kör jobbet:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devÖppna den kör-URL:en som skrivs ut av CLI:n och se
hellouppgiftens utdata. Den innehållerHello world. Körningen förekommer också ihello-ai-runtimeMLflow-experimentet.
Mer komplext exempel: Schemalägg en förbearbetnings- och träningspipeline
Detta exempel förbereder en liten datamängd på CPU och tränar sedan en linjär modell på en A10-GPU. Båda uppgifterna använder samma volymfil för att skicka data mellan sig. Jobbet är schemalagt till 09:00 UTC varje dag, med schemat pausat tills du testar det.
Skapa projektet
Skapa en separat katalog med följande layout:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pySkapa
prep.pymed följande innehåll. Ersätt<catalog>,<schema>, och<volume>med volymernas namn. Denna källnotebook normaliserar indatavärdena och skriver den förberedda datan till volymen:# 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}")Skapa
src/train.pymed följande innehåll. Använd samma volymväg som iprep.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}")Skapa
command.shför att köra träningskoden. Paketet nedan paketerarsrc/, såCODE_SOURCE_PATHpekar på den extraheradesrckatalogen:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pySkapa
databricks.ymlmed följande innehåll. Paketet paketerarsrc/för GPU-uppgiften. Notebookenprepkörs på serverlös CPU-beräkningskapacitet ochdepends_onstartartrainförst efter attprephar lyckats.max_concurrent_runs: 1förhindrar att körningar av detta jobb skriver över varandras indatafiler: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
Testa och aktivera schemat
Från
scheduled-training/, distribuera paketet och starta en manuell körning:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devÖppna URL:en för körningen som skrivs ut av CLI. Bekräfta att
preplyckas innantrainstartar. Utdatapreprapporterar 10 förberedda rader, ochtrainutdata rapporterarTrained on cuda:0och förlusten.I
databricks.yml, ändra schematspause_statusfrånPAUSEDtillUNPAUSED. Schemablocket är nu:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDDistribuera ändringen för att aktivera det dagliga schemat:
databricks bundle deploy --target devAtt uttryckligen ange
pause_status: UNPAUSEDaktiverar detta schema även för ett utvecklingsmål. I Jobs & Pipelines, öppna det driftsatta jobbet och bekräfta att dess schema är aktivt för 09:00 UTC. Se Kör jobb enligt ett schema.
För att pausa schemalagda körningar, ställ in pause_status: PAUSED och deploya igen. För att ta bort exempeljobbet och filerna som paketet laddar upp, kör följande från dess bundle-katalogen:
databricks bundle destroy --target dev
De förberedda uppgifterna i din volym finns kvar. Ta bort datakatalogen scheduled-training när du inte längre behöver den.
Ytterligare resurser
- Konvertera en befintlig AI-Runtime-arbetsbelastnings-YAML till ett paket. Se Konvertera en AI-runtime-arbetsbelastning till ett paket.
- Konfigurera kodpaket, beräkningstjänster, miljöer och uppgiftsparametrar. Se Konfigurera AI Runtime-paketuppgifter.
- Schemalägg en befintlig notebook på GPU. Se Schemaläggning med Jobs API och deklarativa automationspaket.
- Löp träningspass. Se Experimentspårning och observerbarhet.
- Checkpoint-modell, optimerare och datapipeline-tillstånd. Se Förbättra träningsprestanda och motståndskraft på AI Runtime.