Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
Este recurso está no Public Preview. Para o utilizar, um administrador de espaço de trabalho deve ativar a pré-visualização do AI Runtime a partir da página de Pré-visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
Utilize Pacotes de Automação Declarativa para agendar uma carga de trabalho de GPU em tempo de execução de IA e combiná-la com outros trabalhos, como a preparação de dados a montante. Defina a carga de trabalho e o seu cronograma em YAML e, em seguida, implemente-os como uma tarefa. Para um pipeline de treino, execute o pré-processamento no CPU compute e inicie o treino GPU depois de os dados estarem prontos.
Este guia começa com uma carga de trabalho que imprime "Hello world", depois constrói um pipeline de pré-processamento e treino programado. Se já tem uma carga de trabalho do AI Runtime (YAML), veja Converter uma carga de trabalho do AI Runtime para um bundle.
Como funciona
- Um bundle contém o seu código e uma
databricks.ymlconfiguração. - Um job agrupa as tarefas e define quando elas são executadas.
- Um(a)
ai_runtime_taskexecuta o teu comando em computação GPU serverless.
O campo depends_on liga as tarefas num grafo acíclico dirigido (DAG), e o campo schedule programa a execução da tarefa periodicamente.
databricks bundle deploy Carrega o código e cria ou atualiza a tarefa.
databricks bundle run inicia imediatamente uma execução de tarefa. Em cada execução, o AI Runtime aprovisiona os recursos de computação da GPU, executa o seu comando e regista a execução no experimento MLflow nomeado.
Requirements
- Um espaço de trabalho numa região suportada. Ver Requisitos.
- A versão mais recente da CLI do Databricks, autenticada no seu espaço de trabalho. Atualize uma instalação existente antes de usar estes exemplos.
- Para o exemplo de pré-processamento, um volume existente do Unity Catalog. A identidade de execução do trabalho precisa dos privilégios
USE CATALOG,USE SCHEMA,READ VOLUMEeWRITE VOLUMEpara esse volume. Consulte Privilégios para volumes do catálogo Unity.
Exemplo de Hello World com ai_runtime_task
Este exemplo executa um comando shell numa GPU A10.
Cria um diretório para o bundle. Nesse diretório, crie
command.shcom o seguinte conteúdo:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Crie
databricks.ymlno mesmo diretório: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: trueA partir do diretório do bundle, valide, faça a implantação e execute a tarefa:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devAbra o URL de execução impresso pela CLI e veja a saída da tarefa
hello. ContémHello world. A execução também aparece nohello-ai-runtimeexperimento MLflow.
Exemplo mais complexo: agendar um pipeline de pré-processamento e treino
Este exemplo prepara um pequeno conjunto de dados no CPU e depois treina um modelo linear numa GPU A10. Ambas as tarefas usam o mesmo ficheiro de volume para passar dados entre elas. A tarefa está agendada para as 09:00 UTC diariamente, com o agendamento em pausa até a testar.
Criar o projeto
Crie um diretório separado com o seguinte layout:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyCrie
prep.pycom os seguintes conteúdos. Substitua<catalog>,<schema>, e<volume>pelos nomes dos seus volumes. Este caderno de origem normaliza os valores de entrada e escreve os dados preparados no 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}")Crie
src/train.pycom o seguinte conteúdo. Utilize o mesmo caminho de volume que emprep.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}")Criar
command.shpara correr o código de treino. O conjunto abaixo empacotasrc/, por issoCODE_SOURCE_PATHaponta para o diretório extraídosrc:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pyCrie
databricks.ymlcom o seguinte conteúdo. O pacote incluisrc/para a tarefa da GPU. Oprepnotebook corre em computação CPU serverless edepends_onsó iniciatraindepois deprepser concluído com êxito.max_concurrent_runs: 1impede que execuções deste trabalho sobrescrevam o ficheiro de entrada umas das outras: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
Testar e ativar o agendamento
A partir de
scheduled-training/, implemente o pacote e inicie uma execução manual:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devAbra o URL de execução impresso pela CLI. Confirme que
preptem sucesso antes detraincomeçar. A saídaprepreporta 10 linhas preparadas, e a saídatrainreportaTrained on cuda:0e a perda.Em
databricks.yml, altere opause_statusda agenda dePAUSEDparaUNPAUSED. O bloco de horários é agora:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDImplemente a alteração para ativar o horário diário:
databricks bundle deploy --target devDefinir
pause_status: UNPAUSEDpermite explicitamente este agendamento mesmo para um destino de desenvolvimento. Em Jobs & Pipelines, abra o trabalho implementado e confirme que o seu agendamento está ativo para as 09:00 UTC. Consulte Executar trabalhos numa programação.
Para pausar as execuções agendadas, defina pause_status: PAUSED e implemente novamente. Para remover o job de exemplo e os ficheiros carregados pelo bundle, execute o seguinte a partir do seu diretório bundle:
databricks bundle destroy --target dev
Os dados preparados no seu volume permanecem. Apaga a scheduled-training pasta de dados quando já não precisares dela.
Recursos adicionais
- Converta um YAML de carga de trabalho do AI Runtime existente num bundle. Veja Conversão de uma carga de trabalho do runtime de IA num bundle.
- Configure o empacotamento do código, os recursos de computação, os ambientes e os parâmetros das tarefas. Veja Configuração de tarefas do pacote de runtime de IA.
- Agende um notebook existente na GPU. Consulte Agendamento com a Jobs API e os Pacotes de Automação Declarativa.
- Acompanhe os treinos de corrida. Ver Rastreio e observabilidade de experiências.
- Modelo de checkpoint, otimizador e estado do pipeline de dados. Veja como melhorar o desempenho do treino e a resiliência em tempo de execução de IA.