Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in Anteprima Pubblica. Per utilizzarlo, un amministratore dello spazio di lavoro deve abilitare l'anteprima AI Runtime dalla pagina delle Anteprime . Vedere Gestire le anteprime di Azure Databricks.
Usa Declarative Automation Bundles per programmare un carico di lavoro GPU di AI Runtime e combinarlo con altri lavori, come la preparazione dei dati a monte. Definisci il carico di lavoro e il suo programma in YAML, poi esegui il deployment come un job. Per una pipeline di addestramento, esegui la preelaborazione su risorse di calcolo CPU e inizia l'addestramento GPU dopo che i dati sono pronti.
Questa guida inizia con un carico di lavoro che stampa "Hello world", poi costruisce una pipeline programmata di preprocessing e addestramento. Se hai già un file YAML di workload AI Runtime, vedi Conversione di un workload AI Runtime in un bundle.
Come funziona
- Un bundle contiene il tuo codice e una
databricks.ymlconfigurazione. - Un lavoro raggruppa i compiti e definisce quando vengono eseguiti.
- Un
ai_runtime_taskesegue il tuo comando su una GPU serverless.
Il campo depends_on collega i compiti in un grafo aciclico diretto (DAG) e il campo schedule pianifica l'esecuzione del processo a intervalli regolari.
databricks bundle deploy carica il codice e crea o aggiorna il processo.
databricks bundle run avvia immediatamente un'esecuzione del processo. Ad ogni esecuzione, AI Runtime provisiona le risorse di calcolo GPU, esegue il tuo comando e registra l'esecuzione nell'esperimento MLflow con nome specificato.
Requirements
- Un'area di lavoro in un'area supportata. Vedi requisiti.
- Installa l'ultima CLI Databricks, autenticata al tuo workspace. Aggiorna un'installazione esistente prima di usare questi esempi.
- Per l'esempio di preelaborazione, usa un volume di Unity Catalog esistente. L'identità di esecuzione del lavoro ha bisogno dei privilegi
USE CATALOG,USE SCHEMA,READ VOLUMEeWRITE VOLUMEper quel volume. Vedere Privilegi per i volumi del catalogo Unity.
Esempio di Hello World con ai_runtime_task
Questo esempio esegue un comando shell su una GPU A10.
Crea una directory per il bundle. In quella directory, crea
command.shcon i seguenti contenuti:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Crea
databricks.ymlnella stessa directory: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: trueDalla cartella bundle, validare, distribuire ed eseguire il job:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devApri l'URL di esecuzione stampato dalla CLI e visualizza l'output dell'attività
hello. ContieneHello world. Il run appare anche nell'esperimentohello-ai-runtimeMLflow.
Esempio più complesso: programmare una pipeline di preprocessing e addestramento
Questo esempio prepara un piccolo dataset sul calcolo CPU, poi addestra un modello lineare su una GPU A10. Entrambe le attività utilizzano lo stesso file di volume per trasferire dati tra di esse. Il lavoro è programmato per le 09:00 UTC ogni giorno, con il programma sospeso finché non lo testi.
Creare il progetto
Crea una directory separata con il seguente layout:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyCrea
prep.pycon i seguenti contenuti. Sostituisci<catalog>,<schema>, e<volume>con i nomi dei tuoi volumi. Questo notebook di origine normalizza i valori di input e scrive i dati preparati nel 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}")Crea
src/train.pycon i seguenti contenuti. Usa lo stesso percorso di volume diprep.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}")Crea
command.shper eseguire il codice di addestramento. Il bundle qui sotto impacchettiscesrc/, quindiCODE_SOURCE_PATHpunta alla directory estrattasrc:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pyCrea
databricks.ymlcon i seguenti contenuti. Il bundle crea pacchettisrc/per l'attività GPU. Ilprepnotebook funziona su CPU serverless edepends_oniniziatrainsolo dopo cheprepriesce.max_concurrent_runs: 1impedisce che le esecuzioni di questo lavoro sovrascrivano il file di input dell'altro: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
Testare e abilitare la pianificazione
Da
scheduled-training/, esegui il deployment del bundle e avvia un'esecuzione manuale:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devApri l'URL di esecuzione stampato dalla CLI. Conferma che
prepvenga completato correttamente prima chetraininizi. L'outputprepriporta 10 righe preparate, e l'outputtrainriportaTrained on cuda:0e la perdita.In
databricks.yml, cambia l'pause_statusdella pianificazione daPAUSEDaUNPAUSED. Il blocco di pianificazione è ora:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDDistribuisci la modifica per attivare la pianificazione giornaliera:
databricks bundle deploy --target devL'impostazione esplicita di
pause_status: UNPAUSEDabilita questa pianificazione anche per una destinazione di sviluppo. In Jobs & Pipelines, apri il job distribuito e conferma che la sua pianificazione sia attiva per le 09:00 UTC. Consultare Eseguire lavori secondo una pianificazione.
Per mettere in pausa le esecuzioni programmate, imposta pause_status: PAUSED e distribuisci di nuovo. Per rimuovere il job di esempio e i file caricati dal bundle, esegui quanto segue dalla sua directory bundle:
databricks bundle destroy --target dev
I dati preparati nel tuo volume rimangono. Elimina la scheduled-training directory dati quando non ne hai più bisogno.
Risorse aggiuntive
- Converti un YAML esistente del carico di lavoro di Runtime AI in un bundle. Vedi Conversione di un carico di lavoro AI Runtime in un bundle.
- Configura il packaging del codice, il compute, gli ambienti e i parametri del task. Vedi Configurare le attività del bundle AI Runtime.
- Pianifica un notebook esistente su GPU. Vedi Pianificare con l'API dei lavori e i bundle di automazione dichiarativa.
- Monitora le corse di allenamento. Vedi Tracciamento e osservabilità degli esperimenti.
- Checkpoint del modello, dell'ottimizzatore e dello stato della pipeline dati. Scopri come migliorare le prestazioni e la resilienza dell'addestramento su AI Runtime.