Puoi connetterti a un cluster Ray su Vertex AI e sviluppare un un'applicazione con i seguenti metodi:
Connettiti al cluster Ray su Vertex AI tramite Ray Client utilizzando versione di l'SDK Vertex AI per Python che include la funzionalità dell'API Ray Cliente. Utilizza questa opzione se preferisci un ambiente di sviluppo Python interattivo.
Usa l'SDK Vertex AI per Python all'interno di Colab Enterprise un blocco note personalizzato nella console Google Cloud.
Utilizza l'SDK Vertex AI per Python in una sessione Python, in una shell o in un notebook Jupyter.
Scrivi uno script Python e invialo al cluster Ray su Vertex AI utilizzando l'API Ray Jobs. Utilizza questa opzione se preferisci inviare i job tramite programmazione.
Connettiti a un cluster Ray tramite Ray Client
Per utilizzare il client Ray interattivo, connettiti al tuo cluster Ray su Vertex AI. La rete dell'ambiente di connessione dipende dalla configurazione della rete del cluster. Non esistono limitazioni per l'ambiente di connessione purché il cluster abbia accesso a internet pubblico. ovvero una rete VPC non è stato specificato durante la creazione del cluster. Tuttavia, se il cluster si trova su una rete VPC privata in peering con Vertex AI, l'ambiente di connessione deve trovarsi sulla stessa rete VPC del cluster.
La versione di Ray lato client deve corrispondere a quella del cluster.
pip install "google-cloud-aiplatform[ray]"
per impostazione predefinita installa la versione 2.33 di Ray lato client. Se la versione di Ray del cluster è 2.9, devi utilizzare pip install ray==2.9.3
per associare la versione di Ray lato client alla versione di Ray del cluster.
Console
In conformità con Best practice Ray OSS Si consiglia di impostare il conteggio logico delle CPU su 0 sul nodo head Ray in base all'ordine. per evitare di eseguire carichi di lavoro sul nodo head.
Nella console Google Cloud, vai alla pagina Ray on Vertex AI.
Nella riga relativa al cluster che hai creato, fai clic su Apri in Colab Enterprise.
Si apre il blocco note di Colab Enterprise. Segui le istruzioni su come utilizzare l'SDK Vertex AI per Python per connettersi al cluster Ray su Vertex AI.
Se una finestra di dialogo ti chiede di abilitare le API, fai clic su Abilita.
Fai clic su Connetti se ti connetti al cluster per la prima volta o su Ricollega se ti stai ricollegando al cluster. Il notebook impiega alcuni minuti per connettersi al runtime.
Fai clic su +CREA per creare un nuovo blocco note.
Fai clic su per aprire il riquadro Ray su Vertex AI.
viene visualizzata la visualizzazione dei cluster esistenti.Seleziona un cluster e fai clic su CONNETTI.
Nel notebook aperto viene visualizzato il codice che si connette al cluster scelto.Altre azioni (facoltativo): per aprire il cluster Ray on Vertex AI fai clic su Gestisci cluster nel riquadro Ray on Vertex AI.
- Seleziona un cluster e fai clic su
Vengono visualizzate altre opzioni:
menu Altre azioni.
- Seleziona un cluster e fai clic su
Esegui la cella di codice Introduzione per importare l'SDK Vertex AI per Python e connettiti al cluster Ray su Vertex AI.
Python
In conformità con Best practice Ray OSS Si consiglia di impostare il conteggio logico delle CPU su 0 sul nodo head Ray in base all'ordine. per evitare di eseguire carichi di lavoro 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: l'ID del tuo progetto Google Cloud. Puoi trovare l'ID progetto nella pagina di benvenuto della console Google Cloud.
CLUSTER_NAME: il nome del tuo cluster Ray su Vertex AI, specificato al momento della creazione del cluster. Vai alla sezione Console Google Cloud per visualizzare l'elenco delle dei cluster per un progetto.
Dovresti ottenere un output simile al seguente:
Python version: 3.10.12 Ray version: 2.33 Vertex SDK version: 1.46.0 Dashboard: xxxx-dot-us-central1.aiplatform-training.googleusercontent.com
Puoi usare l'URL Dashboard
per accedere alla dashboard Ray da un browser. La
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
a ogni macchina nel cluster.
Una volta connesso al cluster Ray su Vertex AI, puoi sviluppare un programma Ray nello stesso modo in cui lo faresti 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]
Sviluppa 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.
Scrivi uno script Python
Sviluppare 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
Puoi inviare un job Ray utilizzando Python, l'interfaccia a riga di comando Ray Jobs o il servizio pubblico Ray alla dashboard.
Python: nome risorsa del cluster
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 numero del tuo progetto Google Cloud. Puoi trovare l'ID progetto nella pagina di benvenuto della console Google Cloud.
CLUSTER_NAME: il nome del tuo cluster Ray su Vertex AI, specificato al momento della creazione del cluster. Vai alla console Google 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.33.0.
Python - Dashboard Ray
L'indirizzo della 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. Tu puoi trovare l'indirizzo della dashboard utilizzando l'SDK Vertex AI per Python.
Interfaccia a riga di comando Ray Jobs
Tieni presente che puoi utilizzare i comandi della riga di comando Ray Jobs solo all'interno della rete VPC conmunta.
$ ray job submit --working-dir ./ --address vertex_ray://{CLUSTER_RESOURCE_NAME} -- python my_script.py
Supporto per il peering VPC e l'account di servizio personalizzato
Ray on Vertex AI supporta Ray Client e API Ray Jobs (JobSubmissionClient) in una rete pubblica per l'agente di servizio predefinito e account di servizio.
Il supporto di Ray on Vertex AI per il peering VPC, quando il cluster Ray viene creato con la rete VPC, è mostrato in questa tabella:
Peering VPC | Agente di servizio predefinito | Service account personalizzato |
---|---|---|
Ray Client (modalità interattiva) | Sì | No |
Client di invio job Ray | Sì | Sì |
I Controlli di servizio VPC richiedono configurazioni aggiuntive. Consulta Connettività privata e pubblica per maggiori dettagli.