Scalare i cluster Ray su Gemini Enterprise Agent Platform

I cluster Ray su Gemini Enterprise Agent Platform offrono due opzioni di scalabilità: scalabilità automatica e scalabilità manuale. La scalabilità automatica consente al cluster di regolare automaticamente il numero di nodi worker in base alle risorse richieste dalle attività e dagli attori Ray. Se esegui un workload pesante e non hai la certezza delle risorse necessarie, ti consigliamo di utilizzare la scalabilità automatica. La scalabilità manuale offre agli utenti un controllo più granulare dei nodi.

La scalabilità automatica può ridurre i costi dei workload, ma aggiunge un overhead di avvio dei nodi e può essere difficile da configurare. Se non hai mai utilizzato Ray, inizia con i cluster senza scalabilità automatica e utilizza la funzionalità di scalabilità manuale.

Scalabilità automatica

Attiva la funzionalità di scalabilità automatica di un cluster Ray specificando il numero minimo di repliche (min_replica_count) e il numero massimo di repliche (max_replica_count) di un pool di worker.

Tieni presente quanto segue:

  • Configura la specifica di scalabilità automatica di tutti i pool di worker.
  • La velocità di upscaling e downscaling personalizzata non è supportata. Per i valori predefiniti, consulta Velocità di upscaling e downscaling nella documentazione di Ray.

Imposta la specifica di scalabilità automatica del pool di worker

Utilizza la console Google Cloud o l'SDK Agent Platform per Python per attivare la funzionalità di scalabilità automatica di un cluster Ray.

SDK Ray on Agent Platform

from google.cloud import aiplatform
import vertex_ray
from vertex_ray import AutoscalingSpec

autoscaling_spec = AutoscalingSpec(
 min_replica_count=1,
 max_replica_count=3,
)

head_node_type = Resources(
 machine_type="n1-standard-16",
 node_count=1,
)

worker_node_types = [Resources(
 machine_type="n1-standard-16",
 accelerator_type="NVIDIA_TESLA_T4",
 accelerator_count=1,
 autoscaling_spec=autoscaling_spec,
)]

# Create the Ray cluster on Gemini Enterprise Agent Platform
CLUSTER_RESOURCE_NAME = vertex_ray.create_ray_cluster(
head_node_type=head_node_type,
worker_node_types=worker_node_types,
...
)

Console

In conformità con il suggerimento della best practice di OSS Ray, l'impostazione del numero di CPU logiche su 0 nel nodo head di Ray viene applicata per evitare l'esecuzione di qualsiasi workload sul nodo head.

  1. Nella console Google Cloud , vai alla pagina Ray on Agent Platform.

    Vai alla pagina Ray on Agent Platform

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

    1. In Nome e regione, specifica un Nome e scegli una località per il cluster.
    2. In Impostazioni di computing, specifica la configurazione del cluster Ray sul nodo head, inclusi il tipo di macchina, il tipo e il numero di acceleratori, il tipo e le dimensioni del disco e il numero di repliche. Facoltativamente, aggiungi un URI immagine personalizzato per specificare un'immagine container personalizzata per aggiungere dipendenze Python non fornite dall'immagine container predefinita. Consulta Immagine personalizzata.

      Nella sezione Opzioni avanzate, puoi:

      • Specifica la tua chiave di crittografia.
      • Specifica un service account personalizzato.
      • Se non hai bisogno di monitorare le statistiche delle risorse del tuo workload durante l'addestramento, disattiva la raccolta delle metriche.
    3. Per creare un cluster con un pool di worker con scalabilità automatica, fornisci un valore per il numero massimo di repliche del pool di worker. Impostazioni di computing per la scalabilità automatica

  4. Fai clic su Crea.

Scalabilità manuale

Man mano che i workload aumentano o diminuiscono sui cluster Ray su Gemini Enterprise Agent Platform, scala manualmente il numero di repliche in base alla domanda. Ad esempio, se hai capacità in eccesso, fare lo scale down dei pool di worker per risparmiare sui costi.

Limitazioni del peering VPC

Quando scali i cluster, puoi modificare solo il numero di repliche nei pool di worker esistenti. Ad esempio, non puoi aggiungere o rimuovere pool di worker dal cluster o modificare il tipo di macchina dei pool di worker. Inoltre, il numero di repliche per i pool di worker non può essere inferiore a uno.

Se utilizzi una connessione in peering VPC per connetterti ai tuoi cluster, esiste una limitazione sul numero massimo di nodi. Il numero massimo di nodi dipende dal numero di nodi presenti nel cluster al momento della creazione. Per saperne di più, consulta Calcolo del numero massimo di nodi. Questo numero massimo include non solo i pool di worker, ma anche il nodo head. Se utilizzi la configurazione di rete predefinita, il numero di nodi non può superare i limiti massimi descritti nella documentazione relativa alla creazione dei cluster.

Best practice per l'allocazione delle subnet

Quando esegui il deployment di Ray su Gemini Enterprise Agent Platform utilizzando l'accesso privato ai servizi (PSA), è fondamentale assicurarsi che l'intervallo di indirizzi IP allocato sia sufficientemente ampio e contiguo per ospitare il numero massimo di nodi a cui il cluster potrebbe scalare. L'esaurimento degli IP può verificarsi se l'intervallo IP riservato per la connessione PSA è troppo piccolo o frammentato, causando errori di deployment.

