Gestisci cluster

Se ti interessano i cluster di addestramento di Gemini Enterprise Agent Platform, contatta il tuo rappresentante di vendita per l'accesso.

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 Cloud de Confiance .

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
Parametri di query
  • updateMask (stringa, facoltativo): una FieldMask che specifica quali campi della risorsa cluster di sviluppo del modello aggiornare. Vengono modificati solo i campi elencati in updateMask.

    I seguenti campi all'interno della risorsa ModelDevelopmentCluster possono essere specificati in updateMask:

    • labels
    • node_pools
    • orchestrator_spec.slurm_spec.partitions
    • orchestrator_spec.slurm_spec.default_partition_id
    • orchestrator_spec.slurm_spec.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.config
    • orchestrator_spec.slurm_spec.scheduling e orchestrator_spec.slurm_spec.accounting: campi legacy che config sostituisce. Un cluster utilizza l'uno o l'altro. Vedi 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, considerato come USER_AND_SERVICE.
    • USER_ONLY: applica solo le modifiche ai campi specificati dall'utente nella richiesta. Il servizio non aggiorna 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 imposti node_image, quindi un aggiornamento di USER_ONLY che omette node_image non ricreerà i nodi.
    • USER_AND_SERVICE: applica le modifiche ai campi specificate dall'utente e consenti al servizio di aggiornare i campi gestiti dal servizio.
    Ti consigliamo di utilizzare USER_AND_SERVICE per assicurarti che il cluster sia aggiornato.

Il comando seguente aggiorna sia la configurazione del 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'
Nota importante sui campi ripetuti

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'elenco completo previsto di elementi nel payload della richiesta per sostituire completamente l'elenco esistente.

Modificare la partizione predefinita

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.

Aggiornare le impostazioni di configurazione di Slurm

Puoi modificare la configurazione di Slurm su un cluster in esecuzione. L'applicazione di queste impostazioni non riavvia né svuota alcun nodo: il servizio rigenera slurm.conf e ricarica il controller Slurm, quindi i job in coda e in esecuzione non vengono interessati.

Esiste sempre il rischio che i nodi si riavviino dopo il completamento dei job a causa di modifiche alle dipendenze sottostanti. Tuttavia, questo rischio è ridotto al minimo con la modalità di aggiornamento USER_ONLY.

Potrebbe essere necessario un po' di tempo prima che le nuove impostazioni vengano visualizzate in scontrol show config dopo il completamento dell'operazione.

Le impostazioni con ambito cluster sono denominate da orchestrator_spec.slurm_spec.config, le impostazioni del node pool da orchestrator_spec.slurm_spec.node_sets e le impostazioni della partizione da orchestrator_spec.slurm_spec.partitions, che contiene config di ogni partizione insieme alla relativa appartenenza. Ogni mappa viene sostituita completamente, allo stesso modo dei campi ripetuti descritti in precedenza. Invia l'insieme completo di parametri che ti interessano; un parametro che ometti viene rimosso. Per cancellare una mappa, specifica il percorso nel campo updateMask e invia il campo vuoto.

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'una o l'altra opzione; una richiesta che imposta entrambe 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 non includi nel payload viene cancellato.

Per spostare un cluster esistente da scheduling e accounting a config, invia ogni impostazione in config utilizzando il relativo nome slurm.conf, ad esempio AccountingStorageEnforce o PriorityWeightQOS, escludi 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.

Selezione delle immagini dei nodi

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 avanza nel tempo, quindi l'omissione di node_image sposta il pool di nodi sull'immagine più recente disponibile, che spesso è ciò 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 restituisce un node_image vuoto.

Comportamento post-aggiornamento e stato 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
Una volta completata correttamente l'operazione di aggiornamento, la maggior parte delle modifiche ha effetto immediato (o entro il tempo di sincronizzazione di 15 secondi di Slurm) e non richiede ulteriori azioni. Solo le modifiche all'infrastruttura di calcolo del cluster sottostante, incluse le modifiche alle origini di archiviazione e agli script di avvio, richiedono la ricreazione delle risorse.

Elimina un cluster

  gcurl -X DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters/CLUSTER_ID
  

Se l'operazione va a buon fine, 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 in un endpoint Gemini Enterprise Agent Platform per gestire le richieste di inferenza online su larga scala.
  • Ottimizza i costi: rivedi regolarmente l'utilizzo del cluster ed elimina il cluster quando non è in uso attivo per ridurre al minimo la fatturazione dell'hardware riservato.