Ray no AI Runtime
Visualização
Esse recurso está em Prévia Pública.
Se você estiver usando o compute clássico do Ray no Databricks com o Databricks Runtime ML, consulte Ray no Databricks.
O Ray é um framework de código aberto para dimensionar cargas de trabalho Python. Você pode executar o Ray no AI Runtime sem provisionamento ou gerenciar a infraestrutura de GPU subjacente.
Por que usar o Ray no AI Runtime
O Ray é comumente usado para distribuir cargas de trabalho em Python, como treinamento de modelo, inferência em lotes, processamento de dados e ajuste de hiperparâmetros. No AI Runtime, o Ray pode acessar dados em volumes do Unity Catalog, rastrear experimentos com o MLflow e ser executado como parte de fluxos de trabalho de produção.
Você pode usar bibliotecas comuns do Ray, como Ray Core, Ray Data, Ray Train e Ray Tune, no AI Runtime. As cargas de trabalho Ray existentes podem continuar usando as APIs padrão das bibliotecas.
Como o Ray funciona com o AI Runtime
Cada aplicativo Ray é executado em um cluster Ray, que pode conter um ou mais nós. O AI Runtime provisiona os nós, e o Ray agenda tarefas e atores em seus recursos de CPU e GPU disponíveis. Como iniciar o Ray depende da interface de execução:
Interface | Nós | Começar o Ray |
|---|---|---|
Notebook | O único nó conectado ao notebook | Chamar |
CLI do Databricks | Um conjunto fixo de um ou mais nós | Start the head on node 0 and join the remaining nodes as workers using a reusable bootstrap script |
Use o Ray em notebooks
Quando seu Notebook estiver conectado ao compute de GPU AI Runtime, use ray_init() do Databricks AI Runtime SDK para começar o Ray no nó anexado:
from databricks.air import ray_init
ray_init()
ray_init() chama a API ray.init() padrão, configura o painel do Ray para acesso por meio do proxy do driver do Databricks e imprime a URL do painel na saída do notebook. Use o painel para inspecionar jobs, tarefas, atores, logs e uso de recursos do Ray enquanto seu código é executado.
ray_init() requer a versão 5 e acima do ambiente. Na versão 5, importe-o de serverless_gpu em vez de databricks.air. O Databricks AI v6 inclui Ray. Se você usar o Standard v6, instale o Ray antes de chamar ray_init(). Consulte Configurar seu ambiente.
Exemplos de Notebooks
Exemplo | Descrição |
|---|---|
Envie tarefas de GPU assíncronas no compute anexado, inspecione o agendamento no dashboard do Ray e recupere os resultados. | |
Execute testes de GPU fracionária concorrentes para um classificador de imagens PyTorch e use o algoritmo ASHA (asynchronous successive halving algorithm) para interromper antecipadamente configurações com baixo desempenho. | |
Execute a inferência em lote multilíngue com oito réplicas vLLM persistentes em 8 GPUs H100 e salve os resultados como Parquet em um volume do Unity Catalog. |
Use Ray com a CLI do Databricks
Os comandos da CLI do Databricks para o AI Runtime são compatíveis com cargas de trabalho Ray de nó único e multinó. Na configuração da carga de trabalho, especifique um accelerator_type fixo e o num_accelerators total. A receita para começar a usar o Ray Core inclui um script de inicialização reutilizável. Na command da carga de trabalho, defina RAY_ENTRYPOINT como o caminho para o seu arquivo Python e execute o script de inicialização. O script de inicialização faz o seguinte:
- No nó 0, ele inicia o head do Ray e executa o ponto de entrada configurado.
- Em todos os outros nós, ele inicia um worker Ray e o mantém conectado enquanto o ponto de entrada é executado.
- Após o término do ponto de entrada, ele interrompe os processos do Ray.
No aplicativo, conecte-se ao cluster com ray.init(address="auto").
Com o ambiente Standard, adicione ray ou o recurso extra necessário, como ray[data], ray[train] ou ray[tune], às dependências da carga de trabalho. O Databricks AI v6 inclui o Ray.
Começar a usar o Ray
Os exemplos mínimos a seguir apresentam as principais bibliotecas do Ray e compartilham o mesmo padrão de inicialização do cluster.
Exemplo | Descrição |
|---|---|
Comece um cluster Ray em duas GPUs A10 e programe uma tarefa do Ray Core por GPU. | |
Treine um perceptron multicamadas pequeno com um worker do Ray Train por GPU. | |
Execute um pipeline de processamento de dados sintéticos em um cluster Ray. | |
Ajuste um perceptron multicamada pequeno com dados sintéticos, com um teste por GPU. |
Exemplos adicionais de CLI
Exemplo | Descrição |
|---|---|
Faça o ajuste fino do ResNet-50 com um worker de paralelismo de dados distribuído por GPU A10 em dois nós. | |
Ajuste fino do Qwen2.5-3B com um worker de processamento paralelo de dados distribuído por GPU em um nó 8x H100. | |
Gere respostas com Qwen2.5-7B-Instruct e grave os resultados em um volume do Unity Catalog no formato Parquet. | |
Pesquise configurações LoRA para Qwen2.5-0.5B em quatro GPUs A10 e interrompa os testes com desempenho inferior usando o programador ASHA. | |
Pesquise os hiperparâmetros do XGBoost em quatro GPUs A10, faça o registro da melhor configuração no MLflow e registre o modelo no Unity Catalog. |
Trabalhar com dados e recursos do Databricks
As cargas de trabalho do Ray podem acessar dados em volumes do Unity Catalog, registrar execuções com o MLflow e ser executadas como tarefas do Lakeflow Jobs definidas com pacotes de automação declarativa.
Acessar dados no Unity Catalog
Para dados tabulares em uma tabela do Unity Catalog, use ray.data.read_databricks_tables() para ler uma tabela ou executar uma query do SQL por meio de um Databricks SQL warehouse. Especifique o ID do warehouse, o catálogo e o esquema, pois o AI Runtime não fornece uma sessão Spark local. Você pode usar SQL para executar joins, agregações e filtros antes que o Ray processe os resultados.
Para dados baseados em arquivos e não estruturados, use um volume do Unity Catalog. Os workers do Ray podem acessar arquivos usando seus caminhos /Volumes/<catalog>/<schema>/<volume>/.... Por exemplo, o Ray Data pode read.parquet com ray.data.read_parquet() e gravar os resultados com Dataset.write_parquet().
Acompanhe e orquestre cargas de trabalho
Use o MLflow para registrar parâmetros, métricas e artefatos de uma carga de trabalho do Ray. Consulte Acompanhamento de experimentos e observabilidade.
Para programar a carga de trabalho ou criá-la com tarefas de preparação de dados de CPU, use os Lakeflow Jobs e Declarative Automation Bundles. Veja Programar workloads de GPU e compose tarefas.
Migrar uma carga de trabalho Ray existente
A migração de uma carga de trabalho Ray autogerenciada envolve a substituição de sua configuração de infraestrutura e integrações de serviço pelo modelo de execução do AI Runtime.
Avaliar sua carga de trabalho
Antes de migrar, reveja as limitações. Confirme se a carga de trabalho pode ser executada em um cluster de tamanho fixo com um tipo de acelerador.
Migrar a carga de trabalho
Para migrar uma carga de trabalho Ray auto-gerenciada:
- Escolha um notebook para desenvolvimento interativo de nó único ou a CLI do Databricks para jobs de nó único ou multinó.
- Mapeie os recursos de cluster existentes para um tipo de acelerador e uma contagem de aceleradores do AI Runtime. Consulte Opções de hardware.
- Substitua a startup de cluster existente por
ray_init()em um notebook ou no bootstrap documentado de head e worker em uma carga de trabalho da CLI do Databricks. - Declare as dependências Python da carga de trabalho e atualize seus caminhos de dados, ponto de verificação, modelo e saída.
- Valide a carga de trabalho na menor configuração aplicável. Confirme seu acesso a dados, solicitações de recursos e saídas antes de testar a topologia fixa pretendida.
Limitações
O Ray no AI Runtime tem as seguintes limitações:
- O cluster Ray tem uma contagem fixa de nós durante a duração de uma carga de trabalho. Não há suporte para o autoscale do cluster Ray.
- Todos os nós em uma carga de trabalho usam o mesmo
accelerator_type. Um cluster Ray não pode conter grupos de worker separados apenas de CPU e GPU ou dimensionar a capacidade de CPU e GPU independentemente. - Um notebook inicia o Ray em seu nó único conectado. Use a CLI do Databricks para um cluster Ray multinó.
- O acesso ao painel do Ray por meio do proxy do driver do Databricks está disponível no momento apenas para cargas de trabalho de notebook.
Se a preparação de CPU e o processamento de GPU puderem ser executados como estágios separados, use um Lakeflow Job de multitarefa e transmita dados entre as tarefas por meio de um volume do Unity Catalog.