Crea cluster

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

Questa pagina fornisce il metodo diretto basato su API per la creazione e la gestione di un cluster di addestramento. Scoprirai come definire la configurazione completa del cluster, inclusi i nodi di accesso, le partizioni GPU ad alte prestazioni come A4 e le impostazioni dell'orchestratore Slurm, all'interno di un file JSON. È incluso anche l'utilizzo di curl e delle chiamate API REST per eseguire il deployment di questa configurazione, creando il cluster e gestendone il ciclo di vita con le operazioni GET, LIST, UPDATE e DELETE.

Definisci la configurazione del cluster

Crea un file JSON per definire la configurazione completa del cluster di addestramento.

Se la policy dell'organizzazione vieta gli indirizzi IP pubblici sulle istanze di computing, esegui il deployment del cluster di addestramento con il parametro enable_public_ips: false e utilizza Cloud NAT per il traffico in uscita verso internet.

Il primo passaggio per il provisioning di un cluster di addestramento consiste nel definirne la configurazione completa in un file JSON. Questo file funge da progetto per il tuo cluster, specificando tutto, dal nome e dalle impostazioni di rete all'hardware per i nodi di accesso e worker.

La sezione seguente fornisce diversi file di configurazione JSON completi che fungono da modelli pratici per una serie di casi d'uso comuni. Consulta questo elenco per trovare l'esempio che meglio si adatta alle tue esigenze e utilizzalo come punto di partenza.

Ogni esempio è seguito da una descrizione dettagliata dei parametri chiave utilizzati in quella configurazione specifica.

GPU solo con Filestore

Questa è la configurazione standard. Fornisce un'istanza Filestore che funge da directory /home per il cluster, adatta per l'uso generale e l'archiviazione dei dati utente.

L'esempio seguente mostra i contenuti di gpu-filestore.json. Questa specifica crea un cluster con una partizione GPU. Puoi utilizzarlo come modello e modificare valori come machineType o nodeCount in base alle tue esigenze.

Per un elenco dei parametri, consulta Riferimento ai parametri.

 {
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "labels": { "example-key": "example-value" }
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

GPU con Filestore e Managed Lustre

Questa configurazione avanzata include l'istanza Filestore standard oltre a un file system Lustre ad alte prestazioni. Scegli questa opzione se i tuoi job di addestramento richiedono un accesso con throughput elevato a set di dati di grandi dimensioni.

Per un elenco dei parametri, consulta Riferimento ai parametri.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "RESERVATION",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "lustres": [
        "projects/PROJECT_ID/locations/ZONE/instances/LUSTRE"
      ]
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}
  

GPU con script di avvio

Questo esempio mostra come aggiungere uno script personalizzato a un pool di nodi. Questo script viene eseguito su tutti i nodi del pool all'avvio. Per configurare questa opzione, aggiungi i campi pertinenti alla definizione del pool di nodi oltre alle impostazioni generali. Per un elenco dei parametri e delle relative descrizioni, consulta Riferimento ai parametri.

