Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
- 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.
- 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.
- 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. - Declare as dependências Python da carga de trabalho e atualize os seus dados, checkpoint, modelo e caminhos de saída.
- 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.