Ray em ambiente de execução de IA

Importante

Este recurso está no Public Preview.

Observação

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 Nodes Iniciar Ray
Notebook O nó único anexado ao portátil Chamar ray_init() do pacote serverless_gpu
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, 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 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.

Observação

ray_init() requer a versão 5 do ambiente ou superior. 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. Os exemplos do Hello World do Ray incluem 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.

Exemplos de CLI

Example Description
Exemplos do Hello World do Ray Exemplos mínimos de nó único e multinó para Ray Core, Ray Train, Ray Data e Ray Tune, incluindo o padrão de arranque do cluster.
Treino distribuído com Ray Train Afina um grande modelo de linguagem em 8 GPUs H100 num único nó usando Ray Train e PyTorch.
Inferência em lote com Ray Data 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.
Pesquisa de hiperparâmetros com Ray Tune Procure os hiperparâmetros de ajuste fino de LoRA para o Qwen2.5 com o Ray Tune, executando um ensaio por GPU e interrompendo antecipadamente os ensaios com fraco desempenho com o agendador ASHA.

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. Consulte Agendar cargas de trabalho da GPU e compor 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 Opções de 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.

Limitações

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.