Ray em ambiente de execução de IA

Note

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

O Ray é um framework open source para escalar cargas de trabalho em Python. Podes correr o Ray no AI Runtime sem provisionar ou gerir a infraestrutura da GPU subjacente.

Porquê usar o Ray no AI Runtime

O Ray é frequentemente utilizado para distribuir cargas de trabalho em Python, como treino de modelos, inferência em lote, processamento de dados e ajuste de hiperparâmetros. No AI Runtime, o Ray pode aceder a dados em volumes do Unity Catalog, acompanhar experiências com MLflow e executar como parte de fluxos de trabalho de produção.

Pode usar bibliotecas comuns de Ray 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 funciona com o ambiente de execução de IA

Cada aplicação Ray corre num cluster Ray, que pode conter um ou mais nós. O AI Runtime provisiona os nós e o Ray agenda tarefas e atores através dos seus recursos disponíveis de CPU e GPU. Como se inicia o Ray depende da interface de execução:

Interface Nodos Iniciar Ray
Notebook O nó único anexado ao portátil Chame ray_init() a partir do SDK de Runtime de IA (databricks.air)
CLI do Databricks Um conjunto fixo de um ou mais nós Inicia a cabeça no nó 0 e junta-te aos nós restantes como trabalhadores usando um script bootstrap reutilizável

Usar o Ray em cadernos

Quando o seu portátil estiver ligado à computação GPU do AI Runtime, utilize ray_init() do SDK do Databricks AI Runtime para iniciar o Ray no nó associado:

from databricks.air import ray_init

ray_init()

ray_init() chama a API padrão ray.init() , configura o dashboard Ray para acesso através do proxy do driver Databricks e imprime a URL do dashboard na saída do notebook. Utilize o painel para inspecionar os jobs, as tarefas, os atores, os registos e a utilização de recursos do Ray enquanto o seu código está em execução.

Note

ray_init() requer a versão 5 do ambiente ou superior. Na versão 5, importe-o de serverless_gpu em vez de databricks.air. O Databricks AI v6 inclui o Ray. Se utilizar o Standard v6, instale o Ray antes de chamar ray_init(). Veja Configurar o ambiente.

Exemplos de cadernos

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

Utilize o Ray com a CLI da Databricks

Os comandos da CLI do Databricks para AI Runtime suportam cargas de trabalho do Ray de nó único e multinó. Na configuração da carga de trabalho, especifique um valor fixo accelerator_type e o valor total num_accelerators. A receita de início do Ray Core inclui um script bootstrap reutilizável. No command da carga de trabalho, define RAY_ENTRYPOINT como o caminho do ficheiro Python e executa o script de arranque. O script de bootstrap faz o seguinte:

  • No nó 0, inicia a cabeça Ray e executa o ponto de entrada configurado.
  • Em todos os outros nós, inicia um trabalhador Ray e mantém-no ligado enquanto o ponto de entrada funciona.
  • Depois de o ponto de entrada terminar, os processos do Ray são interrompidos.

Na aplicação, ligue-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.

Comece com o Ray

Os exemplos mínimos seguintes apresentam as principais bibliotecas Ray e partilham o mesmo padrão de arranque do cluster.

Example Description
Ray Core Inicia um cluster Ray em duas GPUs A10 e agenda uma tarefa Ray Core por GPU.
Ray Train Treine um pequeno perceptrão multicamada com dados sintéticos com um trabalhador do Ray Train por GPU.
Dados de Raios Executa um pipeline de processamento de dados sintéticos através de um cluster Ray.
Ray Tune Ajuste um pequeno perceptrão multicamada com dados sintéticos com um ensaio por GPU.

Exemplos adicionais de CLI

Example Description
Ajuste fino do ResNet-50 com Ray Train Afina o ResNet-50 com um worker de paralelismo de dados distribuído por cada GPU A10 em dois nós.
Ajuste fino Qwen2.5-3B com Ray Train Afina o Qwen2.5-3B com um processo de paralelismo de dados distribuído por GPU num nó H100 8x.
Inferência em lote com Ray Data e vLLM Gerar respostas com Qwen2.5-7B-Instruct e escrever os resultados num volume do Unity Catalog como Parquet.
Pesquisa de hiperparâmetros LoRA com Ray Tune Procure configurações LoRA para Qwen2.5-0.5B em quatro GPUs A10 e interrompa testes com baixo desempenho com o agendador ASHA.
Pesquisa de hiperparâmetros XGBoost com Ray Tune Pesquise hiperparâmetros XGBoost em quatro GPUs A10, registre a melhor configuração no MLflow e registe o modelo no Unity Catalog.

Trabalho com dados e funcionalidades do Databricks

As cargas de trabalho Ray podem aceder a dados nos volumes do Unity Catalog, registar 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 numa tabela do Unity Catalog, use ray.data.read_databricks_tables() para ler uma tabela ou executar uma consulta SQL através de um armazém SQL do Databricks. Especifique o ID do armazém, catálogo e esquema porque o AI Runtime não fornece uma sessão Spark local. Pode usar SQL para realizar joins, agregações e filtros antes do Ray processar os resultados.

Para dados baseados em ficheiros e não estruturados, utilize um volume do Unity Catalog. Os processos de trabalho do Ray podem aceder a ficheiros através dos respetivos caminhos /Volumes/<catalog>/<schema>/<volume>/.... Por exemplo, o Ray Data pode ler ficheiros Parquet com ray.data.read_parquet() e escrever resultados com Dataset.write_parquet().

Acompanhar e orquestrar as cargas de trabalho

Use o MLflow para registar parâmetros, métricas e artefactos de uma carga de trabalho Ray. Ver Rastreio e observabilidade de experiências.

Para programar a carga de trabalho ou combiná-la com tarefas de preparação de dados executadas na CPU, utilize o Lakeflow Jobs e o Declarative Automation Bundles. Veja Agendamento de cargas de trabalho da GPU e composição de tarefas.

Migrar uma carga de trabalho Ray existente

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

Avalie sua carga de trabalho

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

Migrar a carga de trabalho

Para migrar uma carga de trabalho Ray autogerida:

  1. Escolha um notebook para desenvolvimento interativo num único nó ou a CLI do Databricks para tarefas de nó único ou de vários nós.
  2. Associe os recursos existentes do cluster a um tipo de acelerador do AI Runtime e ao número de aceleradores. Veja Hardware.
  3. Substitua o arranque existente do cluster por ray_init() num notebook ou pela configuração de arranque documentada do nó principal e do nó de trabalho numa workload da Databricks CLI.
  4. Declare as dependências Python da carga de trabalho e atualize os seus dados, checkpoint, modelo e caminhos de saída.
  5. Valide a carga de trabalho na menor configuração aplicável. Confirme o acesso aos dados, pedidos de recursos e saídas antes de testar a topologia fixa pretendida.

Limitations

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

  • O cluster Ray tem um número fixo de nós durante a duração de uma carga de trabalho. O dimensionamento automático do cluster Ray não é suportado.
  • Todos os nós de um workload 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 no seu nó único associado. Utilize a CLI do Databricks para um cluster Ray multinó.
  • O acesso ao dashboard do Ray através do proxy do controlador do Databricks está atualmente disponível apenas para cargas de trabalho de notebooks.

Tip

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