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 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
Parametri di query
  • 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 in updateMask vengono modificati.

    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.login_node_pool_id
    • orchestrator_spec.slurm_spec.prolog_bash_scripts
    • orchestrator_spec.slurm_spec.epilog_bash_scripts
    • orchestrator_spec.slurm_spec.scheduling
    • orchestrator_spec.slurm_spec.accounting
  • 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 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 imposti node_image personalmente, pertanto un aggiornamento USER_ONLY che omette node_image non 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.
    Ti consigliamo di utilizzare USER_AND_SERVICE per 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'
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.

Aggiorna le impostazioni di pianificazione e contabilità di Slurm

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.

Esiste sempre il rischio che i nodi si riavviino al termine dei job in esecuzione a causa di modifiche alle dipendenze sottostanti. Tuttavia, questo rischio viene ridotto al minimo con la modalità di aggiornamento USER_ONLY.
Potrebbe essere necessario un breve periodo di tempo prima che le nuove impostazioni vengano visualizzate in 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.

Selezione dell'immagine del nodo

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.

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 Slurm di 15 secondi) 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
  

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.