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 carico di lavoro, 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 di 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 di acceleratori, 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 carichi di lavoro 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 Crea cluster.
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 alcuni minuti che il cluster venga aggiornato. Al termine dell'aggiornamento, puoi visualizzare il numero di repliche aggiornato nella pagina Dettagli cluster.
Fai clic su Crea.