Ray no ambiente de execução de IA

Observação

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 Nodos Iniciar o Ray
Notebook O nó único conectado ao notebook Chame ray_init() do SDK de tempo de execução de IA (databricks.air)
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 à computação GPU do AI Runtime, use ray_init() do Databricks AI Runtime SDK para iniciar o Ray no nó anexado:

from databricks.air 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.

Observação

ray_init() requer a versão 5 ou superior do ambiente. Na versão 5, importe-o de serverless_gpu em vez de databricks.air. 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 CLI do Databricks para o AI Runtime suportam cargas de trabalho Ray de nó único. Na configuração da carga de trabalho, especifique um valor fixo para accelerator_type e num_accelerators. A receita do Qwen2.5-3B Ray Train inclui 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:

  • Ele inicia o nó head do Ray no nó e executa o ponto de entrada configurado.
  • 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
Qwen2.5-3B ajuste fino com Ray Train Faça o ajuste fino do Qwen2.5-3B com um worker de Distributed Data Parallel por GPU em um nó H100 8x.
Inferência em lote com Dados Ray e vLLM Gerar respostas com Qwen2.5-7B-Instruct e gravar os resultados em um volume do Unity Catalog como Parquet.

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 ou a CLI Databricks para jobs enviados.
  2. Mapeie os recursos existentes do cluster para um tipo de acelerador de runtime de IA e uma quantidade de aceleradores. Veja Hardware.
  3. Substitua a inicialização existente do cluster por ray_init() em um notebook ou pelo script de bootstrap documentado em uma carga de trabalho da CLI Databricks.
  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.
  • O acesso ao painel Ray através do proxy do driver Azure Databricks está disponível apenas para cargas de trabalho de notebooks.
  • O Ray roda em um único nó, tanto em notebooks quanto em cargas de trabalho da CLI do Databricks.

Tip

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.