Ray no ambiente de execução de IA

Importante

Esse recurso está em Visualização Pública.

Note

Se você estiver usando o Ray na computação clássica do Databricks com o Databricks Runtime ML, consulte Ray no Databricks.

Ray é um framework código aberto para escalar cargas de trabalho em Python. Você pode rodar o Ray no tempo de execução de IA sem precisar provisionar ou gerenciar a infraestrutura da GPU subjacente.

Por que usar o Ray no tempo de execução da IA

Ray é comumente usado para distribuir cargas de trabalho em Python, como treinamento de modelos, 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, acompanhar experimentos com MLflow e executar como parte de fluxos de trabalho de produção.

Você pode usar bibliotecas comuns de Ray, como Ray Core, Ray Data, Ray Train e Ray Tune , no AI Runtime. Cargas de trabalho Ray existentes podem continuar a usar as APIs padrão das bibliotecas.

Como o Ray funciona com o AI Runtime

Todo aplicativo Ray roda 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 usando os recursos disponíveis de CPU e GPU. Como você inicia o Ray depende da interface de execução:

Interface Nodes Iniciar o Ray
Notebook O nó único conectado ao notebook Chame ray_init() do pacote serverless_gpu
Interface de Linha de Comando do Databricks Um conjunto fixo de um ou mais nós Inicie o nó principal no nó 0 e adicione os nós restantes como nós de trabalho usando um script de inicialização reutilizável

Use Ray em cadernos

Quando seu notebook estiver conectado ao ambiente de computação com GPU do AI Runtime, use ray_init() do pacote serverless_gpu para iniciar o Ray no nó anexado:

from serverless_gpu import ray_init

ray_init()

ray_init() chama a API padrão ray.init() , configura o dashboard do Ray para acesso via proxy do driver Databricks e imprime a URL do painel na saída do notebook. Use o painel para inspecionar os trabalhos, as tarefas, os atores e os logs do Ray, além do uso de recursos, enquanto seu código é executado.

Note

ray_init() requer a versão 5 ou superior do ambiente. O Databricks AI v6 inclui o Ray. Se você usa o Standard v6, instale o Ray antes de chamar ray_init(). Veja Configuração do ambiente.

Exemplos de notebook

Example Description
Ray Core, olá, mundo Submeta tarefas assíncronas da GPU no computo conectado, inspecione o agendamento no painel Ray e recupere os resultados.
Ajuste de hiperparâmetros CIFAR-10 com Ray Tune Execute testes simultâneos de GPU fracionada para um classificador de imagem PyTorch e use o algoritmo assíncrono de metade sucessiva (ASHA) para impedir configurações que tenham baixo desempenho precocemente.
Inferência em lote Qwen2.5-32B com Ray Data e vLLM Execute a inferência em lote multilíngue com oito réplicas persistentes do vLLM em 8 GPUs H100 e salve os resultados no formato Parquet em um volume do Unity Catalog.

Use o Ray com a linha de comando Databricks

Os comandos da CLI do Databricks para AI Runtime oferecem suporte a workloads do Ray de nó único e multinó. Na configuração da carga de trabalho, especifique um accelerator_type fixo e o total num_accelerators. Os exemplos do Hello World do Ray incluem um script bootstrap reutilizável. No command da carga de trabalho, defina RAY_ENTRYPOINT para o caminho do seu arquivo Python e execute o script de inicialização. O script bootstrap faz o seguinte:

  • No nó 0, ele inicia a cabeça Ray e executa o ponto de entrada configurado.
  • Em todos os outros nós, ele inicia um trabalhador Ray e o mantém conectado enquanto o ponto de entrada funciona.
  • Após a conclusão do ponto de entrada, os processos do Ray são interrompidos.

Na aplicação, conecte-se ao cluster com ray.init(address="auto").

No ambiente Standard, adicione ray ou o adicional necessário, como ray[data], ray[train], ou ray[tune], às dependências da carga de trabalho. O Databricks AI v6 inclui o Ray.

Exemplos da CLI

