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 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
Parametri di query
  • 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 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 sostituiti da config. 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 come USER_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 imposti node_image, quindi un aggiornamento di USER_ONLY che omette node_image non 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.
    Ti consigliamo di utilizzare USER_AND_SERVICE per 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'
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'intero elenco previsto di elementi nel payload della richiesta per sostituire completamente l'elenco esistente.

Modifica 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.

Aggiorna le impostazioni di configurazione di Slurm

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.

Esiste sempre il rischio che i nodi vengano riavviati al termine dei job in esecuzione a causa di modifiche alle dipendenze sottostanti. Tuttavia, questo rischio è ridotto al minimo con la modalità di aggiornamento 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.

Selezione dell'immagine del nodo

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.

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 l'operazione di aggiornamento, la maggior parte delle modifiche ha effetto immediato (o entro il tempo di sincronizzazione di Slurm di 15 secondi) e non richiede ulteriori azioni. Solo le modifiche all'infrastruttura di computing 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
  

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.