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 Google Cloud console.
Per istruzioni su come elencare tutti i cluster o visualizzare i singoli cluster, vedi Visualizzare 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 l'intero
ModelDevelopmentCluster a cui vuoi eseguire l'aggiornamento.
Ad esempio, per aggiornare il numero di nodi di un pool di un cluster solo 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 FieldMask che specifica i campi della risorsa del cluster di sviluppo del modello da aggiornare. Vengono modificati solo i campi elencati inupdateMaskvengono modificati.I seguenti campi all'interno della risorsa
ModelDevelopmentClusterpossono essere specificati inupdateMask:labelsnode_poolsorchestrator_spec.slurm_spec.partitionsorchestrator_spec.slurm_spec.login_node_pool_idorchestrator_spec.slurm_spec.prolog_bash_scriptsorchestrator_spec.slurm_spec.epilog_bash_scriptsorchestrator_spec.slurm_spec.schedulingorchestrator_spec.slurm_spec.accounting
-
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 nella richiesta. Il servizio non aggiornerà i campi gestiti dal servizio, come gli script di avvio, prolog o epilog. Inoltre, ogni pool di nodi rimane sull'immagine su cui è attualmente in esecuzione, a meno che tu non impostinode_imagepersonalmente, pertanto un aggiornamentoUSER_ONLYche omettenode_imagenon ricreerà i nodi.USER_AND_SERVICE: applica le modifiche ai campi specificate dall'utente e consente al servizio di aggiornare i campi gestiti dal servizio.
USER_AND_SERVICEper assicurarti che il cluster sia aggiornato.
Il comando riportato di seguito 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.
Puoi aggiornare le impostazioni di pianificazione di Slurm, incluse le impostazioni di preemptive e contabilità, su un cluster in esecuzione. L'applicazione di queste impostazioni non riavvia né svuota i nodi. Il servizio rigenera slurm.conf e ricarica il controller Slurm in modo che i job in coda e in esecuzione non vengano interessati.
USER_ONLY.
scontrol show config al termine dell'operazione.
Il comando riportato di seguito attiva la preemptive 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.scheduling&updateMode=USER_ONLY'
Dove update-payload.json contiene, in parte:
{ ..., "orchestrator_spec": { "slurm_spec": { ..., "scheduling": { "preempt_type": "preempt/partition_prio", "preempt_mode": "REQUEUE", "preempt_exempt_time": "1:01" } } } }
La stessa precauzione si applica se chiami PATCH senza updateMask. In questo caso, il servizio confronta l'intero payload con il cluster corrente, quindi un payload che omette scheduling cancella tutte le impostazioni di pianificazione già presenti nel cluster. Passa un updateMask per limitare l'aggiornamento ai campi che intendi modificare.
Poiché node_pools viene sostituito completamente, un pool di nodi nel payload di aggiornamento che omette node_image viene risolto nell'immagine predefinita corrente per il tipo di macchina. Il valore predefinito avanza 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. Se leggi il valore corrente da Get per inviarlo di nuovo, tieni presente che un cluster che non è mai stato aggiornato segnala un node_image vuoto.
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
Questo comando restituisce un'operazione a lunga esecuzione in caso di successo, 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 nei 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 dei modelli, utilizzando le pipeline che hanno come target il 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 distribuiti in esecuzione sul cluster.
- Esegui il deployment del modello per l'inferenza: dopo che i modelli sono stati addestrati e registrati, esegui il deployment su un endpoint di Gemini Enterprise Agent Platform per gestire le richieste di inferenza online su larga scala.
- Ottimizza i costi: rivedi regolarmente l'utilizzo del cluster ed eliminalo quando non è in uso attivo per ridurre al minimo la fatturazione dell'hardware riservato.