Ray no AI Runtime
Se você estiver usando Ray no compute clássico do Databricks com Databricks Runtime ML, consulte Ray on Databricks.
Ray é um framework de código aberto para escalar workloads Python. Você pode executar 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 workloads Python, como treinamento de modelo, inferência em lote, processamento de dados e ajuste de hiperparâmetros. No AI Runtime, o Ray pode acessar dados em volumes do Unity Catalog, rastrear experimentos com MLflow e execução como parte de fluxos de trabalho de produção.
Você pode usar bibliotecas Ray comuns, como Ray Core, Ray Data, Ray Train e Ray Tune no AI Runtime. As cargas de trabalho Ray existentes podem continuar a usar as APIs padrão das bibliotecas.
Como o Ray trabalha com o AI Runtime
Cada aplicativo Ray está em execução em um clusters Ray, que pode conter um ou mais nós. O AI Runtime faz o provisionamento dos nós, e o Ray programa tarefas e atores em seus recursos de CPU e GPU disponíveis. Como você começar o Ray depende da interface de execução:
Interface | Nós | começar Ray |
|---|---|---|
Notebook | O único nó conectado ao notebook | Chamar |
CLI do Databricks | Um conjunto fixo de um ou mais nós | Começar o head no nó 0 e join os nós restantes como workers usando um script de bootstrap reutilizável |
Use Ray em notebooks
Quando o Notebook estiver conectado ao compute com GPU do 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 através do proxy do driver Databricks e imprime a URL do painel na saída do notebook. Use o dashboard para inspecionar Job, tarefas, atores, Logs e uso de recursos do Ray enquanto seu código está em execução.
ray_init() requer a versão 5 e acima do ambiente. Na versão 5, importe de serverless_gpu em vez de databricks.air. O Databricks AI v6 inclui o 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 assíncronas de GPU no compute anexado, inspecione o programar no dashboard do Ray e recupere os resultados. | |
Execução testes concorrentes de GPU fracionada para um classificador de imagem PyTorch e use o algoritmo de redução sucessiva assíncrona (ASHA) para interromper antecipadamente as configurações de baixo desempenho. | |
Execute 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. |
Usar Ray com a CLI do Databricks
Os comandos da CLI do Databricks para AI Runtime suportam cargas de trabalho Ray de nó único e multinó. Na configuração da carga de trabalho, especifique accelerator_type fixo e num_accelerators total. A receita para começar com Ray Core inclui um script de bootstrap reutilizável. Na configuração da carga de trabalho command, defina RAY_ENTRYPOINT como o caminho do seu arquivo Python e execução o script de bootstrap. O script de bootstrap faz o seguinte:
- No nó 0, ele começa o cabeçalho Ray e faz a execução do ponto de entrada configurado.
- Em cada outro nó, ele começa um Ray worker e o mantém conectado enquanto o ponto de entrada está em execução.
- Depois que o ponto de entrada termina, ele para os processos Ray.
No aplicativo, conecte-se ao cluster com ray.init(address="auto").
Com o ambiente Standard, adicione ray ou o extra necessário, como ray[data], ray[train] ou ray[tune], às dependências da carga de trabalho. O Databricks AI v6 inclui Ray.
Começar a usar o Ray
Os exemplos mínimos a seguir apresentam as principais bibliotecas Ray e compartilham o mesmo padrão de bootstrap de cluster.
Exemplo | Descrição |
|---|---|
Comece um cluster Ray em duas GPUs A10 e programe uma tarefa Ray Core por GPU. | |
Ensine um pequeno perceptron multicamadas em dados sintéticos com um worker Ray Train por GPU. | |
Execute um pipeline de processamento de dados sintéticos em um cluster Ray. | |
Ajuste um pequeno perceptron multicamadas em dados sintéticos com uma execução por GPU. |
Exemplos adicionais de CLI
Exemplo | Descrição |
|---|---|
Faça ajuste fino de ResNet-50 com um worker paralelo de dados distribuídos por GPU A10 em dois nós. | |
Ajuste o Qwen2.5-3B com um worker paralelo de dados distribuídos por GPU em um nó H100 8x. | |
Gere respostas com Qwen2.5-7B-Instruct e escreva os resultados em um volume do Unity Catalog como Parquet. | |
Pesquise configurações LoRA para Qwen2.5-0.5B em quatro GPUs A10 e interrompa testes com baixo desempenho com o programador ASHA. | |
Pesquise hiperparâmetros do XGBoost em quatro GPUs A10, registro a melhor configuração no MLflow e registro 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 de Lakeflow Jobs definidas com Bundles 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 fazer a execução de uma query SQL por meio de um warehouse do Databricks SQL. Especifique o ID do warehouse, o catálogo e o esquema porque o AI Runtime não fornece uma sessão Spark local. Você pode usar SQL para realizar join, agregações e filtros antes de o Ray processar 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 ler arquivos Parquet com ray.data.read_parquet() e gravar resultados com Dataset.write_parquet().
Acompanhar e orquestrar 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 compô-la com tarefas de preparação de dados da CPU, use Lakeflow Jobs e Declarative Automation Bundles. Veja Programar cargas de trabalho de GPU e compor 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.
Avalie sua carga de trabalho
Antes de migrar, revise as limitações. Confirme se a carga de trabalho pode ter execução em um clusters de tamanho fixo com um tipo de acelerador.
Migrar a carga de trabalho
Para migrar uma carga de trabalho Ray auto-gerenciada:
- Escolha um Notebooks para desenvolvimento interativo de nó único ou a CLI do Databricks para Job de nó único ou multinó.
- Mapeie os recursos de cluster existentes para um tipo de acelerador de AI Runtime e uma contagem de aceleradores. Consulte Opções de hardware.
- Substitua o startup do cluster existente por
ray_init()em um notebook ou pelo bootstrap de head e worker documentado em um workload da CLI do Databricks. - Declare as dependências Python da carga de trabalho e atualize seus caminhos de dados, pontos de verificação, modelo e saída.
- Valide a carga de trabalho na menor configuração aplicável. Confirme o acesso aos dados, as solicitações de recursos e as saídas antes de testar a topologia fixa pretendida.
Limitações
Ray no AI Runtime tem as seguintes limitações:
- O cluster do Ray tem uma contagem fixa de nós durante a duração de uma carga de trabalho. O autoscale do cluster do Ray não é compatível.
- Todos os nós em uma carga de trabalho usam o mesmo
accelerator_type. Um cluster Ray não pode conter grupos de worker somente de GPU e somente de CPU separados nem escala a capacidade de CPU e GPU independentemente. - Um notebook começar o Ray em seu nó único anexado. Use a CLI do Databricks para um cluster Ray multinó.
- O acesso ao dashboard do Ray por meio do proxy de Driver do Databricks está disponível atualmente apenas para cargas de trabalho de Notebooks.
Se a preparação da CPU e o processamento da GPU puderem ser executados como estágios separados, use um Lakeflow Job multitarefa e transmita dados entre as tarefas através de um volume do Unity Catalog.