Scalare i cluster Ray su Vertex AI

Esistono due opzioni per scalare i cluster Ray su Vertex AI: scalabilità automatica e scalabilità manuale. La scalabilità automatica consente al cluster di regolare automaticamente il numero di nodi worker in base alle risorse richieste, ad esempio da attività e attori Ray. La scalabilità automatica è consigliata se esegui un carico di lavoro elevato e non hai la certezza delle risorse necessarie. La scalabilità manuale offre agli utenti un controllo più granulare dei nodi.

La scalabilità automatica può ridurre i costi del carico di lavoro, ma aggiunge l'overhead di lancio dei nodi e può essere complicata da configurare. Se non hai mai utilizzato Ray, ti consigliamo di iniziare con i cluster senza scalabilità automatica e di utilizzare la funzionalità di scalabilità manuale.

Scalabilità automatica

Puoi attivare 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.

Ricorda:

  • Devi configurare le specifiche di scalabilità automatica di tutti i pool di worker.
  • min_replica_count deve essere maggiore o uguale a 1.
  • 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

Puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python per attivare la funzionalità di scalabilità automatica di un cluster Ray.

SDK Ray on Vertex AI

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 Vertex AI
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 consiglio della best practice di Ray OSS, viene impostato il conteggio delle CPU logiche su 0 sul nodo principale di Ray per evitare di eseguire qualsiasi carico di lavoro sul nodo principale.

  1. Nella console Google Cloud, vai alla pagina Ray su 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 del riquadro Crea cluster, rivedi o sostituisci le informazioni predefinite del cluster. 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 principale, inclusi il tipo di macchina, il tipo e il numero di acceleratori, il tipo e le dimensioni del disco e il numero di repliche. Se vuoi, puoi aggiungere un URI immagine personalizzato per specificare un'immagine del container personalizzata per aggiungere dipendenze Python non fornite dall'immagine del container predefinita. Vedi Immagine personalizzata.

      In Opzioni avanzate, puoi:

      • Specifica la tua chiave di crittografia.
      • Specifica un account di servizio personalizzato.
      • Disattiva la raccolta delle metriche se non devi monitorare le statistiche delle risorse del tuo carico di lavoro durante l'addestramento.
    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.autoscaling-compute-settings

  4. Fai clic su Crea.

Scalabilità manuale

Quando i tuoi workload aumentano o diminuiscono sui cluster Ray su Vertex AI, puoi scalare manualmente il numero di repliche in base alla domanda. Ad esempio, se hai una capacità in eccesso, puoi fare lo scale down i pool di worker per risparmiare sui costi.

Limitazioni del peering VPC

Quando esegui il ridimensionamento dei cluster, puoi modificare solo il numero di repliche nei pool di worker esistenti. Ad esempio, non puoi aggiungere o rimuovere pool di worker dal tuo 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 di peering VPC per connetterti ai tuoi cluster, esiste un limite al numero massimo di nodi. Il numero massimo di nodi dipende dal numero di nodi del cluster al momento della sua creazione. Per ulteriori informazioni, consulta Calcolo del numero massimo di nodi. Questo numero massimo include non solo i pool di worker, ma anche il nodo principale. Se utilizzi la configurazione di rete predefinita, il numero di nodi non può superare i limiti massimi descritti nella documentazione sulla creazione di cluster.

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 del cluster Ray su Vertex AI a cui puoi eseguire l'upgrade (M) dipende dal numero totale iniziale di nodi configurati (N). Dopo aver creato il cluster Ray su Vertex AI, puoi scalare il numero totale di nodi a qualsiasi valore compreso tra P e M, dove P è il numero di pool nel cluster.

Il numero totale di nodi iniziali nel cluster e il numero di destinazione per l'aumento di scala devono trovarsi nello stesso blocco di colore.

number-of-nodes

Aggiorna il conteggio delle repliche

Puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python per aggiornare il numero di repliche del pool di worker. Se il tuo cluster include più pool di worker, puoi modificare singolarmente il conteggio di ciascuna replica in una singola richiesta.

SDK Ray on Vertex AI

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 su Vertex AI.

    Vai alla pagina di Ray on Vertex AI

  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.