Crea un cluster Ray su Vertex AI

Puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python per creare un ammasso Ray. Un cluster può avere fino a 2000 nodi. Esiste un limite massimo di 1000 nodi in un pool di worker. Non c'è limite al numero di worker ma con un elevato numero di pool di worker, ad esempio con 1000 pool con un nodo ciascuno, possono influire negativamente sulle prestazioni del cluster.

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

L'avvio di un cluster Ray su Vertex AI potrebbe richiedere 10-20 minuti dopo averlo creato.

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.

  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 il le informazioni predefinite sul cluster. Fai clic su Continua per completare ogni passaggio:

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

    2. In Impostazioni di calcolo, specifica la configurazione del Cluster Ray sul nodo head di Vertex AI, tra cui tipo di macchina, acceleratore tipo e conteggio, tipo e dimensione del disco e numero di repliche. Se vuoi, puoi aggiungere un URI dell'immagine personalizzata per specificare un'immagine container personalizzata per aggiungere dipendenze Python non fornite dal container predefinito dell'immagine. 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 su Vertex AI. Per ulteriori informazioni, vedi Connettività privata e pubblica.

      Se non hai configurato una connessione per per la tua rete VPC, fai clic su Configura connessione. Nella finestra Crea un nel riquadro Private Services Access (connessione di accesso privato ai servizi), completa e fai clic su Continua per ciascuno dei seguenti passaggi:

      1. Abilita l'API Service Networking.

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

      3. Per Crea una connessione, controlla i campi Rete e Allocazione allocata Informazioni sull'intervallo IP.

      4. Fai clic su Crea connessione.

  4. Fai clic su Crea.

SDK Ray on Vertex AI

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, utilizza quanto segue per creare 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 devono essere univoci nell'intero progetto.

  • NETWORK: (facoltativo) il nome completo del VPC nel formato projects/PROJECT_ID/global/networks/VPC_NAME. Per impostare un endpoint privato anziché un endpoint pubblico per il tuo cluster, specificare 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 si trova la VM operativo.

  • PROJECT_ID: l'ID del tuo progetto Google Cloud. Puoi visualizzare l'ID progetto nella console Google Cloud benvenuto .

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

  • LABELS: (facoltativo) le etichette con i metadati definiti dall'utente utilizzati per organizzare i cluster Ray. Le chiavi e i valori delle etichette non possono essere più lunghi di 64 (punti di codice Unicode) e possono contenere solo lettere minuscole, caratteri numerici, trattini bassi e trattini. Caratteri internazionali sono consentiti. Per saperne di più, visita la pagina https://goo.gl/xmQnxf 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 si adattano alla maggior parte e casi d'uso specifici. Se vuoi creare una tua immagine, ti consigliamo di utilizzare le immagini predefinite Ray on Vertex come immagine di base. Consulta la documentazione di Docker su 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 la tua immagine senza la nostra immagine di base (opzione avanzata), assicurati che che l'immagine 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 sviluppo interattivo con Ray Client su cluster Ray su Vertex AI. Ti consigliamo di utilizzare la connettività pubblica per lo sviluppo o le attività temporanee e casi d'uso specifici. Questo endpoint pubblico è accessibile tramite internet. Solo per gli utenti autorizzati che hanno, come minimo, Autorizzazioni dei ruoli utente Vertex AI sul 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 Ray su Vertex AI. I cluster con un endpoint privato sono accessibile da un client all'interno di 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 privata ai servizi tra tra la tua rete VPC e Vertex AI. Se utilizzi Ray su Vertex AI nella console, puoi configurare di accesso privato ai servizi quando creazione del cluster.

Se vuoi utilizzare Controlli di servizio VPC e peering VPC con i cluster Ray Vertex AI, è necessaria una configurazione aggiuntiva per utilizzare la dashboard Ray e la shell interattiva. Segui le istruzioni fornite in Dashboard Ray e shell interattiva con VPC-SC + peering VPC per configurare la configurazione della shell interattiva con VPC-SC e peering VPC in del progetto utente.

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

Dashboard Ray e shell interattiva con VPC-SC + peering VPC

  1. Configura peered-dns-domains.

    {
      VPC_NAME=default  # Change to peered network
      REGION=us-central1  # Change to desired region
      gcloud services peered-dns-domains create training-cloud \
      --network=$VPC_NAME \
      --dns-suffix=$REGION.aiplatform-training.cloud.google.com.
            
      # Verify
      gcloud beta services peered-dns-domains list --network $VPC_NAME);
    }
        
  2. Configura DNS managed zone.

    {
      PROJECT_ID=Your-Project-ID. You can find these IDs in the Google Cloud console welcome page.
      ZONE_NAME=$PROJECT_ID-aiplatform-training-cloud-google-com
      DNS_NAME=aiplatform-training.cloud.google.com
      DESCRIPTION=aiplatform-training.cloud.google.com
              
      gcloud dns managed-zones create $ZONE_NAME  \
      --visibility=private  \
      --networks=https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/networks/$VPC_NAME  \
      --dns-name=$DNS_NAME  \
      --description="Training $DESCRIPTION"
    } 
        
  3. Registra transazione DNS.

    {
      gcloud dns record-sets transaction start --zone=$ZONE_NAME
    
      gcloud dns record-sets transaction add \
      --name=$DNS_NAME. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=$ZONE_NAME \
      --ttl=300
          
      gcloud dns record-sets transaction add \
      --name=*.$DNS_NAME. \
      --type=CNAME $DNS_NAME. \
      --zone=$ZONE_NAME \
      --ttl=300
          
      gcloud dns record-sets transaction execute --zone=$ZONE_NAME
    }
        
  4. Invia un job di addestramento con la shell interattiva + VPC-SC + peering VPC abilitato.

Tutorial sul blocco note

Passaggi successivi