Este documento fornece instruções para configurar um cluster do Ray na Vertex AI para satisfazer várias necessidades. Por exemplo, para criar a sua imagem, consulte o artigo Imagem personalizada. Algumas empresas podem usar redes privadas. Este documento aborda a interface do Private Service Connect para o Ray no Vertex AI. Outro exemplo de utilização envolve o acesso a ficheiros remotos como se fossem locais (consulte Ray no sistema de ficheiros de rede da Vertex AI).
Vista geral
Os tópicos abordados aqui incluem:
- criar um cluster do Ray no Vertex AI
- gerir o ciclo de vida de um cluster do Ray
- criar uma imagem personalizada
- configurar a conetividade privada e pública (VPC)
- usando a interface do Private Service Connect para o Ray no Vertex AI
- configurar o Ray no sistema de ficheiros de rede (NFS) do Vertex AI
- configurar um painel de controlo do Ray e um shell interativo com VPC-SC + intercâmbio da VPC
Crie um cluster do Ray
Pode usar a Google Cloud consola ou o SDK Vertex AI para Python para criar um cluster do Ray. Um cluster pode ter até 2000 nós. Existe um limite superior de 1000 nós num conjunto de trabalhadores. Não existe limite para o número de conjuntos de trabalhadores, mas um número elevado de conjuntos de trabalhadores, como 1000 conjuntos de trabalhadores com um nó cada, pode afetar negativamente o desempenho do cluster.
Antes de começar, leia a vista geral do Ray no Vertex AI e configure todas as ferramentas necessárias.
Um cluster do Ray no Vertex AI pode demorar 10 a 20 minutos a ser iniciado após a criação do cluster.
Consola
De acordo com a recomendação da prática recomendada da OSS Ray, a definição da contagem de CPUs lógicas para 0 no nó principal do Ray é aplicada para evitar a execução de qualquer carga de trabalho no nó principal.
Na Google Cloud consola, aceda à página Ray no Vertex AI.
Clique em Criar cluster para abrir o painel Criar cluster.
Para cada passo no painel Criar cluster, reveja ou substitua as informações do cluster predefinidas. Clique em Continuar para concluir cada passo:
Em Nome e região, especifique um Nome e escolha uma Localização para o seu cluster.
Para Definições de computação, especifique a configuração do cluster Ray no nó principal do Vertex AI, incluindo o respetivo tipo de máquina, tipo e quantidade de aceleradores, tipo e tamanho do disco, e quantidade de réplicas. Opcionalmente, adicione um URI de imagem personalizado para especificar uma imagem de contentor personalizada para adicionar dependências do Python não fornecidas pela imagem de contentor predefinida. Consulte Imagem personalizada.
Em Opções avançadas, pode:
- Especifique a sua própria chave de encriptação.
- Especifique uma conta de serviço personalizada.
- Desative a recolha de métricas se não precisar de monitorizar as estatísticas de recursos da sua carga de trabalho durante o treino.
(Opcional) Para implementar um ponto final privado para o cluster, o método recomendado é usar o Private Service Connect. Para mais detalhes, consulte o artigo Interface Private Service Connect para o Ray no Vertex AI.
Clique em Criar.
SDK Ray on Vertex AI
De acordo com a recomendação da prática recomendada da OSS Ray, a definição da contagem de CPUs lógicas para 0 no nó principal do Ray é aplicada para evitar a execução de qualquer carga de trabalho no nó principal.
A partir de um ambiente Python interativo, use o seguinte para criar o cluster do Ray no Vertex AI:
import ray import vertex_ray from google.cloud import aiplatform from vertex_ray import Resources from vertex_ray.util.resources import NfsMount # 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. )] # Optional. Create cluster with Network File System (NFS) setup. nfs_mount = NfsMount( server="10.10.10.10", path="nfs_path", mount_point="nfs_mount_point", ) 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.47", # Optional cluster_name=CLUSTER_NAME, # Optional service_account=SERVICE_ACCOUNT, # Optional enable_metrics_collection=True, # Optional. Enable metrics collection for monitoring. labels=LABELS, # Optional. nfs_mounts=[nfs_mount], # Optional. )
Onde:
CLUSTER_NAME: um nome para o cluster do Ray na Vertex AI que tem de ser exclusivo no seu projeto.
NETWORK: (Opcional) O nome completo da sua rede VPC no formato
projects/PROJECT_ID/global/networks/VPC_NAME
. Para definir um ponto final privado em vez de um ponto final público para o seu cluster, especifique uma rede VPC a usar com o Ray no Vertex AI. Para mais informações, consulte o artigo Conetividade privada e pública.VPC_NAME: opcional: a VPC na qual a VM opera.
PROJECT_ID: o ID do seu projeto Google Cloud . Pode encontrar o ID do projeto na página de boas-vindas da Google Cloud consola.
SERVICE_ACCOUNT: opcional: a conta de serviço para executar aplicações Ray no cluster. Conceda funções necessárias.
LABELS: (opcional) As etiquetas com metadados definidos pelo utilizador usados para organizar clusters do Ray. As chaves e os valores das etiquetas não podem ter mais de 64 carateres (pontos de código Unicode) e só podem conter letras minúsculas, carateres numéricos, sublinhados e travessões. São permitidos carateres internacionais. Consulte https://goo.gl/xmQnxf para ver mais informações e exemplos de etiquetas.
Deverá ver o seguinte resultado até o estado mudar 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
Tenha em conta o seguinte:
O primeiro nó é o nó principal.
Os tipos de máquinas de TPU não são suportados.
Gestão do ciclo de vida
Durante o ciclo de vida de um cluster do Ray na Vertex AI, cada ação está associada a um estado. A tabela seguinte resume o estado de faturação e a opção de gestão para cada estado. A documentação de referência fornece uma definição para cada um destes estados.
Ação | Estado | Faturado? | A ação de eliminação está disponível? | A ação de cancelamento está disponível? |
---|---|---|---|---|
O utilizador cria um cluster | APROVISIONAMENTO | Não | Não | Não |
O utilizador aumenta ou diminui manualmente a escala | A ATUALIZAR | Sim, de acordo com o tamanho em tempo real | Sim | Não |
O cluster é executado | EM EXECUÇÃO | Sim | Sim | Não aplicável: pode eliminar |
O cluster aumenta ou diminui automaticamente os recursos | A ATUALIZAR | Sim, de acordo com o tamanho em tempo real | Sim | Não |
O utilizador elimina o cluster | A PARAR | Não | Não | Não aplicável: já está a parar |
O cluster entra num estado de erro | ERRO | Não | Sim | Não aplicável: pode eliminar |
Não aplicável | STATE_UNSPECIFIED | Não | Sim | Não aplicável |
Imagem personalizada (opcional)
As imagens pré-criadas estão alinhadas com a maioria dos exemplos de utilização. Se quiser criar a sua imagem, use as imagens pré-criadas do Ray no Vertex AI como imagem base. Consulte a documentação do Docker para saber como criar as suas imagens a partir de uma imagem base.
Estas imagens base incluem uma instalação do Python, do Ubuntu e do Ray. 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.
Conetividade privada e pública
Por predefinição, o Ray na Vertex AI cria um ponto final público e seguro para o desenvolvimento interativo com o cliente Ray em clusters do Ray na Vertex AI. Use a conetividade pública para o desenvolvimento ou exemplos de utilização efémeros. Este ponto final público é acessível através da Internet. Apenas os utilizadores autorizados que tenham, no mínimo, autorizações da função de utilizador da Vertex AI no projeto do utilizador do cluster Ray podem aceder ao cluster.
Se precisar de uma ligação privada ao seu cluster ou se usar os VPC Service Controls, a interligação de VPCs é suportada para clusters do Ray na Vertex AI. Os clusters com um ponto final privado só são acessíveis a partir de um cliente numa rede VPC com peering com a Vertex AI.
Para configurar a conetividade privada com o intercâmbio da VPC para o Ray no Vertex AI, selecione uma rede de VPC quando criar o cluster. A rede da VPC requer uma ligação de serviços privados entre a sua rede da VPC e a Vertex AI. Se usar o Ray na Vertex AI na consola, pode configurar a ligação de acesso aos serviços privados quando criar o cluster.
Se quiser usar os VPC Service Controls e a interligação de VPCs com clusters do Ray no Vertex AI, é necessária uma configuração adicional para usar o painel de controlo do Ray e a shell interativa. Siga as instruções abordadas no artigo Painel de controlo do Ray e shell interativa com VPC-SC + interligação de VPCs para configurar a configuração da shell interativa com VPC-SC e interligação de VPCs no seu projeto de utilizador.
Depois de criar o cluster do Ray na Vertex AI, pode estabelecer ligação ao nó principal através do SDK da Vertex AI para Python. O ambiente de ligação, como uma VM do Compute Engine ou uma instância do Vertex AI Workbench, tem de estar na rede da VPC que está em intercâmbio com o Vertex AI. Tenha em atenção que uma ligação de serviços privados tem um número limitado de endereços IP, o que pode resultar no esgotamento de endereços IP. Por conseguinte, recomendamos a utilização de ligações privadas para clusters de execução prolongada.
Interface do Private Service Connect para o Ray no Vertex AI
A interface do Private Service Connect de saída e a interface do Private Service Connect de entrada são suportadas em clusters Ray no Vertex AI.
Para usar a saída da interface do Private Service Connect, siga as instruções indicadas abaixo. Se os VPC Service Controls não estiverem ativados, os clusters com saída da interface do Private Service Connect usam o ponto final público seguro para entrada com o Ray Client.
Se os VPC Service Controls estiverem ativados, a entrada da interface do Private Service Connect é usada por predefinição com a saída da interface do Private Service Connect. Para estabelecer ligação ao cliente Ray ou enviar tarefas a partir de um bloco de notas para um cluster com entrada da interface Private Service Connect, certifique-se de que o bloco de notas está na VPC e na sub-rede do projeto do utilizador. Para mais detalhes sobre como configurar o VPC Service Controls, consulte o artigo VPC Service Controls com a Vertex AI.
Ative a interface do Private Service Connect
Siga o guia de configuração dos recursos para configurar a interface do Private Service Connect. Depois de configurar os recursos, pode ativar a interface do Private Service Connect no cluster do Ray na Vertex AI.
Consola
Ao criar o cluster e depois de especificar o Nome e região e as Definições de computação, é apresentada a opção Rede.
Configure uma associação de rede através de uma das seguintes ações:
- Use o nome NETWORK_ATTACHMENT_NAME que especificou quando configurou os recursos para o Private Service Connect.
- Crie uma nova associação de rede clicando no botão Criar associação de rede que aparece no menu pendente.
Clique em Criar anexo de rede.
Na subtarefa apresentada, especifique um nome, uma rede e uma sub-rede para a nova associação de rede.
Clique em Criar.
SDK Ray on Vertex AI
O SDK Ray on Vertex AI faz parte do SDK Vertex AI para Python. Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a documentação de referência da API do SDK da Vertex AI para Python.
from google.cloud import aiplatform import vertex_ray # Initialization aiplatform.init() # Create a default cluster with network attachment configuration psc_config = vertex_ray.PscIConfig(network_attachment=NETWORK_ATTACHMENT_NAME) cluster_resource_name = vertex_ray.create_ray_cluster( psc_interface_config=psc_config, )
Onde:
- NETWORK_ATTACHMENT_NAME: o nome que especificou quando configurou os seus recursos para o Private Service Connect no seu projeto de utilizador.
Ray no sistema de arquivos de rede (NFS) do Vertex AI
Para disponibilizar ficheiros remotos ao seu cluster, monte partilhas do sistema de ficheiros de rede (NFS). Os seus trabalhos podem, então, aceder a ficheiros remotos como se fossem locais, o que permite um elevado débito e uma baixa latência.
Configuração da VPC
Existem duas opções para configurar a VPC:
- Crie uma associação da rede da interface do Private Service Connect. (Recomendado)
- Configure o intercâmbio da rede da VPC.
Configure a sua instância do NFS
Para mais detalhes sobre como criar uma instância do Filestore, consulte o artigo Crie uma instância. Se usar o método de interface do Private Service Connect, não tem de selecionar o modo de acesso ao serviço privado quando cria o Filestore.
Use o sistema de arquivos de rede (NFS)
Para usar o sistema de arquivos de rede, especifique uma rede ou uma ligação de rede (recomendado).
Consola
No passo Rede da página de criação, depois de especificar uma rede ou um anexo de rede. Para o fazer, clique em Adicionar montagem NFS na secção Network File System (NFS) e especifique uma montagem NFS (servidor, caminho e ponto de montagem).
Campo Descrição server
O endereço IP do seu servidor NFS. Tem de ser um endereço privado na sua VPC. path
O caminho de partilha do NFS. Tem de ser um caminho absoluto que comece com /
.mountPoint
O ponto de montagem local. Tem de ser um nome de diretório UNIX válido. Por exemplo, se o ponto de montagem local for sourceData
, especifique o caminho/mnt/nfs/ sourceData
a partir da instância de VM de preparação.Para mais informações, consulte o artigo Onde especificar recursos de computação.
Especifique um servidor, um caminho e um ponto de montagem.
Clique em Criar. Esta ação cria o cluster do Ray.
Painel de controlo do Ray e shell interativa com VPC-SC + intercâmbio da VPC
-
Configure o dispositivo
peered-dns-domains
.{ VPC_NAME=NETWORK_NAME REGION=LOCATION gcloud services peered-dns-domains create training-cloud \ --network=$VPC_NAME \ --dns-suffix=$REGION.aiplatform-training.cloud.google.com. # Verify gcloud beta services peered-dns-domains list --network $VPC_NAME; }
-
NETWORK_NAME: altere para a rede com peering.
-
LOCATION: localização pretendida (por exemplo,
us-central1
).
-
-
Configure o dispositivo
DNS managed zone
.{ PROJECT_ID=PROJECT_ID ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com DNS_NAME=aiplatform-training.cloud.google.com DESCRIPTION=aiplatform-training.cloud.google.com gcloud dns managed-zones create $ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME \ --dns-name=$DNS_NAME \ --description="Training $DESCRIPTION" }
-
Registar transação de DNS.
{ gcloud dns record-sets transaction start --zone=$ZONE_NAME gcloud dns record-sets transaction add \ --name=$DNS_NAME. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=$ZONE_NAME \ --ttl=300 gcloud dns record-sets transaction add \ --name=*.$DNS_NAME. \ --type=CNAME $DNS_NAME. \ --zone=$ZONE_NAME \ --ttl=300 gcloud dns record-sets transaction execute --zone=$ZONE_NAME }
-
Envie uma tarefa de preparação com a shell interativa + o VPC-SC + o intercâmbio da VPC ativados.