Crea un cluster Ray su Vertex AI

Per creare un cluster Ray, puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python. Un cluster può avere fino a 2000 nodi. Esiste un limite superiore di 1000 nodi all'interno di un pool di worker. Non esiste alcun limite al numero di pool di worker, ma avere un numero elevato di pool di worker, ad esempio avere 1000 pool di worker con un nodo ciascuno, può influire negativamente sulle prestazioni del cluster.

Prima di iniziare, assicurati di leggere la panoramica di Ray on Vertex AI e di configurare tutti gli strumenti dei prerequisiti di cui hai bisogno.

L'avvio di un cluster Ray su Vertex AI può richiedere 10-20 minuti dopo la creazione.

Console

In conformità con il suggerimento della best practice OSS Ray, viene obbligatorio impostare il conteggio logico delle CPU su 0 sul nodo head Ray per evitare di eseguire carichi di lavoro sul nodo head.

  1. Nella console Google Cloud, vai alla pagina Ray on Vertex AI.

    Vai alla pagina di Ray on Vertex AI

  2. Fai clic su Crea cluster per aprire il riquadro Crea cluster.

  3. Per ogni passaggio nel riquadro Crea cluster, rivedi o sostituisci le informazioni sul cluster predefinito. Fai clic su Continua per completare ogni passaggio:

    1. Per Nome e regione, specifica un Nome e scegli una Località per il cluster.

    2. Per Impostazioni di calcolo, specifica la configurazione del cluster Ray sul nodo head di Vertex AI, inclusi tipo di macchina, tipo e numero di acceleratori, tipo e dimensione del disco e numero di repliche. Facoltativamente, puoi aggiungere un URI dell'immagine personalizzata per specificare l'immagine di un container personalizzato e aggiungere dipendenze Python non fornite dall'immagine del container predefinito. Vedi Immagine personalizzata.

      Nella sezione Opzioni avanzate puoi:

    3. (Facoltativo) Per impostare un endpoint privato anziché un endpoint pubblico per il tuo cluster, specifica una rete VPC da utilizzare con Ray on Vertex AI. Per maggiori informazioni, consulta Connettività privata e pubblica.

      Se non hai configurato una connessione per la tua rete VPC, fai clic su Configura connessione. Nel riquadro Crea una connessione di accesso privato ai servizi, completa e fai clic su Continua per ognuno dei seguenti passaggi:

      1. Abilita l'API Service Networking.

      2. In Alloca un intervallo IP, puoi selezionare, creare o consentire a Google di allocare automaticamente un intervallo IP.

      3. Per Creare una connessione, esamina le informazioni su Rete e Intervallo IP allocato.

      4. Fai clic su Crea connessione.

  4. Fai clic su Crea.

SDK Ray on Vertex AI

In conformità con il suggerimento della best practice OSS Ray, viene obbligatorio impostare il conteggio logico delle CPU su 0 sul nodo head Ray per evitare di eseguire carichi di lavoro sul nodo head.

Da un ambiente Python interattivo, utilizza quanto segue per creare il cluster Ray su Vertex AI:

import ray
import vertex_ray
from google.cloud import aiplatform
from vertex_ray import Resources

# 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.
)]

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.9",  # Optional
  cluster_name=CLUSTER_NAME, # Optional
  service_account=SERVICE_ACCOUNT,  # Optional
  enable_metrics_collection=True,  # Optional. Enable metrics collection for monitoring.
  labels=LABELS,  # Optional.

)

Dove:

  • CLUSTER_NAME: un nome per il cluster Ray su Vertex AI che deve essere univoco nell'intero progetto.

  • NETWORK: (facoltativo) il nome completo della tua rete VPC, nel formato projects/PROJECT_ID/global/networks/VPC_NAME. Per impostare un endpoint privato anziché un endpoint pubblico per il cluster, specifica una rete VPC da utilizzare con Ray su Vertex AI. Per ulteriori informazioni, vedi Connettività privata e pubblica.

  • VPC_NAME (Facoltativo) Il VPC su cui è operativa la VM.

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Puoi trovare l'ID progetto nella pagina di benvenuto della console Google Cloud.

  • SERVICE_ACCOUNT (Facoltativo) L'account di servizio per eseguire le applicazioni Ray sul cluster. È necessario concedere i ruoli obbligatori.

  • LABELS: (facoltativo) le etichette con metadati definiti dall'utente utilizzate per organizzare i cluster Ray. Le chiavi e i valori delle etichette non possono contenere più di 64 caratteri (punti di codice Unicode) e possono contenere solo lettere minuscole, caratteri numerici, trattini bassi e trattini. Sono consentiti caratteri internazionali. Visita la pagina https://goo.gl/xmQnxf per ulteriori informazioni ed esempi di etichette.

Dovresti vedere il seguente output finché lo stato non diventa 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

Tieni presente quanto segue:

  • Il primo nodo viene utilizzato come nodo head.

  • I tipi di macchina TPU non sono supportati.

Immagine personalizzata (facoltativa)

Le immagini predefinite sono in linea con la maggior parte dei casi d'uso. Se vuoi creare un'immagine personalizzata, ti consigliamo di usare le immagini predefinite Ray on Vertex come immagine di base. Consulta la documentazione di Docker per scoprire come creare le tue immagini da un'immagine di base.

Queste immagini di base includono un'installazione di Python, Ubuntu e Ray. Includono anche dipendenze quali:

  • python-json-logger
  • google-cloud-resource-manager
  • ca-certificates-java
  • libatlas-base-dev
  • liblapack-dev
  • G++, libio-all-perl
  • libyaml-0-2.
  • rsync

Se vuoi creare un'immagine senza la nostra immagine di base (opzione avanzata), assicurati che includa:

  • Raggio 2.9.3
  • Python 3.10
  • python-json-logger==2,0.7

Connettività privata e pubblica

Per impostazione predefinita, Ray on Vertex AI crea un endpoint pubblico e sicuro per lo sviluppo interattivo con il client Ray su cluster Ray su Vertex AI. Ti consigliamo di utilizzare la connettività pubblica per casi d'uso di sviluppo o temporanei. Questo endpoint pubblico è accessibile tramite internet. Solo gli utenti autorizzati che dispongono almeno delle autorizzazioni per il ruolo utente Vertex AI nel progetto utente del cluster Ray possono accedere al cluster.

Se hai bisogno di una connessione privata al cluster o se utilizzi Controlli di servizio VPC, il peering VPC è supportato per i cluster Ray su Vertex AI. I cluster con un endpoint privato sono accessibili solo da un client in una rete VPC in peering con Vertex AI.

Per configurare la connettività privata con il peering VPC per Ray su Vertex AI, seleziona una rete VPC quando crei il cluster. La rete VPC richiede una connessione ai servizi privati tra la rete VPC e Vertex AI. Se utilizzi Ray su Vertex AI nella console, puoi configurare la connessione di accesso privato ai servizi durante la creazione del cluster.

Dopo aver creato il cluster Ray su Vertex AI, puoi connetterti al nodo head utilizzando l'SDK Vertex AI per Python. L'ambiente di connessione, ad esempio una VM di Compute Engine o un'istanza di Vertex AI Workbench, deve trovarsi nella rete VPC in peering con Vertex AI. Tieni presente che una connessione ai servizi privati ha un numero limitato di indirizzi IP, che potrebbe comportare l'esaurimento degli indirizzi IP. Ti consigliamo quindi di usare connessioni private per i cluster a lunga esecuzione.

Tutorial sul blocco note

Passaggi successivi