Questa guida fornisce istruzioni per configurare e utilizzare le VM con avvio flessibile con Slurm su Gemini Enterprise Agent Platform. Questa integrazione ti consente di utilizzare modelli di provisioning di VM flessibili per i tuoi workload di addestramento.
Configurazione e creazione del cluster
Prima di definire la configurazione del cluster, devi completare il seguente passaggio di prerequisito una tantum per assicurarti che i service account necessari siano autorizzati a gestire le risorse con avvio flessibile.
Verificare le autorizzazioni per il service agent delle API Google
- Contesto: Slurm su Gemini Enterprise Agent Platform utilizza i gruppi di istanze gestite per eseguire il provisioning dinamico delle istanze VM con avvio flessibile e gestirne il ciclo di vita. Il service agent delle API Google crea e gestisce le risorse Compute Engine sottostanti per il gruppo di istanze gestite. Come descritto nella documentazione relativa a gruppi di istanze gestite e IAM, questo account di servizio richiede le autorizzazioni per creare, eliminare ed elencare le istanze VM, nonché l'autorizzazione per collegare un' identità di account di servizio.
- Azione: controlla se il service agent delle API Google
(
PROJECT_NUMBER@cloudservices.gserviceaccount.com) ha già il ruolo Editor (roles/editor).- Se la risposta è "Sì": probabilmente non devi intraprendere ulteriori azioni. Il ruolo Editor in genere include tutte le autorizzazioni necessarie.
- Se la risposta è "No": se il ruolo Editor predefinito non viene concesso, devi concedere esplicitamente i seguenti ruoli per garantire il funzionamento del MIG:
- Amministratore istanze Compute (v1) (
roles/compute.instanceAdmin.v1) - Richiesto per creare, elencare ed eliminare le istanze VM. - Utente di service account (
roles/iam.serviceAccountUser) - Richiesto per collegare un account di servizio alle nuove VM.
- Amministratore istanze Compute (v1) (
Creare un cluster Slurm con il modello di provisioning con avvio flessibile
Per creare un cluster Slurm che utilizza il modello di provisioning con avvio flessibile, devi specificare provisioning_model nella configurazione del pool di nodi della specifica del cluster quando invii la richiesta di creazione del cluster utilizzando l'API.
Snippet di configurazione di esempio: salva la seguente configurazione JSON in un file denominato cluster_config.json. Questo esempio utilizza esplicitamente una slurm_spec.
Sostituisci i segnaposto (ad esempio <project-id>, <region>, <zone>)
con i valori effettivi.
{
"display_name": "flexvm",
"name": "projects/<project-id>/locations/<region>/modelDevelopmentClusters/",
"network": {
"network": "projects/<project-id>/global/networks/default",
"subnetwork": "projects/<project-id>/regions/<region>/subnetworks/default"
},
"node_pools": [
{
"id": "login",
"machine_spec": { "machine_type": "n2-standard-8" },
"scaling_spec": { "min_node_count": 1, "max_node_count": 1 },
"enable_public_ips": "true",
"zone": "<zone>",
"boot_disk": { "boot_disk_type": "pd-standard", "boot_disk_size_gb": 120 }
},
{
"id": "a3u",
"machine_spec": {
"machine_type": "a3-ultragpu-8g",
"accelerator_type": "NVIDIA_H200_141GB",
"accelerator_count": 8
},
"provisioning_model": "FLEX_START",
"flex_start_max_duration": "604800s",
"scaling_spec": { "min_node_count": 0, "max_node_count": 2 },
"zone": "<zone>",
"enable_public_ips": "true",
"boot_disk": { "boot_disk_type": "hyperdisk-balanced", "boot_disk_size_gb": 400 }
}
],
"orchestrator_spec": {
"slurm_spec": {
"home_directory_storage": "projects/<project-id>/locations/<zone>/instances/<filestore-id>",
"partitions": [ { "id": "a3u", "node_pool_ids": [ "a3u" ] } ],
"login_node_pool_id": "login"
}
}
}
Segui i passaggi descritti in Creare un cluster Slurm per autenticare e inviare la richiesta.
Durata massima dell'avvio flessibile: puoi facoltativamente impostare la durata massima di esecuzione per le istanze con avvio flessibile. Utilizza il campo flex_start_max_duration nella configurazione del pool di nodi, specificando il valore come stringa in secondi, a cui viene aggiunto un "s" (ad esempio, "172800s" per 2 giorni). Se omesso, il sistema utilizza il valore predefinito di 7 giorni.
Ciclo di vita operativo e resilienza
Comprendere il ciclo di vita dei nodi con avvio flessibile in un ambiente Slurm su Gemini Enterprise Agent Platform è fondamentale per pianificare i job.
Vincoli di avvio flessibile
Tutte le VM con avvio flessibile hanno una durata massima di esecuzione fissa, definita dall'impostazione flex_start_max_duration.
- Limite di durata: per impostazione predefinita,
flex_start_max_durationè impostato su 7 giorni. Puoi sostituire questo limite specificando un valoreflex_start_max_durationpersonalizzato compreso tra 30 secondi e un massimo di 7 giorni (604.800 secondi) nella configurazione del pool di nodi per adattarlo meglio ai tempi di esecuzione previsti del job. - Terminazione: quando viene raggiunto questo limite, Compute Engine termina rigorosamente l'istanza.
Comportamento di scalabilità dei nodi
Nelle sezioni seguenti vengono descritte le due strategie di scalabilità disponibili: statica e dinamica.
Nodo statico
I nodi statici ti consentono di mantenere un pool fisso di risorse sempre
disponibili (ad esempio, min_node_count > 0).
- Provisioning: i nodi vengono richiesti immediatamente dopo la creazione o il ridimensionamento del cluster per soddisfare il numero minimo di nodi.
- Scadenza e ripristino: quando un nodo con avvio flessibile statico raggiunge il valore
flex_start_max_duratione viene terminato da Compute Engine, il sistema tenta automaticamente di ricreare il nodo per ripristinare la capacità del cluster definita. Questo ciclo garantisce che il pool statico rimanga popolato, indipendentemente dal fatto che un job Slurm sia in attesa sui nodi.
Nodo dinamico
I nodi dinamici consentono di fare lo scale up del cluster solo quando necessario.
- Provisioning: quando un job viene messo in coda (entra nello stato
PENDING), lo Slurm Scheduler richiede risorse creando un gruppo di istanze gestite ed emettendo una richiesta di ridimensionamento. - Scadenza e ripristino: alla scadenza, il sistema esegue il provisioning di un nuovo nodo con avvio flessibile solo se un job Slurm è in attesa sui nodi.
Resilienza e riparazione automatica del cluster
Slurm su Gemini Enterprise Agent Platform monitora l'integrità dei nodi nelle fasi chiave del ciclo di vita del job. I controlli di integrità vengono eseguiti sia prima dell'avvio di un job (il prologo) sia al termine (l'epilogo) per contribuire a mantenere la stabilità del job.
- Gestione degli errori hardware: se il servizio rileva problemi hardware critici (ad esempio errori della GPU), è progettato per riparare automaticamente la VM non integra.
- Sostituzione automatica: se il job è ancora nello stato PENDING (o è stato rimesso in coda nello stato PENDING a causa dell'errore del nodo), il sistema esegue automaticamente il provisioning di una nuova istanza con avvio flessibile per sostituire la VM non integra. In questo modo, il workload può procedere su hardware integro senza interventi manuali.