In alternativa, ti consigliamo di eseguire il deployment di Ray su Agent Platform con un'interfaccia Private Service Connect, che riduce il consumo di IP a una subnet /28.

Monitoraggio dell'accesso privato ai servizi

Come best practice, utilizza Network Analyzer, uno strumento di diagnostica all'interno di Network Intelligence Center di Google Cloudche monitora automaticamente le configurazioni di rete Virtual Private Cloud (VPC) per rilevare configurazioni errate e impostazioni non ottimali. Network Analyzer opera in modo continuo, eseguendo test in modo proattivo e generando insight per aiutarti a identificare, diagnosticare e risolvere i problemi di rete prima che influiscano sulla disponibilità del servizio.

Network Analyzer è in grado di monitorare le subnet utilizzate per l'accesso privato ai servizi (PSA) e fornisce insight specifici relativi a queste subnet. Si tratta di una funzione fondamentale per la gestione di servizi gestiti come Cloud SQL, Memorystore e Agent Platform, che utilizzano PSA.

Il modo principale in cui Network Analyzer monitora le subnet PSA è fornire insight sull'utilizzo degli indirizzi IP per gli intervalli allocati.

  • Utilizzo dell'intervallo PSA: Network Analyzer monitora attivamente la percentuale di allocazione degli indirizzi IP all'interno dei blocchi CIDR dedicati che hai allocato per l'accesso privato ai servizi. Questo è importante perché quando crei un servizio gestito (come Agent Platform), Google crea un VPC producer di servizi e una subnet al suo interno, estraendo un intervallo IP dal blocco allocato.

  • Avvisi proattivi: se l'utilizzo degli indirizzi IP per un intervallo allocato per l'accesso privato ai servizi supera una determinata soglia (ad esempio, 75%), Network Analyzer genera un insight di avviso. In questo modo, riceverai un avviso proattivo di potenziali problemi di capacità, dandoti il tempo di espandere l'intervallo IP allocato prima di esaurire gli indirizzi disponibili per le nuove risorse del servizio.

Aggiornamenti della subnet di accesso privato ai servizi

Per i deployment di Ray on Agent Platform, Google consiglia di allocare un blocco CIDR /16 o /17 per la connessione PSA. In questo modo, viene fornito un blocco contiguo di indirizzi IP sufficientemente grande da supportare uno scale up significativo, con un massimo di 65.536 o 32.768 indirizzi IP univoci, rispettivamente. In questo modo si evita l'esaurimento degli IP anche con cluster Ray di grandi dimensioni.

Se esaurisci lo spazio degli indirizzi IP allocato, Google Cloud restituisce questo errore:

Impossibile creare la subnet. Impossibile trovare blocchi liberi negli intervalli IP allocati.

Ti consigliamo di espandere l'intervallo di subnet attuale o di allocare un intervallo che consenta una crescita futura.

Calcolo del numero massimo di nodi

Se utilizzi l'accesso privato ai servizi (peering VPC) per connetterti ai tuoi nodi, utilizza le seguenti formule per verificare di non superare il numero massimo di nodi (M), supponendo f(x) = min(29, (32 - ceiling(log2(x))):

  • f(2 * M) = f(2 * N)
  • f(64 * M) = f(64 * N)
  • f(max(32, 16 + M)) = f(max(32, 16 + N))

Il numero totale massimo di nodi nel cluster Ray on Agent Platform a cui puoi fare lo scale up (M) dipende dal numero totale iniziale di nodi che hai configurato (N). Dopo aver creato il cluster Ray on Agent Platform, puoi fare lo scale up del numero totale di nodi a qualsiasi valore compreso tra P e M inclusi, dove P è il numero di pool nel cluster.

Il numero totale iniziale di nodi nel cluster e il numero target di scale up devono trovarsi nello stesso blocco di colore.

Diagramma che mostra la relazione tra i conteggi dei nodi iniziali e scalati

Aggiorna il numero di repliche

Utilizza la console Google Cloud o l'SDK Agent Platform per Python per aggiornare il numero di repliche del pool di worker. Se il cluster include più pool di worker, puoi modificare singolarmente il numero di repliche di ciascuno in un'unica richiesta.

SDK Ray on Agent Platform

import vertexai
import vertex_ray

vertexai.init()
cluster = vertex_ray.get_ray_cluster("CLUSTER_NAME")

# Get the resource name.
cluster_resource_name = cluster.cluster_resource_name

# Create the new worker pools
new_worker_node_types = []
for worker_node_type in cluster.worker_node_types:
 worker_node_type.node_count = REPLICA_COUNT # new worker pool size
 new_worker_node_types.append(worker_node_type)

# Make update call
updated_cluster_resource_name = vertex_ray.update_ray_cluster(
 cluster_resource_name=cluster_resource_name,
 worker_node_types=new_worker_node_types,
)

Console

  1. Nella console Google Cloud , vai alla pagina Ray on Agent Platform.

    Vai alla pagina Ray on Agent Platform

  2. Nell'elenco dei cluster, fai clic sul cluster da modificare.

  3. Nella pagina Dettagli cluster, fai clic su Modifica cluster.

  4. Nel riquadro Modifica cluster, seleziona il pool di worker da aggiornare e poi modifica il numero di repliche.

  5. Fai clic su Aggiorna.

    Attendi qualche minuto per l'aggiornamento del cluster. Al termine dell'aggiornamento, puoi visualizzare il numero di repliche aggiornato nella pagina Dettagli cluster.

  6. Fai clic su Crea.