Criar um cluster do Ray na Vertex AI

É possível usar o console do Google Cloud ou o SDK da Vertex AI para Python para criar um cluster do Ray. Um cluster pode ter até 2.000 nós. Há um limite superior de 1.000 nós em um pool de workers. Não há limite para o número de pools de workers, mas ter um grande número de pools de workers, como 1.000 pools de workers com um nó cada, pode afetar negativamente o desempenho do cluster.

Antes de começar, leia a Visão geral do Ray na Vertex AI e configure todas as ferramentas necessárias como pré-requisito.

Depois de criado, um cluster Ray na Vertex AI pode levar de 10 a 20 minutos para ser iniciado.

Console

  1. No console do Google Cloud, acesse a página do Ray na Vertex AI.

    Acessar a página do Ray na Vertex AI

  2. Clique em Criar cluster para abrir o painel Criar cluster.

  3. Para cada etapa no painel Criar cluster, revise ou substitua as informações do cluster padrão. Clique em Continuar para concluir cada etapa:

    1. Em Nome e região, especifique um Nome e escolha um Local para o cluster.

    2. Em Configurações de computação, especifique a configuração do cluster do Ray no nó principal da Vertex AI, incluindo tipo de máquina, tipo e contagem do acelerador, tipo e tamanho de disco e contagem de réplicas. Também é possível adicionar um URI de imagem personalizada para especificar uma imagem de contêiner personalizada e adicionar dependências do Python não fornecidas pela imagem de contêiner padrão. Consulte Imagem personalizada.

      Em Opções avançadas, é possível fazer o seguinte:

      • Especifique sua própria chave de criptografia.
      • Especifique uma conta de serviço personalizada.
      • Desative a coleta de métricas se você não estiver usando o monitoramento de modelos.
    3. Opcional: para definir um endpoint particular em vez de um público para o cluster, especifique uma rede VPC para usar com o Ray na Vertex AI. Para mais informações, consulte Conectividade particular e pública.

      Se você não tiver configurado uma conexão para sua rede VPC, clique em Configurar conexão. No painel Criar uma conexão de acesso a serviços particulares, conclua e clique em Continuar para cada uma das etapas a seguir:

      1. Ative a API Service Networking.

      2. Em Alocar um intervalo de IP, é possível selecionar, criar ou permitir que o Google aloque automaticamente um intervalo de IP.

      3. Em Criar uma conexão, revise as informações de Rede e Intervalo de IP alocado.

      4. Clique em Criar conexão.

  4. Clique em Criar.

SDK do Ray na Vertex AI

Em um ambiente Python interativo, use o comando a seguir para criar o cluster do Ray na Vertex AI:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources

# Define a default CPU cluster, machine_type is n1-standard-16, 1 head node and 1 worker node
head_node_type = Resources()
worker_node_types = [Resources()]

# Or define a GPU cluster.
head_node_type = Resources(
  machine_type="n1-standard-16",
  node_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # Optional. When not specified, a prebuilt image is used.
)

worker_node_types = [Resources(
  machine_type="n1-standard-16",
  node_count=2,  # Must be >= 1
  accelerator_type="NVIDIA_TESLA_T4",
  accelerator_count=1,
  custom_image="us-docker.pkg.dev/my-project/ray-custom.2-9.py310:latest",  # When not specified, a prebuilt image is used.
)]

aiplatform.init()
# Initialize Vertex AI to retrieve projects for downstream operations.
# Create the Ray cluster on Vertex AI
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
  head_node_type=head_node_type,
  network=NETWORK, #Optional
  worker_node_types=worker_node_types,
  python_version="3.10",  # Optional
  ray_version="2.9",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.

)

