Estabeleça ligação ao cluster do Ray no Vertex AI através do cliente do Ray usando a versão do SDK do Vertex AI para Python que inclui a funcionalidade do cliente do Ray. Use esta opção se preferir um ambiente de desenvolvimento Python interativo.
Use o SDK do Vertex AI para Python no bloco de notas do Colab Enterprise na Google Cloud consola.
Use o SDK Vertex AI para Python numa sessão, shell ou bloco de notas Jupyter do Python.
Escreva um script Python e envie-o para o cluster do Ray no Vertex AI através da API Ray Jobs. Se preferir enviar tarefas de forma programática, use esta opção.
Ligue-se a um cluster do Ray através do cliente do Ray
Para usar o cliente Ray interativo, ligue-se ao seu cluster Ray no Vertex AI. A rede do ambiente de ligação depende da configuração de rede do cluster. Não se aplicam restrições ao ambiente de ligação, desde que o cluster tenha acesso público à Internet. Ou seja, não especificou uma rede de VPC durante a criação do cluster. No entanto, se o cluster estiver numa rede VPC privada que interage com a Vertex AI, o ambiente de ligação tem de estar na mesma rede VPC que o cluster.
A versão do Ray do lado do cliente tem de 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 predefinição. Se a versão do Ray do cluster for anterior a 2.42, por exemplo, use pip install ray==2.42.0
para fazer corresponder a versão do Ray do lado do cliente à versão do Ray 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.
Na linha do cluster que criou, clique em Abrir no Colab Enterprise.
O bloco de notas do Colab Enterprise é aberto. Siga as instruções sobre como usar o SDK do Vertex AI para Python para estabelecer ligação ao cluster do Ray no Vertex AI.
Se for apresentado um ecrã de diálogo a pedir-lhe para ativar APIs, clique em Ativar.
Se estiver a estabelecer ligação ao cluster pela primeira vez, clique em Ligar. Se estiver a voltar a ligar-se ao cluster, toque em Voltar a ligar. O bloco de notas demora alguns minutos a estabelecer ligação ao tempo de execução.
Clique em +CRIAR para criar um novo bloco de notas.
Clique em
para abrir o painel do Ray no Vertex AI.
Os clusters existentes são apresentados.Selecione um cluster e clique em ASSOCIAR.
O código aparece no bloco de notas aberto que se liga ao cluster escolhido.Outras ações (opcional): para abrir a página da lista de clusters do Ray on Vertex AI, clique em Gerir clusters no painel do Ray on Vertex AI.
- Selecione um cluster e clique no menu
São apresentadas mais opções:
mais ações.
- Selecione um cluster e clique no menu
Execute a célula de código Introdução para importar o SDK do Vertex AI para Python e estabelecer ligação ao cluster do Ray no Vertex AI.
Python
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:
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))
Onde:
LOCATION: a localização que especifica para o cluster do Ray no Vertex AI.
PROJECT_ID: o ID do seu Google Cloud projeto. Encontre o ID do projeto na página de boas-vindas da Google Cloud consola.
CLUSTER_NAME: o nome do cluster do Ray na Vertex AI, especificado quando cria o cluster. Aceda à Google Cloud consola para ver a lista de nomes de clusters de um projeto.
Recebe um resultado semelhante ao seguinte:
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 aceder ao painel de controlo do Ray a partir de um navegador. O URI está no formato https://xxxx-dot-us-central1.aiplatform-training.googleusercontent.com/
.
O painel de controlo mostra as tarefas enviadas, o número de GPUs ou CPUs e o espaço em disco de cada máquina no cluster.
Depois de se ligar ao cluster do Ray na Vertex AI, desenvolva um programa do Ray da mesma forma que o faz para um back-end do Ray de OSS 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]
Desenvolva uma aplicação com a API Ray Jobs
Esta secção descreve como enviar um programa Python para o cluster do Ray no Vertex AI através da API Ray Jobs.
Escrever um script Python
Desenvolva a sua aplicação como um script Python em qualquer editor de texto. Por exemplo, coloque o seguinte script num ficheiro 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)]))
Envie uma tarefa do Ray através da API Ray Jobs
Envie uma tarefa do Ray através do Python, da CLI de tarefas do Ray ou do endereço público do painel de controlo do Ray.
Python: nome do recurso do cluster
Envie uma tarefa do Ray através de 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)
Onde:
REGION: a região que especifica para o cluster do Ray no Vertex AI.
PROJECT_ID: o seu Google Cloud número do projeto. Encontre o ID do projeto na página de boas-vindas da Google Cloud consola.
CLUSTER_NAME: o nome do cluster do Ray no Vertex AI, especificado quando criou o cluster. Aceda à Google Cloud consola para ver a lista de nomes de clusters de um projeto.
CLUSTER_RAY_VERSION: fixe a versão do Ray à mesma versão do cluster. Por exemplo, 2.47.1.
Python – Painel de controlo do Ray
O endereço do painel de controlo do Ray é acessível a partir do exterior da VPC, incluindo a Internet pública.
Tenha em atenção que o vertex_ray
é necessário para obter 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)
Onde:
DASHBOARD_ADDRESS: o endereço do painel de controlo do Ray para o seu cluster. Encontre o endereço do painel de controlo através do SDK Vertex AI para Python.
CLI 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 uma tarefa Ray de execução prolongada, se quiser monitorizar o estado da tarefa
com client.get_job_status(job_id)
, reponha
JobSubmissionClient(client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME))
)
para atualizar o token de autenticação.
Apoio técnico para interligação de VPCs e conta de serviço personalizada
O Ray na Vertex AI suporta a API Ray Client e Ray Jobs (JobSubmissionClient) numa rede pública para o agente de serviço predefinido e contas de serviço personalizadas.
A tabela seguinte mostra o suporte do Ray na Vertex AI para o intercâmbio da VPC quando cria o cluster do Ray com a rede da VPC:
Intercâmbio de VPCs | Agente de serviço predefinido | Conta de serviço personalizada |
---|---|---|
Ray Client (modo interativo) | Sim | Não |
Ray JobSubmissionClient | Sim | Sim |
Os VPC Service Controls (VPC-SC) requerem configurações adicionais. Consulte o artigo Conetividade privada e pública para mais detalhes.
Use o sistema de arquivos de rede (NFS) no seu código Ray
Se definir uma montagem NFS quando criar o cluster Ray, leia e escreva nesses volumes NFS no código da aplicação.
RayClient
Esta secção mostra como usar o sistema de arquivos de rede (NFS) no seu código Ray.
Inicialize o RayClient num 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 tarefa
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 uma tarefa do Ray através do Python, da CLI de tarefas do Ray ou do endereço público do painel de controlo do Ray. Para mais informações, consulte o artigo Desenvolva uma aplicação no cluster Ray na Vertex AI).