Conecte-se ao cluster do Ray na Vertex AI pelo Ray Client usando a versão do SDK da Vertex AI para Python que inclui a funcionalidade do Ray Client. Use essa opção se preferir um ambiente de desenvolvimento em Python interativo.
Use o SDK da Vertex AI para Python no notebook do Colab Enterprise no console do Google Cloud .
Use o SDK da Vertex AI para Python dentro de uma sessão do Python, do shell ou do notebook do Jupyter.
Escreva um script em Python e envie-o para o cluster do Ray na Vertex AI usando a API Ray Jobs. Use essa opção se preferir enviar jobs de maneira programática.
Conectar-se a um cluster do Ray pelo Ray Client
Para usar o cliente interativo do Ray, conecte-se ao cluster do Ray na Vertex AI. A rede do ambiente de conexão depende da configuração de rede do cluster. Não há restrições no ambiente de conexão, desde que o cluster tenha acesso público à Internet. Ou seja, você não especificou uma rede VPC durante a criação do cluster. No entanto, se o cluster estiver em uma rede VPC particular com peering com a Vertex AI, o ambiente de conexão precisará estar na mesma rede VPC que o cluster.
A versão do Ray no lado do cliente precisa corresponder à versão do Ray do cluster.
pip install "google-cloud-aiplatform[ray]"
instala a versão 2.47 do Ray no lado do cliente por padrão. Se a versão do Ray do cluster for mais antiga que, por exemplo, 2.42, use pip install ray==2.42.0
para que a versão do Ray do lado do cliente corresponda à versão do Ray do cluster.
Console
De acordo com as Práticas recomendadas do OSS Ray a configuração da contagem lógica de CPU como 0 no nó principal do Ray é aplicada para para evitar a execução de cargas de trabalho no nó principal.
No console Google Cloud , acesse a página do Ray na Vertex AI.
Na linha do cluster que você criou, clique em Abrir no Colab Enterprise.
O bloco do Colab Enterprise abre. Siga as instruções sobre como usar o SDK da Vertex AI para Python para se conectar ao cluster do Ray na Vertex AI.
Se uma caixa de diálogo solicitar a ativação de APIs, clique em Ativar.
Se você estiver se conectando ao cluster pela primeira vez, clique em Conectar. Se você estiver se reconectando ao cluster, clique em Reconectar. O notebook leva alguns minutos para se conectar ao ambiente de execução.
Clique em +CRIAR para criar um notebook.
Clique em
para abrir o Ray no painel da Vertex AI.
Os clusters atuais são exibidos.Selecione um cluster e clique em CONECTAR.
No notebook aberto, há um código que se conecta ao cluster escolhido.Outras ações (opcional): para abrir o Ray na página da lista de clusters da Vertex AI, clique em Gerenciar clusters no painel do Ray na Vertex AI.
- Selecione um cluster e clique no menu
Mais opções vão aparecer:
mais ações.
- Selecione um cluster e clique no menu
Execute a célula de código Introdução para importar o SDK da Vertex AI para Python e se conectar ao cluster do Ray na Vertex AI.
Python
De acordo com as Práticas recomendadas do OSS Ray a configuração da contagem lógica de CPU como 0 no nó principal do Ray é aplicada para para evitar a execução de cargas de trabalho no nó principal.
Em um ambiente Python interativo:
import ray # Necessary even if aiplatform.* symbol is not directly used in your program. from google.cloud import aiplatform import vertex_ray import vertexai vertexai.init() # The CLUSTER_RESOURCE_NAME is the one returned from vertex_ray.create_ray_cluster. CLUSTER_RESOURCE_NAME='projects/{}/locations/{}/persistentResources/{}'.format(PROJECT_ID, LOCATION, CLUSTER_NAME) ray.init('vertex_ray://{}'.format(CLUSTER_RESOURCE_NAME))
Em que:
LOCATION: o local especificado para o cluster do Ray na Vertex AI.
PROJECT_ID: o ID do projeto do Google Cloud . Encontre o ID do projeto na página de boas-vindas do console do Google Cloud .
CLUSTER_NAME: o nome do cluster do Ray na Vertex AI, especificado ao criar o cluster. Acesse o Google Cloud console para visualizar a lista de nomes de clusters de um projeto.
Você verá um resultado parecido com este:
Python version: 3.10.12 Ray version: 2.47 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Use o URL Dashboard
para acessar o painel do Ray por um navegador. O URI está no formato https://xxxx-dot-us-central1.aiplatform-training.googleusercontent.com/
.
O painel mostra os jobs enviados, o número de GPUs ou CPUs e o espaço em disco de cada máquina no cluster.
Depois de se conectar ao cluster do Ray na Vertex AI, desenvolva um programa do Ray da mesma maneira que você faria por um back-end OSS Ray normal.
@ray.remote def square(x): print(x) return x * x # Launch four parallel square tasks. futures = [square.remote(i) for i in range(4)] print(ray.get(futures)) # Returns [0, 1, 4, 9]
Desenvolver um aplicativo usando a API Ray Jobs
Nesta seção, descrevemos como enviar um programa em Python para o cluster do Ray na Vertex AI usando a API Ray Jobs.
Escrever um script em Python
Desenvolva seu aplicativo como um script em Python por qualquer editor de texto. Por exemplo, coloque o script a seguir em um arquivo my_script.py
:
import ray import time @ray.remote def hello_world(): return "hello world" @ray.remote def square(x): print(x) time.sleep(100) return x * x ray.init() # No need to specify address="vertex_ray://...." print(ray.get(hello_world.remote())) print(ray.get([square.remote(i) for i in range(4)]))
Enviar um job do Ray usando a API Ray Jobs
Envie um job do Ray usando Python, a CLI da Ray Jobs ou o endereço público do painel do Ray.
Python: nome do recurso do cluster
Envie um job do Ray usando um ambiente Python:
import ray import vertex_ray from ray.job_submission import JobSubmissionClient from google.cloud import aiplatform # Necessary even if aiplatform.* symbol is not directly used in your program. CLUSTER_RESOURCE_NAME='projects/{}/locations/REGION/persistentResources/{}'.format(PROJECT_ID, CLUSTER_NAME) client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME)) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file. runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) # Ensure that the Ray job has been created. print(job_id)
Em que:
REGION: a região especificada para o cluster do Ray na Vertex AI.
PROJECT_ID: o número do projeto do Google Cloud . Encontre o ID do projeto na página de boas-vindas do console do Google Cloud .
CLUSTER_NAME: o nome do cluster do Ray na Vertex AI, especificado ao criar o cluster. Acesse o Google Cloud console para visualizar a lista de nomes de clusters de um projeto.
CLUSTER_RAY_VERSION: fixa a versão do Ray na mesma versão do cluster Por exemplo, 2.47.1.
Python: painel do Ray
O endereço do painel do Ray pode ser acessado por fora da VPC, inclusive pela Internet pública.
Lembre-se que vertex_ray
é necessário para receber a autenticação automaticamente.
from ray.job_submission import JobSubmissionClient import vertex_ray DASHBOARD_ADDRESS=DASHBOARD_ADDRESS client = JobSubmissionClient( "vertex_ray://{}".format(DASHBOARD_ADDRESS), ) job_id = client.submit_job( # Entrypoint shell command to execute entrypoint="python my_script.py", # Path to the local directory that contains the my_script.py file runtime_env={ "working_dir": "./directory-containing-my-script", "pip": ["numpy", "setuptools<70.0.0", "xgboost", "ray==CLUSTER_RAY_VERSION", # pin the Ray version to the same version as the cluster ] } ) print(job_id)
Em que:
DASHBOARD_ADDRESS: o endereço do painel do Ray do seu cluster. Encontre o endereço do painel usando o SDK da Vertex AI para Python.
CLI da Ray Jobs
Use os comandos da CLI do Ray Jobs apenas na rede VPC com peering.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Depois de enviar um job do Ray de longa duração, se você quiser monitorar o status dele
usando client.get_job_status(job_id)
, crie uma nova instância de
JobSubmissionClient(client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME))
)
para atualizar o token de autenticação.
Compatibilidade com peering de VPC e conta de serviço personalizada
O Ray na Vertex AI tem compatibilidade com o Ray Client e à API Ray Jobs (JobSubmissionClient) em uma rede pública para agentes de serviço padrão e contas de serviço personalizadas.
A tabela a seguir mostra a compatibilidade do Ray na Vertex AI com o peering de VPC ao criar o cluster do Ray com a rede VPC:
Peering de VPC | Agente de serviço padrão | Conta de serviço personalizada |
---|---|---|
Ray Client (modo interativo) | Sim | Não |
JobSubmissionClient do Ray | Sim | Sim |
O VPC Service Controls (VPC-SC) exige mais configurações. Consulte Conectividade particular e pública para mais detalhes.
Usar o sistema de arquivos de rede (NFS) no seu código do Ray
Se você definir uma montagem NFS ao criar o cluster do Ray, leia e grave esses volumes NFS no seu código do aplicativo.
RayClient
Nesta seção, mostramos como usar o Network File System (NFS) no seu código do Ray.
Inicializar o RayClient em um ambiente Python
import ray from google.cloud import aiplatform import vertex_ray aiplatform.init(project=PROJECT_ID, location=REGION) ray.init(address='vertex_ray://projects/{}/locations/us-central1/persistentResources/{}'.format(PROJECT_NUMBER, PERSISTENT_RESOURCE_ID))
Executar script de job
import ray import logging import os import sys @ray.remote def main(): logging.info("list all files in mounted folder") return os.listdir("/mnt/nfs/test") print(''.join(ray.get(main.remote())))
Envie um job do Ray usando Python, a CLI da Ray Jobs ou o endereço público do painel do Ray. Para mais informações, consulte Desenvolver um aplicativo no cluster do Ray na Vertex AI.