Example Description
Exemplos do Hello World do Ray Exemplos mínimos de nó único e vários nós para Ray Core, Ray Train, Ray Data e Ray Tune, incluindo o padrão de Bootstrap do cluster.
Treinamento distribuído com o Ray Train Ajuste um grande modelo de linguagem em 8 GPUs H100 em um único nó usando Ray Train e PyTorch.
Inferência em lote com Dados Ray e vLLM Execute inferência em lote em grande escala usando Ray Data para carregamento distribuído de dados e vLLM para servir modelos de forma eficiente.
Busca por hiperparâmetros com Ray Tune Busque hiperparâmetros de ajuste fino do LoRA para o Qwen2.5 com o Ray Tune, executando um experimento por GPU e interrompendo antecipadamente os experimentos com baixo desempenho usando o agendador ASHA.

Trabalho com dados e recursos do Databricks

As workloads 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 bundles de automação declarativa.

Dados de acesso no Catálogo Unity

Para dados tabulares em uma tabela do Unity Catalog, use ray.data.read_databricks_tables() para ler uma tabela ou executar uma consulta SQL através de um armazenamento SQL do Databricks. Especifique o ID do depósito, catálogo e esquema porque o AI Runtime não fornece uma sessão local do Spark. Você pode usar SQL para realizar 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 ler arquivos Parquet com ray.data.read_parquet() e escrever resultados com Dataset.write_parquet().

Acompanhar e orquestrar as cargas de trabalho

Use o MLflow para registrar parâmetros, métricas e artefatos de uma carga de trabalho Ray. Veja Rastreamento de experimentos e observabilidade.

Para agendar a carga de trabalho ou combiná-la com tarefas de preparação de dados na CPU, use Lakeflow Jobs e Declarative Automation Bundles. Veja como agendar cargas de trabalho de GPU e compor tarefas.

Migrar uma carga de trabalho existente do Ray

Migrar uma carga de trabalho do Ray autogerenciada envolve substituir sua configuração de infraestrutura e as integrações com serviços pelo modelo de execução do AI Runtime.

Avaliar sua carga de trabalho

Antes de migrar, revise as limitações. Confirme que a carga de trabalho pode rodar em um cluster de tamanho fixo com um único tipo de acelerador.

Migrar a carga de trabalho

Para migrar uma carga de trabalho autogerenciada do Ray:

  1. Escolha um notebook para desenvolvimento interativo de nó único ou a CLI Databricks para trabalhos de nó único ou múltiplos.
  2. Mapeie os recursos existentes do cluster para um tipo de acelerador de runtime de IA e uma quantidade de aceleradores. Veja Opções de hardware.
  3. Substitua a inicialização existente do cluster por ray_init() em um notebook ou pelo bootstrap documentado do nó principal e do nó de trabalho em uma carga de trabalho do Databricks CLI.
  4. Declare as dependências Python da carga de trabalho e atualize seus caminhos de dados, checkpoint, modelo e saída.
  5. Valide a carga de trabalho na menor configuração aplicável. Confirme seu acesso aos dados, solicitações de recursos e saídas antes de testar a topologia fixa pretendida.

Limitations

Ray on AI Runtime tem as seguintes limitações:

  • O cluster Ray possui uma contagem fixa de nós durante a duração de uma carga de trabalho. O escalonamento automático do cluster Ray não é compatível.
  • Todos os nós de uma carga de trabalho usam o mesmo accelerator_type. Um cluster Ray não pode conter grupos separados apenas para CPU e GPU, nem escalar a capacidade da CPU e GPU de forma independente.
  • Um notebook inicia o Ray em seu nó único conectado. Use a CLI do Databricks para um cluster Ray com vários nós.
  • O acesso ao painel Ray através do proxy do driver Databricks está atualmente disponível apenas para cargas de trabalho de notebooks.

Dica

Se a preparação da CPU e o processamento da GPU puderem rodar como etapas separadas, use um Lakeflow Job multitarefa e passe os dados entre as tarefas por meio de um volume do Unity Catalog.