{
  "display_name": "DISPLAY_NAME",
  "network": {
    "network": "projects/PROJECT_ID/global/networks/NETWORK",
    "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK"
  },
  "node_pools": [
    {
      "id": "login",
      "machine_spec": {
        "machine_type": "n2-standard-8"
      },
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "pd-standard",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    },
    {
      "id": "a4",
      "machine_spec": {
        "machine_type": "a4-highgpu-8g",
        "accelerator_type": "NVIDIA_B200",
        "accelerator_count": 8,
        "reservation_affinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
          ]
        }
      },
      "provisioning_model": "PROVISIONING_MODEL",
      "scaling_spec": {
        "min_node_count": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "enable_public_ips": true,
      "zone": "ZONE",
      "boot_disk": {
        "boot_disk_type": "hyperdisk-balanced",
        "boot_disk_size_gb": 200
      },
      "startup_script" : "#Example script\nsudo mkdir -p /data\necho 'Script Finished'\n"
    }
  ],
  "orchestrator_spec": {
    "slurm_spec": {
      "home_directory_storage": "projects/PROJECT_ID/locations/ZONE/instances/FILESTORE",
      "partitions": [
        {
          "id": "a4",
          "node_pool_ids": [
            "a4"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

Cluster solo CPU

Per eseguire il provisioning di un ambiente di cluster di addestramento, devi prima definire la sua configurazione completa in un file JSON. Questo file funge da progetto per il cluster, specificando tutto, dal nome e dalle impostazioni di rete all'hardware per i nodi di accesso e worker.

Per un elenco dei parametri, consulta Riferimento ai parametri.

{
  "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": MIN_NODE_COUNT,
        "max_node_count": 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": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "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"
    }
  }
}

Configurazione avanzata di Slurm

Questo esempio offre un controllo granulare su Slurm impostando i parametri slurm.conf in base al nome ed eseguendo script prolog ed epilog per la configurazione e la pulizia automatiche dei job. I parametri possono essere impostati a livello di cluster, per una singola partizione o per un singolo pool di nodi.

Esistono tre mappe di configurazione, una per ogni record slurm.conf:

  • config nella specifica Slurm per le impostazioni a livello di cluster
  • config su una partizione
  • Voce node_sets per un pool di nodi

Per le regole relative ai nomi e ai valori dei parametri e ai parametri rifiutati, consulta ConfigMap di Slurm.

Non è necessario stabilirli al momento della creazione. Tutte e tre le mappe possono essere modificate su un cluster in esecuzione, senza riavviare i nodi o interrompere i job in coda. Consulta Aggiorna le impostazioni di configurazione di Slurm.

{
  "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": MIN_NODE_COUNT,
        "max_node_count": 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": MIN_NODE_COUNT,
        "max_node_count": MAX_NODE_COUNT
      },
      "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",
      "config": {
        "PriorityType": "priority/multifactor",
        "PriorityWeightAge": "1000",
        "PriorityWeightFairshare": "10000",
        "PreemptType": "preempt/partition_prio",
        "PreemptMode": "SUSPEND,GANG",
        "SchedulerParameters": "bf_continue,bf_window=1440,bf_resolution=600",
        "AccountingStorageEnforce": "limits,qos"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'Prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ],
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ],
          "config": {
            "MaxTime": "4-00:00:00",
            "DefMemPerCPU": "4096",
            "PriorityTier": "20"
          }
        }
      ],
      "node_sets": [
        {
          "node_pool_id": "cpu",
          "config": {
            "Weight": "10",
            "Features": "cpu,spot"
          }
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

La mappa con ambito cluster imposta la priorità multifattoriale, la prerilascio della priorità di partizione e SchedulerParameters, il cui termine bf_continue mostra la forma composita: un termine semplice attiva un flag e i termini sono separati da virgole. La mappa delle partizioni limita il runtime del job e la memoria predefinita solo per la partizione cpu, mentre la voce node_sets etichetta i nodi del pool in modo che i job possano selezionarli con --constraint.

Una volta definito il cluster in un file JSON, utilizza i seguenti comandi dell'API REST per eseguire il deployment e gestire il cluster. Gli esempi utilizzano un alias gcurl, che è una scorciatoia autenticata e comoda per interagire con gli endpoint API. Questi comandi coprono l'intero ciclo di vita, dal deployment iniziale del cluster all'aggiornamento di un cluster, al recupero del suo stato, all'elenco di tutti i cluster e, infine, all'eliminazione del cluster.

Autenticazione

alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'

Crea un file JSON

Crea un file JSON (ad esempio @cpu-cluster.json) per specificare la configurazione del cluster di addestramento del modello.

Esegui il deployment del cluster

Dopo aver creato il file di configurazione JSON, puoi eseguire il deployment del cluster utilizzando l'API REST.

Imposta le variabili di ambiente

Prima di eseguire il comando, imposta le seguenti variabili di ambiente. In questo modo il comando API è più pulito e facile da gestire.

  • PROJECT_ID: l'ID progetto Google Cloud in cui verrà creato il cluster.
  • REGION: la regione Google Cloud per il cluster e le sue risorse.
  • ZONE: la zona Google Cloud in cui verrà eseguito il provisioning delle risorse del cluster.
  • CLUSTER_ID: un identificatore univoco per il tuo cluster di addestramento, utilizzato anche come prefisso per la denominazione delle risorse correlate.

Esegui il comando create

Ora esegui il seguente comando gcurl. Utilizza il file JSON (in questo esempio, cpu-cluster.json) come corpo della richiesta e le variabili di ambiente appena impostate per creare l'endpoint API e i parametri di query.

  gcurl -X POST -d @cpu-cluster.json https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/modelDevelopmentClusters?model_development_cluster_id=CLUSTER_ID
    

Una volta avviato il deployment, verrà generato un ID operazione. Assicurati di copiare questo ID. Ti servirà per convalidare il cluster nel passaggio successivo.

  gcurl -X POST -d @cpu-cluster.json https://us-central1-aiplatform.googleapis.com/v1beta1/projects/managedtraining-project/locations/us-central1/modelDevelopmentClusters?model_development_cluster_id=training
  {
      "name": "projects/1059558423163/locations/us-central1/operations/2995239222190800896",
      "metadata": {
      "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateModelDevelopmentClusterOperationMetadata",
      "genericMetadata": {
        "createTime": "2025-10-24T14:16:59.233332Z",
        "updateTime": "2025-10-24T14:16:59.233332Z"
      },
      "progressMessage": "Create Model Development Cluster request received, provisioning..."
  }
    

Convalida il deployment del cluster

Monitora l'avanzamento del deployment utilizzando l'ID operazione fornito durante il deployment del cluster. Ad esempio, 2995239222190800896 è l'ID operazione nell'esempio citato in precedenza.

    gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

In breve

L'invio della configurazione del cluster con il comando POST gcurl avvia il provisioning del cluster, che è un'operazione asincrona a lunga esecuzione. L'API restituisce immediatamente una risposta contenente un Operation ID. È fondamentale salvare questo ID, poiché lo utilizzerai nei passaggi successivi per monitorare l'avanzamento del deployment, verificare che il cluster sia stato creato correttamente e gestirne il ciclo di vita.

Riferimento ai parametri

L'elenco seguente descrive tutti i parametri utilizzati negli esempi di configurazione. I parametri sono organizzati in gruppi logici in base alla risorsa che configurano.

Impostazioni generali e di rete

  • DISPLAY_NAME: un nome univoco per il cluster di addestramento. La stringa può contenere solo caratteri alfanumerici minuscoli, deve iniziare con una lettera e può avere una lunghezza massima di 10 caratteri.
  • PROJECT_ID: l'ID progetto Google Cloud .
  • REGION: la regione Google Cloud in cui si troveranno il cluster e le relative risorse.
  • NETWORK: la rete Virtual Private Cloud da utilizzare per le risorse del cluster.
  • ZONE: la zona Google Cloud per il cluster e le relative risorse.
  • SUBNETWORK: la subnet da utilizzare per le risorse del cluster.

Configurazione del node pool

I seguenti parametri vengono utilizzati per definire i pool di nodi sia per i nodi di accesso che per i nodi worker.

Impostazioni comuni pool di nodi

  • ID: un identificatore univoco per il pool di nodi all'interno del cluster (ad esempio, "login", "a4", "cpu").
  • PROVISIONING_MODEL: il modello di provisioning per il nodo worker (ad esempio ON_DEMAND, SPOT, RESERVATION, FLEX_START).
  • MACHINE_TYPE: Il tipo di macchina per il nodo worker (ad esempio, a3-highgpu-8g, a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g). Per l'elenco completo dei tipi di macchina supportati, vedere Risorse di calcolo.
  • MIN_NODE_COUNT: MIN_NODE_COUNT deve essere uguale a MAX_NODE_COUNT.
  • MAX_NODE_COUNT: per il pool di nodi di accesso, MAX_NODE_COUNT deve essere uguale a MIN_NODE_COUNT.
  • ENABLE_PUBLIC_IPS: un valore booleano (true o false) per determinare se il nodo di accesso ha un indirizzo IP pubblico.
  • BOOT_DISK_TYPE: il tipo di disco di avvio per il nodo di accesso (ad esempio, pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB: le dimensioni del disco di avvio in GB per il nodo di accesso.
  • LABELS: un insieme di coppie chiave/valore per etichettare il pool di nodi.
  • NODE_IMAGE (corrisponde a node_image all'interno di un oggetto node_pools): l'immagine VM da cui viene eseguito l'avvio dei nodi del pool di nodi, come percorso completo della risorsa della famiglia di immagini o dell'immagine (ad esempio, projects/IMAGE_PROJECT/global/images/IMAGE o projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY ). Se lo ometti, il pool di nodi utilizza l'immagine predefinita corrente per il tipo di macchina, che avanza nel tempo. Impostalo in modo da mantenere il pool di nodi su un'immagine specifica. La modifica dell'immagine di un pool di nodi comporta la ricreazione dei relativi nodi.

Impostazioni di archiviazione aggiuntive

  • FILESTORES (corrisponde a filestores all'interno di un oggetto node_pools): un elenco di istanze Filestore preesistenti da montare sul pool di nodi per l'accesso ai file condivisi.
  • LUSTRES (corrisponde a lustres all'interno di un oggetto node_pools): un elenco di istanze Lustre preesistenti da montare sul pool di nodi per l'accesso ai file ad alte prestazioni.

Impostazioni specifiche per i worker

  • ACCELERATOR_TYPE: l'acceleratore GPU corrispondente da collegare ai nodi worker. I valori supportati sono:
    • NVIDIA_H100_80GB
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_B200
  • ACCELERATOR_COUNT: il numero di acceleratori da collegare a ogni nodo worker.
  • RESERVATION_AFFINITY_TYPE (corrisponde a machine_spec.reservation_affinity.reservationAffinityType): l'affinità di prenotazione per il pool di nodi. Questo parametro deve essere SPECIFIC_RESERVATION, che è l'unico valore supportato. Quando utilizzi SPECIFIC_RESERVATION, devi specificare la prenotazione in machine_spec.reservation_affinity.values.
  • RESERVATION_NAME: il nome della prenotazione da utilizzare per il pool di nodi. Viene utilizzato nel nome completo della risorsa di prenotazione fornito in machine_spec.reservation_affinity.values, ad esempio projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME. È necessaria una prenotazione quando RESERVATION_AFFINITY_TYPE è SPECIFIC_RESERVATION.

Configurazione dell'orchestratore e dello spazio di archiviazione

Questi campi sono definiti all'interno del blocco orchestrator_spec.slurm_spec del file JSON.

Impostazioni di base di Slurm e dello spazio di archiviazione

  • HOME_DIRECTORY_STORAGE (corrisponde a home_directory_storage): il nome completo della risorsa dell'istanza Filestore preesistente da montare come directory /home.
  • LOGIN_NODE_POOL_ID (corrisponde a login_node_pool_id): l'ID del pool di nodi da utilizzare per i nodi di accesso.
  • partitions: un elenco di oggetti di partizione, in cui ogni oggetto richiede un id e un elenco di node_pool_ids.
  • default_partition_id (facoltativo): il id della partizione utilizzata per eseguire i job Slurm quando non viene specificata esplicitamente alcuna partizione (ad esempio, quando esegui sbatch senza il flag --partition). Se non viene impostata, la prima partizione nell'elenco delle partizioni diventa quella predefinita, pertanto il riordinamento dell'elenco modificherà la partizione predefinita.

Impostazioni Slurm avanzate

  • prolog_bash_scripts: un elenco di stringhe, in cui ogni stringa contiene i contenuti completi di uno script Bash da eseguire prima dell'inizio di un job.
  • epilog_bash_scripts: un elenco di stringhe, in cui ogni stringa contiene i contenuti completi di uno script Bash da eseguire dopo il completamento di un job.
  • config, partitions[].config e node_sets: parametri Slurm impostati per nome. Consulta Configmap di Slurm.
  • scheduling e accounting: sostituito. Questi due oggetti espongono un insieme fisso di parametri di priorità, prerilascio e contabilità, ognuno dei quali può essere impostato per nome nella mappa config con ambito cluster (priority_type come "PriorityType", preempt_mode come "PreemptMode" e così via). Continuano a funzionare per i cluster che li utilizzano, ma i nuovi cluster devono utilizzare config, che supporta molti più parametri slurm.conf rispetto a questo sottoinsieme.

Mappe di configurazione Slurm

I parametri Slurm vengono impostati per nome, in tre mappe, una per ogni record slurm.conf:

  • config: impostazioni con ambito cluster, scritte come righe Key=Value globali.
  • partitions[].config: impostazioni per una partizione, scritte come coppie aggiuntive nella riga PartitionName= della partizione.
  • node_sets: un elenco di oggetti, ciascuno con un node_pool_id e una mappa config. Le impostazioni vengono scritte come coppie aggiuntive sulla riga NodeName= per i nodi del pool di nodi. Al massimo una voce per pool di nodi e il pool deve essere un pool di computing del cluster, non il pool di accesso.

In tutti e tre, le chiavi sono i nomi dei parametri Slurm come documentati da SchedMD, senza distinzione tra maiuscole e minuscole e ignorando i trattini bassi, quindi DefMemPerCPU, defmempercpu e def_mem_per_cpu indicano tutti lo stesso parametro. I valori vengono scritti nel modo in cui li scrive slurm.conf, inclusi gli elenchi separati da virgole come "PreemptMode": "SUSPEND,GANG" e i valori compositi come "SchedulerParameters": "bf_window=1440,bf_resolution=600".

Ogni mappa supporta un sottoinsieme dei parametri slurm.conf validi per il suo record, non tutti. Se hai bisogno di un parametro non supportato, contatta il tuo referente per i cluster di addestramento di Gemini Enterprise Agent Platform.

Un parametro non supportato nell'ambito in cui lo imposti o un valore non valido per quel parametro viene rifiutato quando effettui la richiesta e l'errore indica il nome del parametro. Niente viene ignorato silenziosamente. Alcuni parametri vengono rifiutati per un motivo specifico:

  • Il servizio gestisce il controllo di integrità dei nodi e l'inserimento in coda dei job, pertanto non è possibile impostare HealthCheckProgram, HealthCheckInterval, HealthCheckNodeState e RequeueExit.
  • Prolog e Epilog vengono invece impostati tramite prolog_bash_scripts e epilog_bash_scripts.
  • I parametri slurmdbd.conf, come StorageHost e PurgeJobAfter, non sono configurabili: il database di contabilità è gestito dal servizio.
  • A livello di partizione, Default viene rifiutato. La partizione predefinita è una scelta a livello di cluster, impostata con default_partition_id.

Configurazione di runtime

Questi campi sono definiti all'interno del blocco runtime_spec del file JSON.

  • service_account: il account di servizio predefinito utilizzato dal cluster durante l'esecuzione di qualsiasi workload. Se non viene specificato, viene utilizzato il account di servizio Compute Engine predefinito. Questo campo non può essere aggiornato dopo la creazione del cluster.

Passaggi successivi

Utilizza il cluster di addestramento permanente attivo per eseguire i workload di machine learning.