Em que:

  • CLUSTER_NAME: um nome para o cluster do Ray na Vertex AI que precisa ser exclusivo em todo o projeto.

  • NETWORK: (opcional) o nome completo da rede VPC, no formato projects/PROJECT_ID/global/networks/VPC_NAME. Para definir um endpoint particular em vez de um endpoint público para o cluster, especifique uma rede VPC para usar com o Ray na Vertex AI. Para mais informações, consulte Conectividade particular e pública.

  • VPC_NAME: (opcional) a VPC em que a VM está operando.

  • PROJECT_ID pelo ID do projeto do Google Cloud. Você encontra o ID do projeto na página de boas-vindas do console do Google Cloud.

  • SERVICE_ACCOUNT: (opcional) a conta de serviço para executar aplicativos do Ray no cluster. É preciso conceder papéis obrigatórios.

  • LABELS: (opcional) os rótulos com metadados definidos pelo usuário usados para organizar clusters do Ray. As chaves e os valores de rótulo não podem ter mais de 64 caracteres (pontos de código Unicode) e podem conter apenas letras minúsculas, caracteres numéricos, sublinhados e traços. Caracteres internacionais são permitidos. Consulte https://goo.gl/xmQnxf para mais informações e exemplos de rótulos.

Você verá a seguinte saída até que o status mude para RUNNING:

[Ray on Vertex AI]: Cluster State = State.PROVISIONING
Waiting for cluster provisioning; attempt 1; sleeping for 0:02:30 seconds
...
[Ray on Vertex AI]: Cluster State = State.RUNNING

Observações:

  • O primeiro nó é usado como o nó principal.

  • Os tipos de máquina da TPU não são compatíveis.

Imagem personalizada (opcional)

As imagens pré-criadas se alinham com a maioria dos casos de uso. Para criar sua própria imagem, recomendamos que você use as imagens pré-criadas Ray na Vertex como imagem de base. Consulte a documentação do Docker para saber como criar imagens a partir de uma imagem base.

Essas imagens de base incluem uma instalação do Python, Ubuntu e Ray. Elas também incluem dependências como:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-java
  • libatlas-base-dev
  • liblapack-dev
  • g++, libio-all-perl
  • libyaml-0-2.
  • rsync

Se você quiser criar sua própria imagem sem nossa imagem de base (avançado), verifique se ela inclui:

  • Ray 2.9.3
  • Python 3.10
  • python-json-logger==2.0.7

Conectividade privada e pública

Por padrão, o Ray na Vertex AI cria um endpoint público e seguro para desenvolvimento interativo com o Ray Client nos clusters do Ray na Vertex AI. É recomendável usar a conectividade pública para casos de uso temporários ou de desenvolvimento. Esse endpoint público é acessível pela Internet. Somente usuários autorizados que têm, no mínimo, permissões de papel do usuário da Vertex AI no projeto de usuário do cluster do Ray podem acessar o cluster.

Se você precisar de uma conexão particular com o cluster ou estiver usando o VPC Service Controls, o peering de VPC será compatível com clusters do Ray na Vertex AI. Clusters com um endpoint particular só são acessíveis a partir de um cliente dentro de uma rede VPC que faz peering com a Vertex AI.

Para configurar a conectividade particular com o peering de VPC para Ray na Vertex AI, selecione uma rede VPC ao criar o cluster. A rede VPC requer uma conexão de serviços particulares entre sua rede VPC e a Vertex AI. Se você estiver usando o Ray na Vertex AI no console, é possível configurar a conexão de acesso a serviços particulares ao criar o cluster.

Depois de criar o cluster do Ray na Vertex AI, conecte-se ao nó principal usando o SDK da Vertex AI para Python. O ambiente de conexão, como uma VM do Compute Engine ou uma instância do Vertex AI Workbench, precisa estar na rede VPC que faz peering com a Vertex AI. Observe que uma conexão de serviços privados tem um número limitado de endereços IP, o que pode resultar no esgotamento dos endereços IP. Portanto, é recomendável usar conexões particulares para clusters de longa duração.

Tutorial do notebook

A seguir