Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Utiliza Paquetes de Automatización Declarativa para programar una carga de trabajo de GPU de AI Runtime y combinarla con otros trabajos, como la preparación previa de datos. Define la carga de ejecución y su programación en YAML y luego despliégalos como una tarea. Para una canalización de entrenamiento, ejecuta preprocesamiento en el cómputo de CPU y comienza el entrenamiento con GPU una vez que los datos estén listos.
Esta guía comienza con una carga de trabajo que imprime "Hello world" y luego construye una canalización programada de preprocesamiento y entrenamiento. Si ya tienes una carga de trabajo en tiempo de ejecución de IA en YAML, consulta Convertir una carga de trabajo en tiempo de ejecución de IA a un paquete.
Cómo funciona
- Un bundle contiene tu código y una
databricks.ymlconfiguración. - Un trabajo agrupa las tareas y define cuándo se ejecutan.
-
ai_runtime_taskejecuta tu comando en AI Runtime.
El depends_on campo conecta las tareas en un grafo acíclico dirigido (DAG), y el schedule campo programa tu trabajo para que se ejecute con una cadencia.
databricks bundle deploy Sube el código y crea o actualiza la tarea.
databricks bundle run inicia una ejecución del trabajo inmediatamente. En cada ejecución, AI Runtime provisiona el cómputo de la GPU, ejecuta tu comando y registra la ejecución en el experimento de MLflow con el nombre indicado.
Requirements
- Un espacio de trabajo en una región compatible. Ver Requisitos.
- La CLI de Databricks más reciente, autenticada en tu espacio de trabajo. Actualiza una instalación existente antes de usar estos ejemplos.
- Para el ejemplo de preprocesamiento, un volumen existente de Unity Catalog. La identidad de ejecución del trabajo necesita los privilegios
USE CATALOG,USE SCHEMA,READ VOLUMEyWRITE VOLUMEpara ese volumen. Consulte Privilegios para volúmenes del catálogo de Unity.
Ejemplo de Hello World con ai_runtime_task
Este ejemplo ejecuta un comando shell en una GPU A10.
Crea un directorio para el paquete. En ese directorio, crea
command.shcon el siguiente contenido:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Crea
databricks.ymlen el mismo directorio: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: trueDesde el directorio del paquete, valida, despliega y ejecuta la tarea:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devAbre la URL de ejecución impresa por la CLI y ve la salida de la tarea
hello. ContieneHello world. La ejecución también aparece en el experimentohello-ai-runtimeMLflow.
Ejemplo más complejo: programar una cadena de preprocesamiento y entrenamiento
Este ejemplo prepara un pequeño conjunto de datos sobre computación de CPU y luego entrena un modelo lineal en una GPU A10. Ambas tareas utilizan el mismo archivo de volumen para pasar datos entre ellas. El trabajo está programado para las 09:00 UTC todos los días, con el horario pausado hasta que lo pruebes.
Creación del proyecto
Crea un directorio separado con el siguiente diseño:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyCrea
prep.pycon el siguiente contenido. Sustituye<catalog>,<schema>, y<volume>por los nombres de tus volúmenes. Este cuaderno fuente normaliza los valores de entrada y escribe los datos preparados en el volumen:# 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 el siguiente contenido. Utiliza la misma ruta del volumen que enprep.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}")Cree
command.shpara ejecutar el código de entrenamiento. El paquete siguiente empaquetasrc/, por lo queCODE_SOURCE_PATHapunta al directoriosrcextraído:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pyCrea
databricks.ymlcon el siguiente contenido. El paquete incluyesrc/para la tarea de la GPU. Elprepnotebook funciona con computación de CPU sin servidor ydepends_onsolo iniciatraindespués de queprepse complete correctamente.max_concurrent_runs: 1evita que las ejecuciones de este trabajo sobrescriban los archivos de entrada entre sí: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
Prueba y habilita la programación
Desde
scheduled-training/, despliega el paquete y comienza una ejecución manual:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devAbre la URL de la ejecución impresa por la CLI. Confirma que
prepse complete correctamente antes de quetrainempiece. Laprepsalida informa de 10 filas preparadas, y latrainsalida informaTrained on cuda:0y de la pérdida.En
databricks.yml, cambia elpause_statusdel calendario dePAUSEDaUNPAUSED. El bloque de horarios es ahora:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDDespliega el cambio para activar el horario diario:
databricks bundle deploy --target devConfigurar
pause_status: UNPAUSEDhabilita explícitamente esta programación incluso para un objetivo de desarrollo. En Jobs & Pipelines, abre el trabajo desplegado y confirma que su horario está activo a las 09:00 UTC. Consulte Ejecución de trabajos según una programación.
Para pausar las ejecuciones programadas, configura pause_status: PAUSED y vuelve a desplegar. Para eliminar el trabajo de ejemplo y los archivos subidos por el paquete, ejecuta lo siguiente desde su directorio de paquete:
databricks bundle destroy --target dev
Los datos preparados en tu volumen de almacenamiento permanecen. Elimina el scheduled-training directorio de datos cuando ya no lo necesites.
Recursos adicionales
- Convierte un YAML de carga de trabajo de IA en tiempo de ejecución existente en un paquete. Consulta Convertir una carga de trabajo de AI Runtime en un paquete.
- Configura el empaquetado del código, los recursos de procesamiento, los entornos y los parámetros de la tarea. Consulta Configuración de tareas del paquete AI Runtime.
- Programa un notebook existente en la GPU. Consulte Creación y administración de trabajos de cuaderno programados.
- Haz seguimiento de las sesiones de entrenamiento. Consulta Seguimiento y observabilidad de experimentos.
- Punto de control del modelo, optimizador y estado de la tubería de datos. Consulta Mejorar el rendimiento y la resiliencia del entrenamiento en AI Runtime.