Connettiti al cluster Ray su Vertex AI tramite Ray Client utilizzando la versione dell'SDK Vertex AI Python che include la funzionalità di Ray Client. Utilizza questa opzione se preferisci un ambiente di sviluppo Python interattivo.
Utilizza l'SDK Vertex AI per Python all'interno del notebook Colab Enterprise nella console Google Cloud .
Utilizza l'SDK Vertex AI per Python all'interno di una sessione Python, una shell o un notebook Jupyter.
Scrivi uno script Python e invialo al cluster Ray su Vertex AI utilizzando l'API Ray Jobs. Se preferisci inviare i job in modo programmatico, utilizza questa opzione.
Connettersi a un cluster Ray tramite Ray Client
Per utilizzare il client Ray interattivo, connettiti al cluster Ray su Vertex AI. La rete dell'ambiente di connessione dipende dalla configurazione di rete del cluster. Non si applicano limitazioni all'ambiente di connessione purché il cluster abbia accesso a internet pubblico. ovvero non hai specificato una rete VPC durante la creazione del cluster. Se, tuttavia, il cluster si trova su una rete VPC privata con peering con Vertex AI, l'ambiente di connessione deve trovarsi sulla stessa rete VPC del cluster.
La versione di Ray sul lato client deve corrispondere a quella del cluster. pip install "google-cloud-aiplatform[ray]"
installa la versione 2.47 di Ray sul lato client per impostazione predefinita. Se la versione di Ray del cluster è precedente, ad esempio, alla 2.42, utilizza pip install ray==2.42.0
per far corrispondere la versione di Ray del lato client a quella del cluster.
Console
In conformità con il best practice di OSS Ray, l'impostazione del conteggio delle CPU logiche su 0 sul nodo head di Ray viene applicata per evitare l'esecuzione di qualsiasi workload sul nodo head.
Nella console Google Cloud , vai alla pagina Ray su Vertex AI.
Nella riga corrispondente al cluster che hai creato, fai clic su Apri in Colab Enterprise.
Si apre il notebook di Colab Enterprise. Segui le istruzioni su come utilizzare l'SDK Vertex AI Python per connetterti al cluster Ray su Vertex AI.
Se una schermata di dialogo ti chiede di abilitare le API, fai clic su Abilita.
Se ti connetti al cluster per la prima volta, fai clic su Connetti. Se ti stai riconnettendo al cluster, seleziona Riconnetti. La connessione del notebook al runtime richiede alcuni minuti.
Fai clic su +CREA per creare un nuovo notebook.
Fai clic su
per aprire il riquadro Ray su Vertex AI.
Visualizzazione dei cluster esistenti.Seleziona un cluster e fai clic su CONNETTI.
Il codice viene visualizzato nel notebook aperto che si connette al cluster scelto.Altre azioni (facoltativo): per aprire la pagina dell'elenco dei cluster Ray on Vertex AI, fai clic su Gestisci cluster nel riquadro Ray on Vertex AI.
- Seleziona un cluster e fai clic sul menu
Vengono visualizzate altre opzioni:
Altre azioni.
- Seleziona un cluster e fai clic sul menu
Esegui la cella di codice Introduzione per importare l'SDK Vertex AI Python e connetterti al cluster Ray su Vertex AI.
Python
In conformità con il best practice di OSS Ray, l'impostazione del conteggio delle CPU logiche su 0 sul nodo head di Ray viene applicata per evitare l'esecuzione di qualsiasi workload sul nodo head.
Da un ambiente Python interattivo:
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))
Dove:
LOCATION: la località specificata per il cluster Ray su Vertex AI.
PROJECT_ID: il tuo ID progetto Google Cloud . Trova l'ID progetto nella pagina Benvenuto della console Google Cloud .
CLUSTER_NAME: il nome del cluster Ray su Vertex AI, specificato al momento della creazione del cluster. Vai alla consoleGoogle Cloud per visualizzare l'elenco dei nomi dei cluster per un progetto.
Viene visualizzato un output simile al seguente:
Python version: 3.10.12 Ray version: 2.47 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Utilizza l'URL Dashboard
per accedere alla dashboard Ray da un browser. L'URI è nel formato https://xxxx-dot-us-central1.aiplatform-training.googleusercontent.com/
. La dashboard mostra i job inviati, il numero di GPU o CPU e lo spazio su disco di ogni macchina nel cluster.
Dopo aver eseguito la connessione al cluster Ray su Vertex AI, sviluppa un programma Ray nello stesso modo in cui ne sviluppi uno per un normale backend Ray OSS.
@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]
Sviluppare un'applicazione utilizzando l'API Ray Jobs
Questa sezione descrive come inviare un programma Python al cluster Ray su Vertex AI utilizzando l'API Ray Jobs.
Scrivere uno script Python
Sviluppa l'applicazione come script Python in qualsiasi editor di testo. Ad esempio, inserisci il seguente script in un file 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)]))
Invia un job Ray utilizzando l'API Ray Jobs
Invia un job Ray utilizzando Python, la CLI Ray Jobs o l'indirizzo della dashboard Ray pubblica.
Python - cluster resource name
Invia un job Ray utilizzando un 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)
Dove:
REGION: la regione specificata per il cluster Ray su Vertex AI.
PROJECT_ID: il tuo numero di progetto Google Cloud . Trova l'ID progetto nella pagina Benvenuto della console Google Cloud .
CLUSTER_NAME: il nome del cluster Ray su Vertex AI, specificato durante la creazione del cluster. Vai alla consoleGoogle Cloud per visualizzare l'elenco dei nomi dei cluster per un progetto.
CLUSTER_RAY_VERSION: blocca la versione di Ray sulla stessa versione del cluster. Ad esempio, 2.47.1.
Python - Ray dashboard
L'indirizzo del dashboard Ray è accessibile dall'esterno del VPC, inclusa la rete internet pubblica. Tieni presente che vertex_ray
è necessario per ottenere l'autenticazione 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)
Dove:
DASHBOARD_ADDRESS: L'indirizzo della dashboard Ray per il tuo cluster. Trova l'indirizzo del dashboard utilizzando l'SDK Vertex AI per Python.
Interfaccia a riga di comando Ray Jobs
Utilizza i comandi CLI di Ray Jobs solo all'interno della rete VPC con peering.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Dopo aver inviato un job Ray a esecuzione prolungata, se vuoi monitorare lo stato del job utilizzando client.get_job_status(job_id)
, istanzia di nuovo JobSubmissionClient(client = JobSubmissionClient("vertex_ray://{}".format(CLUSTER_RESOURCE_NAME)) )
per aggiornare il token di autenticazione.
Supporto per il peering VPC e il account di servizio personalizzato
Ray su Vertex AI supporta l'API Ray Client e Ray Jobs (JobSubmissionClient) in una rete pubblica per l'agente di servizio predefinito e gli account di servizio personalizzati.
La seguente tabella mostra il supporto di Ray su Vertex AI per il peering VPC quando crei il cluster Ray con la rete VPC:
Peering VPC | Agente di servizio predefinito | Service account personalizzato |
---|---|---|
Ray Client (modalità interattiva) | Sì | No |
Ray JobSubmissionClient | Sì | Sì |
I Controlli di servizio VPC richiedono configurazioni aggiuntive. Per maggiori dettagli, consulta Connettività privata e pubblica.
Utilizzare Network File System (NFS) nel codice Ray
Se imposti un montaggio NFS durante la creazione del cluster Ray, leggi e scrivi questi volumi NFS nel codice dell'applicazione.
RayClient
Questa sezione mostra come utilizzare il file system di rete (NFS) nel codice Ray.
Inizializza RayClient in un 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))
Esegui lo script del 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())))
Invia un job Ray utilizzando Python, la CLI Ray Jobs o l'indirizzo del dashboard Ray pubblico. Per ulteriori informazioni, consulta Sviluppare un'applicazione sul cluster Ray su Vertex AI.