Una volta eseguito il deployment di un cluster, puoi modificarlo o rimuoverlo utilizzando i seguenti endpoint dell'API Agent Platform:
Update: modifica una configurazione del cluster esistente.Delete: rimuove definitivamente un cluster e le relative risorse.
L'aggiornamento di un cluster è disponibile solo tramite l'API Agent Platform. Puoi eliminare un cluster dall'API Agent Platform o dalla console Google Cloud .
Per istruzioni su come elencare tutti i cluster o visualizzare singoli cluster, consulta Visualizza i cluster.
Autenticazione
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
Aggiorna un cluster
UPDATE_PAYLOAD specifica il percorso locale di un file JSON che definisce la ModelDevelopmentCluster completa a cui vuoi eseguire l'aggiornamento.
Ad esempio, per aggiornare il numero di nodi di un pool di un cluster di sola CPU, utilizza il seguente payload JSON:
{ "display_name": "DISPLAY_NAME", "network": { "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" }, "node_pools": [ { "id": "cpu", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": UPDATED_MIN_NODE_COUNT, "max_node_count": UPDATED_MAX_NODE_COUNT }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } }, { "id": "login", "machine_spec": { "machine_type": "n2-standard-8" }, "scaling_spec": { "min_node_count": 1, "max_node_count": 1 }, "zone": "ZONE", "enable_public_ips": true, "boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 } } ], "orchestrator_spec": { "slurm_spec": { "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE", "partitions": [ { "id": "cpu", "node_pool_ids": [ "cpu" ] } ], "login_node_pool_id": "login" } } }
gcurl -X PATCH -d @UPDATE_PAYLOAD https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
-
updateMask(stringa, facoltativo): una risorsa FieldMask che specifica i campi della risorsa cluster di sviluppo del modello da aggiornare. Vengono modificati solo i campi elencati inupdateMask.I seguenti campi all'interno della risorsa
ModelDevelopmentClusterpossono essere specificati inupdateMask:labelsnode_poolsorchestrator_spec.slurm_spec.partitionsorchestrator_spec.slurm_spec.default_partition_idorchestrator_spec.slurm_spec.login_node_pool_idorchestrator_spec.slurm_spec.prolog_bash_scriptsorchestrator_spec.slurm_spec.epilog_bash_scriptsorchestrator_spec.slurm_spec.configorchestrator_spec.slurm_spec.schedulingeorchestrator_spec.slurm_spec.accounting: campi legacy sostituiti daconfig. Un cluster utilizza l'una o l'altra. Consulta Aggiorna le impostazioni di configurazione di Slurm.orchestrator_spec.slurm_spec.node_sets
-
updateMode(enum, facoltativo): specifica la modalità di aggiornamento. I valori possibili sono:UPDATE_MODE_UNSPECIFIED: il valore predefinito, trattato comeUSER_AND_SERVICE.USER_ONLY: applica solo le modifiche ai campi specificate dall'utente dalla richiesta. Il servizio non aggiornerà i campi gestiti dal servizio, come gli script di avvio, prologo o epilogo. Inoltre, ogni pool di nodi rimane sull'immagine attualmente in esecuzione, a meno che non impostinode_image, quindi un aggiornamento diUSER_ONLYche omettenode_imagenon ricrea i nodi.USER_AND_SERVICE: applica le modifiche ai campi specificate dall'utente e consenti al servizio di aggiornare i campi gestiti dal servizio.
USER_AND_SERVICEper assicurarti che il cluster sia aggiornato.
Il comando seguente aggiorna sia la configurazione pool di nodi sia le partizioni Slurm.
gcurl -X PATCH -d @update-payload.json \ 'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.partitions,node_pools&updateMode=USER_AND_SERVICE'
Per i campi ripetuti, come node_pools, prolog_bash_scripts e epilog_bash_scripts, l'API supporta solo un'operazione di sostituzione completa. L'utente deve fornire l'intero elenco previsto di elementi nel payload della richiesta per sostituire completamente l'elenco esistente.
Per modificare la partizione predefinita senza inviare nuovamente partitions, imposta
default_partition_id e specifica solo
orchestrator_spec.slurm_spec.default_partition_id in updateMask. Un aggiornamento che rimuove o rinomina la partizione specificata da default_partition_id viene rifiutato.
Puoi modificare la configurazione di Slurm su un cluster in esecuzione. L'applicazione di queste impostazioni non riavvia o svuota i nodi: il servizio rigenera slurm.conf e ricarica il controller Slurm, quindi i job in coda e in esecuzione non sono interessati.
USER_ONLY.
Le nuove impostazioni potrebbero richiedere un po' di tempo per essere visualizzate in scontrol show config al termine dell'operazione.
Le impostazioni con ambito cluster sono denominate orchestrator_spec.slurm_spec.config, le impostazioni del node pool orchestrator_spec.slurm_spec.node_sets e le impostazioni della partizione orchestrator_spec.slurm_spec.partitions, che contiene config di ogni partizione insieme alla relativa appartenenza. Ogni mappa viene sostituita per intero, nello stesso modo dei campi ripetuti descritti in precedenza. Invia l'insieme completo di parametri che ti interessa. Un parametro che ometti viene rimosso. Per cancellare una mappa, assegna un nome al relativo percorso in updateMask e inviala vuota.
Il comando seguente attiva la prerilascio con priorità di partizione per un cluster esistente.
gcurl -X PATCH -d @update-payload.json \ 'https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID?updateMask=orchestrator_spec.slurm_spec.config&updateMode=USER_ONLY'
Dove update-payload.json contiene, in parte:
{ ..., "orchestrator_spec": { "slurm_spec": { ..., "config": { "PriorityType": "priority/multifactor", "PriorityWeightAge": "1000", "PreemptType": "preempt/partition_prio", "PreemptMode": "REQUEUE", "PreemptExemptTime": "1:01", "SchedulerParameters": "bf_continue,bf_window=1440" } } } }
Imposta i parametri a livello di cluster in config anziché in scheduling e accounting, che sostituisce. Un cluster utilizza l'uno o l'altro; una richiesta che imposta entrambi viene rifiutata.
Se chiami PATCH senza un updateMask, il servizio confronta l'intero payload con il cluster attuale, quindi un payload che omette queste impostazioni cancella tutto ciò che il cluster ha già. Passa un updateMask per limitare l'aggiornamento ai campi che intendi modificare. Un campo che nomini, ma che ometti dal payload, viene cancellato.
Per spostare un cluster esistente da scheduling e accounting a
config, invia ogni impostazione in config utilizzando il nome
slurm.conf, ad esempio AccountingStorageEnforce o PriorityWeightQOS, ometti
scheduling e accounting dal payload e assegna un nome a tutti e tre in
updateMask in modo che i campi precedenti vengano cancellati. Dopodiché, è sufficiente un updateMask di orchestrator_spec.slurm_spec.config.
Poiché node_pools viene sostituito per intero, un pool di nodi nel payload di aggiornamento che omette node_image viene risolto nell'immagine predefinita corrente per il suo tipo di macchina. Questo valore predefinito cambia nel tempo, quindi l'omissione di node_image sposta il pool di nodi all'ultima immagine disponibile, che spesso è quella che vuoi: vengono applicate correzioni di driver, sicurezza e bug.
Per mantenere un pool di nodi su un'immagine specifica durante gli aggiornamenti, imposta node_image su quell'immagine (ad esempio, projects/IMAGE_PROJECT/global/images/IMAGE). Se leggi il valore corrente da Get per inviarlo nuovamente, tieni presente che un cluster che non è mai stato aggiornato segnala un node_image vuoto, a meno che node_image non sia stato impostato al momento della creazione del cluster.
Una richiesta riuscita restituisce un'operazione a lunga esecuzione (LRO). Puoi quindi monitorare lo stato di questa operazione utilizzando il seguente comando:
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Elimina un cluster
gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
In caso di esito positivo, questo comando restituisce un'operazione a lunga esecuzione, che puoi monitorare utilizzando il comando operations describe.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Passaggi successivi
La gestione del cluster di addestramento di Gemini Enterprise Agent Platform ti consente di ottimizzarne l'utilizzo, integrarlo in workflow automatizzati e preparare i modelli addestrati per il deployment.
- Orchestra l'addestramento con le pipeline di Gemini Enterprise Agent Platform: automatizza l'intero ciclo di vita dei job di addestramento, dalla preparazione dei dati alla registrazione del modello, utilizzando pipeline destinate al tuo cluster gestito.
- Monitora ed esegui il debug dei job di addestramento: monitora l'avanzamento e l'utilizzo delle risorse e identifica i problemi relativi ai job di addestramento distribuito in esecuzione sul cluster.
- Esegui il deployment del modello per l'inferenza: dopo aver addestrato e registrato i modelli, esegui il deployment su un endpoint di Gemini Enterprise Agent Platform per gestire le richieste di inferenza online su larga scala.
- Ottimizza i costi: esamina regolarmente l'utilizzo del cluster ed eliminalo quando non è in uso per ridurre al minimo la fatturazione per l'hardware prenotato.