I cluster Ray su Vertex AI 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 sai quali risorse sono necessarie, ti consigliamo la scalabilità automatica. Lo scaling manuale offre agli utenti un controllo più granulare dei nodi.
La scalabilità automatica può ridurre i costi del workload, ma aggiunge l'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 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 best practice OSS Ray, l'impostazione del conteggio delle CPU logiche su 0 sul nodo head di Ray viene applicata per evitare l'esecuzione di qualsiasi workload sul nodo head.
Nella console Google Cloud , vai alla pagina Ray su Vertex AI.
Fai clic su Crea cluster per aprire il riquadro Crea cluster.
Per ogni passaggio del riquadro Crea cluster, rivedi o sostituisci le informazioni predefinite del cluster. Fai clic su Continua per completare ogni passaggio:
- Per Nome e regione, specifica un Nome e scegli una località per il cluster.
Per Impostazioni di calcolo, specifica la configurazione del cluster Ray sul nodo head, inclusi il tipo di macchina, il tipo e il conteggio dell'acceleratore, il tipo e la dimensione del disco e il conteggio delle repliche. (Facoltativo) Aggiungi un URI immagine personalizzato per specificare un'immagine di container personalizzata per aggiungere dipendenze Python non fornite dall'immagine di container predefinita. Vedi Immagine personalizzata.
Nella sezione Opzioni avanzate, puoi:
- Specifica la tua chiave di crittografia.
- Specifica un service account personalizzato.
- Se non devi monitorare le statistiche delle risorse del carico di lavoro durante l'addestramento, disattiva la raccolta delle metriche.
Per creare un cluster con un worker pool con scalabilità automatica, fornisci un valore per il numero massimo di repliche del worker pool.
Fai clic su Crea.
Scalabilità manuale
Man mano che i tuoi workload aumentano o diminuiscono nei cluster Ray su Vertex AI, scala manualmente il numero di repliche in base alla domanda. Ad esempio, se hai capacità in eccesso, fare lo scale down i pool di worker per risparmiare sui costi.
Limitazioni con il peering VPC
Quando esegui lo scale dei cluster, puoi modificare solo il numero di repliche nei pool di worker esistenti. Ad esempio, non puoi aggiungere o rimuovere worker pool dal cluster o modificare il tipo di macchina dei worker pool. 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 cluster, esiste una limitazione al numero massimo di nodi. Il numero massimo di nodi dipende dal numero di nodi del cluster al momento della creazione. Per maggiori informazioni, 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 superiori descritti nella documentazione Creare cluster.
Best practice per l'allocazione delle subnet
Quando esegui il deployment di Ray su Vertex AI utilizzando l'accesso ai servizi privati (PSA), è fondamentale assicurarsi che l'intervallo di indirizzi IP allocato sia sufficientemente ampio e contiguo per ospitare il numero massimo di nodi a cui potrebbe scalare il cluster. L'esaurimento degli IP può verificarsi se l'intervallo IP riservato alla connessione PSA è troppo piccolo o frammentato, causando errori di deployment.
In alternativa, ti consigliamo di eseguire il deployment di Ray su Vertex AI con un'interfaccia Private Service Connect, che riduce il consumo di IP a una subnet /28.
Monitoraggio dell'accesso ai servizi privati
Come best practice, utilizza Network Analyzer, uno strumento di diagnostica all'interno di Network Intelligence Center di Google Cloud che monitora automaticamente le configurazioni di rete Virtual Private Cloud (VPC) per rilevare configurazioni errate e impostazioni non ottimali. Network Analyzer funziona in modo continuo, esegue test in modo proattivo e genera approfondimenti 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 ai servizi privato (PSA) e fornisce informazioni specifiche correlate. Si tratta di una funzione fondamentale per la gestione di servizi come Cloud SQL, Memorystore e Vertex AI, che utilizzano PSA.
Il modo principale in cui Network Analyzer monitora le subnet PSA è fornendo informazioni 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 il PSA. Ciò è importante perché quando crei un servizio gestito (come Vertex AI), 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 dell'indirizzo IP per un intervallo allocato di PSA supera una determinata soglia (ad esempio, il 75%), Network Analyzer genera un approfondimento di avviso. In questo modo, ricevi un avviso proattivo in caso di potenziali problemi di capacità, il che ti dà il tempo di espandere l'intervallo IP allocato prima di esaurire gli indirizzi disponibili per le nuove risorse di servizio.
Aggiornamenti delle subnet di accesso ai servizi privati
Per i deployment di Ray su Vertex AI, 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 scaling significativo, con un massimo di 65.536 o 32.768 indirizzi IP unici, rispettivamente. In questo modo si evita l'esaurimento degli IP anche con cluster Ray di grandi dimensioni.
Se esaurisci lo spazio di indirizzi IP allocato, Google Cloud viene visualizzato questo errore:
Impossibile creare la subnet. Impossibile trovare blocchi liberi negli intervalli IP allocati.
Ti consigliamo di espandere l'intervallo di subnet attuale o allocare un intervallo che tenga conto della crescita futura.
Calcolo del numero massimo di nodi
Se utilizzi l'accesso privato ai servizi (peering VPC) per connetterti ai nodi, utilizza le seguenti formule per verificare di non superare il numero massimo di nodi (M
), supponendo che 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 su Vertex AI a cui puoi
aumentare le dimensioni (M
) dipende dal numero totale iniziale di nodi che hai configurato (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
inclusi, dove P
è il
numero di pool nel cluster.
Il numero totale iniziale di nodi nel cluster e il numero di destinazione dello scale up devono trovarsi nello stesso blocco di colore.
Aggiorna il conteggio delle repliche
Utilizza la console Google Cloud o l'SDK Vertex AI per Python per aggiornare il conteggio delle repliche del pool di worker. Se il cluster include più pool di worker, puoi modificare individualmente il numero di repliche di ciascuno in un'unica 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
Nella console Google Cloud , vai alla pagina Ray su Vertex AI.
Nell'elenco dei cluster, fai clic sul cluster da modificare.
Nella pagina Dettagli cluster, fai clic su Modifica cluster.
Nel riquadro Modifica cluster, seleziona il pool di nodi di lavoro da aggiornare e poi modifica il conteggio delle repliche.
Fai clic su Aggiorna.
Attendi qualche minuto affinché il cluster venga aggiornato. Al termine dell'aggiornamento, puoi visualizzare il numero di repliche aggiornato nella pagina Dettagli cluster.
Fai clic su Crea.