Ci sono due opzioni per scalare i cluster Ray su Vertex AI: Scalabilità automatica e scalabilità manuale. La scalabilità automatica il cluster regola automaticamente il numero di nodi worker in base alle risorse richiesti, ad esempio, da attività e attori di Ray. È consigliata la scalabilità automatica se esegui un carico di lavoro elevato e non sai esattamente quali risorse hai bisogno. La scalabilità manuale offre agli utenti un controllo più granulare dei nodi.
La scalabilità automatica può ridurre i costi del carico di lavoro, ma aumenta l'overhead per l'avvio dei nodi. può essere difficile 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 abilitare la funzionalità di scalabilità automatica di un cluster Ray specificando il numero
numero di repliche (min_replica_count
) e 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.
- Il valore
min_replica_count
deve essere maggiore o uguale a1
. - 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 abilitare di scalabilità automatica.
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 applicato il conteggio delle CPU logiche su 0 sul nodo principale di Ray per evitare di eseguire qualsiasi carico di lavoro sul nodo principale.
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:
- In Nome e regione, specifica un Nome e scegli una località per il tuo cluster.
In Impostazioni di calcolo, specifica la configurazione del Cluster Ray sul nodo head, compreso il relativo tipo di macchina, acceleratore tipo e conteggio, tipo e dimensione del disco e 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.
- Disabilita la raccolta delle metriche, se non devi monitorare statistiche sulle risorse del carico di lavoro durante l'addestramento.
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.
Fai clic su Crea.
Scalabilità manuale
Quando i carichi di lavoro aumentano o diminuiscono sui cluster Ray su Vertex AI, puoi scalare manualmente il numero di repliche in base alla domanda. Ad esempio, se se hai capacità in eccesso, puoi fare lo scale down dei tuoi pool di worker per risparmiare sui costi.
Limitazioni
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 tuoi 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 superiori come descritto nell'articolo sulla creazione di cluster documentazione.
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
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 on Vertex AI che puoi
lo scale up fino a (M
) dipende dal numero totale iniziale di nodi che hai configurato (N
).
Dopo aver creato il cluster Ray on Vertex AI, puoi scalare il totale
di nodi con qualsiasi quantità compresa tra P
e M
inclusi, dove P
è il
di pool nel tuo 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.
Aggiorna conteggio repliche
Puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python per aggiornare numero di repliche del pool di worker. Se il cluster include più pool di worker, possono modificare singolarmente il conteggio delle repliche 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
Nella console Google Cloud, vai alla pagina Ray on 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 worker da aggiornare, quindi o modificare il numero di repliche.
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.
Fai clic su Crea.