Auf dieser Seite wird die direkte, API-gesteuerte Methode zum Erstellen und Verwalten eines Trainingsclusters beschrieben. Sie erfahren, wie Sie die vollständige Konfiguration Ihres Clusters in einer JSON-Datei definieren, einschließlich Anmeldeknoten, leistungsstarker GPU-Partitionen wie A4 und Slurm-Orchestratoreinstellungen.
Außerdem wird beschrieben, wie Sie diese Konfiguration mit curl- und REST API-Aufrufen bereitstellen, den Cluster erstellen und seinen Lebenszyklus mit den Vorgängen GET, LIST, UPDATE und DELETE verwalten.
Clusterkonfiguration definieren
Erstellen Sie eine JSON-Datei, um die vollständige Konfiguration für Ihren Trainingscluster zu definieren.
Wenn Ihre Organisationsrichtlinie öffentliche IP-Adressen für Compute-Instanzen verbietet, stellen Sie den Trainingscluster mit dem Parameter enable_public_ips: false bereit und verwenden Sie Cloud NAT für den ausgehenden Internet-Traffic.
Der erste Schritt beim Bereitstellen eines Trainingsclusters besteht darin, die vollständige Konfiguration in einer JSON-Datei zu definieren. Diese Datei dient als Blaupause für Ihren Cluster und gibt alles an, vom Namen und den Netzwerkeinstellungen bis hin zur Hardware für die Anmelde- und Worker-Knoten.
Im folgenden Abschnitt finden Sie mehrere vollständige JSON-Konfigurationsdateien, die als praktische Vorlagen für eine Vielzahl gängiger Anwendungsfälle dienen. In dieser Liste finden Sie Beispiele, die Ihren Anforderungen am ehesten entsprechen. Nutzen Sie sie als Ausgangspunkt.
GPU mit Filestore: Eine Standardkonfiguration für das GPU-Training für allgemeine Zwecke.
GPU mit Filestore und Managed Lustre: Eine erweiterte Einrichtung für E/A-intensive Jobs.
GPU mit Startscript: Hier wird gezeigt, wie benutzerdefinierte Befehle beim Start auf Knoten ausgeführt werden.
Nur-CPU-Cluster: Eine grundlegende Konfiguration, die nur CPU-Ressourcen verwendet.
Erweiterte Slurm-Konfiguration: Hier wird gezeigt, wie
slurm.conf-Parameter auf Cluster-, Partitions- oder Knotenpoolebene festgelegt werden und wie Prolog- und Epilog-Scripts ausgeführt werden.
Auf jedes Beispiel folgt eine detaillierte Beschreibung der wichtigsten Parameter, die in der jeweiligen Konfiguration verwendet werden.
GPU mit Filestore
Dies ist die Standardkonfiguration. Sie stellt eine Filestore-Instanz bereit, die als /home-Verzeichnis für den Cluster dient und sich für die allgemeine Verwendung und zum Speichern von Nutzerdaten eignet.
Das folgende Beispiel zeigt den Inhalt von gpu-filestore.json. Mit dieser Spezifikation wird ein Cluster mit einer GPU-Partition erstellt. Sie können diesen Code als Vorlage verwenden und Werte wie machineType oder nodeCount nach Bedarf anpassen.
Eine Liste der Parameter finden Sie in der Parameterreferenz.
{ "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 mit Filestore und Managed Lustre
Diese erweiterte Konfiguration umfasst die Standard-Filestore-Instanz sowie ein leistungsstarkes Lustre-Dateisystem. Wählen Sie diese Option aus, wenn für Ihre Trainings-Jobs ein Zugriff mit hohem Durchsatz auf große Datasets erforderlich ist.
Eine Liste der Parameter finden Sie in der Parameterreferenz.
{ "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 mit Startskript
In diesem Beispiel wird gezeigt, wie Sie einem Knotenpool ein benutzerdefiniertes Skript hinzufügen. Dieses Skript wird beim Start auf allen Knoten in diesem Pool ausgeführt. Fügen Sie dazu der Definition Ihres Knotenpools zusätzlich zu den allgemeinen Einstellungen die entsprechenden Felder hinzu. Eine Liste der Parameter und ihrer Beschreibungen finden Sie in der Parameterreferenz.
{ "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" } } }
Nur-CPU-Cluster
Wenn Sie eine Trainingsclusterumgebung bereitstellen möchten, müssen Sie zuerst die vollständige Konfiguration in einer JSON-Datei definieren. Diese Datei dient als Blaupause für Ihren Cluster und gibt alles an, vom Namen und den Netzwerkeinstellungen bis hin zur Hardware für die Anmelde- und Worker-Knoten.
Eine Liste der Parameter finden Sie in der Parameterreferenz.
{ "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" } } }
Erweiterte Slurm-Konfiguration
In diesem Beispiel wird eine detaillierte Steuerung von Slurm ermöglicht, indem slurm.conf-Parameter nach Namen festgelegt werden und Prolog- und Epilog-Scripts für die automatisierte Job-Einrichtung und ‑Bereinigung ausgeführt werden. Parameter können clusterweit, für eine einzelne Partition oder für einen einzelnen Knotenpool festgelegt werden.
Es gibt drei Konfigurationskarten, eine für jeden slurm.conf-Datensatz:
configin der Slurm-Spezifikation für clusterweite Einstellungenconfigauf einer Partitionnode_sets-Eintrag für einen Knotenpool
Informationen zu den Regeln für Parameternamen und -werte sowie zu den Parametern, die abgelehnt werden, finden Sie unter Slurm-Konfigurationszuordnungen.
Sie müssen diese nicht bei der Erstellung festlegen. Alle drei Maps können in einem laufenden Cluster geändert werden, ohne dass Knoten neu gestartet oder in die Warteschlange eingereihte Jobs unterbrochen werden müssen. Weitere Informationen finden Sie unter Slurm-Konfigurationseinstellungen aktualisieren.
{ "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" } } }
Die clusterbezogene Zuordnung legt die Priorität für die Multi-Faktor-Authentifizierung, die Priorität für das vorzeitige Beenden von Partitionen und SchedulerParameters fest. Der bf_continue-Begriff zeigt die zusammengesetzte Form: Ein einfacher Begriff aktiviert ein Flag und die Begriffe sind kommagetrennt. Die Laufzeit des Jobs für die Partitionszuordnung und
der Standardspeicher für die Partition werden nur für die Partition cpu begrenzt. Die node_sets-Eintragslabels
kennzeichnen die Knoten des Pools, damit sie mit --constraint für Jobs ausgewählt werden können.
Nachdem Sie Ihren Cluster in einer JSON-Datei definiert haben, können Sie ihn mit den folgenden REST API-Befehlen bereitstellen und verwalten. In den Beispielen wird der Alias gcurl verwendet, der eine praktische, authentifizierte Abkürzung für die Interaktion mit den API-Endpunkten ist. Diese Befehle decken den gesamten Lebenszyklus ab, von der anfänglichen Bereitstellung Ihres Clusters über das Aktualisieren eines Clusters, das Abrufen seines Status und das Auflisten aller Cluster bis hin zum endgültigen Löschen des Clusters.
Authentifizierung
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
JSON-Datei erstellen
Erstellen Sie eine JSON-Datei (z. B. @cpu-cluster.json), um die Konfiguration für Ihren Modelltrainingscluster anzugeben.
Cluster bereitstellen
Nachdem Sie die JSON-Konfigurationsdatei erstellt haben, können Sie den Cluster mit der REST API bereitstellen.
Umgebungsvariablen festlegen
Legen Sie vor dem Ausführen des Befehls die folgenden Umgebungsvariablen fest. Dadurch wird der API-Befehl übersichtlicher und lässt sich leichter verwalten.
- PROJECT_ID: Die Projekt-ID Ihres Google Cloud Projekts, in dem der Cluster erstellt wird.
- REGION: Die Google Cloud Region für den Cluster und seine Ressourcen.
- ZONE: Die Google Cloud Zone, in der die Clusterressourcen bereitgestellt werden.
- CLUSTER_ID: Eine eindeutige Kennung für Ihren Trainingscluster, die auch als Präfix für die Benennung zugehöriger Ressourcen verwendet wird.
Befehl zum Erstellen ausführen
Führen Sie nun den folgenden gcurl-Befehl aus. Dabei wird die JSON-Datei (in diesem Beispiel cpu-cluster.json) als Anfragetext und die Umgebungsvariablen, die Sie gerade festgelegt haben, verwendet, um den API-Endpunkt und die Abfrageparameter zu erstellen.
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
Sobald die Bereitstellung beginnt, wird eine Vorgangs-ID generiert. Kopieren Sie diese ID. Sie benötigen sie, um Ihren Cluster im nächsten Schritt zu validieren.
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..." }
Clusterbereitstellung validieren
Verfolgen Sie den Fortschritt der Bereitstellung anhand der Vorgangs-ID, die beim Bereitstellen des Clusters angegeben wurde. 2995239222190800896 ist beispielsweise die Vorgangs-ID im zuvor genannten Beispiel.
gcurl https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Zusammenfassung
Wenn Sie Ihre Clusterkonfiguration mit dem POST-Befehl gcurl senden, wird die Bereitstellung Ihres Clusters initiiert. Dies ist ein asynchroner Vorgang mit langer Ausführungszeit. Die API gibt sofort eine Antwort mit einem Operation ID zurück.
Es ist wichtig, diese ID zu speichern, da Sie sie in den folgenden Schritten verwenden, um den Fortschritt der Bereitstellung zu überwachen, zu prüfen, ob der Cluster erfolgreich erstellt wurde, und seinen Lebenszyklus zu verwalten.
Parameterverweis
In der folgenden Liste werden alle Parameter beschrieben, die in den Konfigurationsbeispielen verwendet werden. Die Parameter sind in logischen Gruppen organisiert, die auf der Ressource basieren, die sie konfigurieren.
Allgemeine Einstellungen und Netzwerkeinstellungen
- DISPLAY_NAME: Ein eindeutiger Name für Ihren Trainingscluster. Der String darf nur kleingeschriebene alphanumerische Zeichen enthalten, muss mit einem Buchstaben beginnen und darf maximal 10 Zeichen lang sein.
- PROJECT_ID: Ihre Google Cloud Projekt-ID
- REGION: Die Google Cloud Region, in der sich der Cluster und seine Ressourcen befinden.
- NETWORK: Das Virtual Private Cloud-Netzwerk, das für die Ressourcen des Clusters verwendet werden soll.
- ZONE: Die Google Cloud Zone für den Cluster und seine Ressourcen.
- SUBNETWORK: Das Subnetzwerk, das für die Ressourcen des Clusters verwendet werden soll.
Knotenpoolkonfiguration
Mit den folgenden Parametern werden die Knotenpools für Anmelde- und Worker-Knoten definiert.
Allgemeine Knotenpooleinstellungen
-
ID: Eine eindeutige Kennung für den Knotenpool im Cluster (z. B. „
login“, „a4“, „cpu“). -
PROVISIONING_MODEL: Das Bereitstellungsmodell für den Worker-Knoten (z. B.
ON_DEMAND,SPOT,RESERVATION,FLEX_START). -
MACHINE_TYPE: Der Maschinentyp für den Worker-Knoten (z. B.
a3-highgpu-8g,a3-megagpu-8g,a3-ultragpu-8g,a4-highgpu-8g). Eine vollständige Liste der unterstützten Maschinentypen finden Sie unter Compute-Ressourcen. -
MIN_NODE_COUNT: Die
MIN_NODE_COUNTmuss mit derMAX_NODE_COUNTübereinstimmen. -
MAX_NODE_COUNT: Für den Anmelde-Knotenpool muss
MAX_NODE_COUNTmitMIN_NODE_COUNTübereinstimmen. -
ENABLE_PUBLIC_IPS: Ein boolescher Wert (
trueoderfalse), der angibt, ob der Anmeldeknoten eine öffentliche IP-Adresse hat. -
BOOT_DISK_TYPE: Der Bootlaufwerktyp für den Anmeldeknoten (z. B.
pd-standard,pd-ssd). - BOOT_DISK_SIZE_GB: Die Größe des Bootlaufwerks in GB für den Anmeldeknoten.
- LABELS: Eine Reihe von Schlüssel/Wert-Paaren zum Labeln des Knotenpools.
-
NODE_IMAGE (entspricht
node_imagein einemnode_pools-Objekt): Das VM-Image, von dem die Knoten des Knotenpools gebootet werden, als vollständiger Image- oder Image-Familien-Ressourcenpfad (z. B.projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY). Wenn Sie es weglassen, verwendet der Knotenpool das aktuelle Standard-Image für seinen Maschinentyp, das sich im Laufe der Zeit ändert. Legen Sie diese Option fest, um den Knotenpool auf einem bestimmten Image zu belassen. Wenn Sie das Image eines Knotenpools ändern, werden die Knoten neu erstellt.
Zusätzliche Speichereinstellungen
-
FILESTORES (entspricht
filestoresin einemnode_pools-Objekt): Eine Liste der vorhandenen Filestore-Instanzen, die für den gemeinsamen Dateizugriff im Knotenpool bereitgestellt werden sollen. -
LUSTRES (entspricht
lustresin einemnode_pools-Objekt): Eine Liste der vorhandenen Lustre-Instanzen, die für den Hochleistungsdateizugriff im Knotenpool bereitgestellt werden sollen.
Worker-spezifische Einstellungen
-
ACCELERATOR_TYPE: Der entsprechende GPU-Beschleuniger, der an die Worker-Knoten angehängt werden soll.
Unterstützte Werte:
NVIDIA_H100_80GBNVIDIA_H100_MEGA_80GBNVIDIA_H200_141GBNVIDIA_B200
- ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an jeden Worker-Knoten angehängt werden sollen.
-
RESERVATION_AFFINITY_TYPE (entspricht
machine_spec.reservation_affinity.reservationAffinityType): Die Reservierungsaffinität für den Knotenpool. Dieser Parameter mussSPECIFIC_RESERVATIONsein. Das ist der einzige unterstützte Wert. WennSPECIFIC_RESERVATIONverwendet wird, müssen Sie die Reservierung inmachine_spec.reservation_affinity.valuesangeben. -
RESERVATION_NAME: Der Name der Reservierung, die für den Knotenpool verwendet werden soll. Dieser Wert wird im vollständigen Namen der Reservierungsressource verwendet, der in
machine_spec.reservation_affinity.valuesangegeben ist, z. B.projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME. Eine Reservierung ist erforderlich, wenn RESERVATION_AFFINITY_TYPESPECIFIC_RESERVATIONist.
Orchestrator- und Speicherkonfiguration
Diese Felder werden im orchestrator_spec.slurm_spec-Block der JSON-Datei definiert.
Wichtige Slurm- und Speichereinstellungen
-
HOME_DIRECTORY_STORAGE (entspricht
home_directory_storage): Der vollständige Ressourcenname der vorhandenen Filestore-Instanz, die als/home-Verzeichnis eingebunden werden soll. -
LOGIN_NODE_POOL_ID (entspricht
login_node_pool_id): Die ID des Knotenpools, der für Anmeldeknoten verwendet werden soll. -
partitions: Eine Liste von Partitionsobjekten, wobei für jedes Objekt einidund eine Liste vonnode_pool_idserforderlich sind. -
default_partition_id(optional): Dieidder Partition, die zum Ausführen von Slurm-Jobs verwendet wird, wenn keine Partition explizit angegeben wird (z. B. beim Ausführen vonsbatchohne das Flag--partition). Wenn sie nicht festgelegt ist, wird die erste Partition in der Partitionsliste zur Standardpartition. Wenn Sie die Reihenfolge der Liste ändern, ändert sich also auch die Standardpartition.
Erweiterte Slurm-Einstellungen
-
prolog_bash_scripts: Eine Liste von Strings, wobei jeder String den vollständigen Inhalt eines Bash-Skripts enthält, das vor Beginn eines Jobs ausgeführt werden soll. -
epilog_bash_scripts: Eine Liste von Strings, wobei jeder String den vollständigen Inhalt eines Bash-Skripts enthält, das nach Abschluss eines Jobs ausgeführt werden soll. -
config,partitions[].configundnode_sets: Slurm-Parameter, die nach Namen festgelegt werden. Weitere Informationen finden Sie unter Slurm-Konfigurationszuordnungen. -
schedulingundaccounting: Ersetzt. Diese beiden Objekte machen eine feste Gruppe von Prioritäts-, Preemption- und Abrechnungsparametern verfügbar, die jeweils nach Namen in der clusterbezogenenconfig-Map festgelegt werden können (priority_typeals"PriorityType",preempt_modeals"PreemptMode"usw.). Sie funktionieren weiterhin für Cluster, in denen sie verwendet werden. In neuen Clustern sollte jedochconfigverwendet werden, da es viel mehrslurm.conf-Parameter als diese Teilmenge unterstützt.
Slurm-Konfigurationspläne
Slurm-Parameter werden anhand des Namens in drei Maps festgelegt, eine für jeden slurm.conf-Datensatz:
-
config: Einstellungen auf Clusterebene, die als globaleKey=Value-Zeilen geschrieben werden. -
partitions[].config: Einstellungen für eine Partition, die als zusätzliche Paare in derPartitionName=-Zeile dieser Partition geschrieben werden. -
node_sets: Eine Liste von Objekten, die jeweils einenode_pool_id- und eineconfig-Karte enthalten. Die Einstellungen werden als zusätzliche Paare in dieNodeName=-Zeile für die Knoten dieses Knotenpools geschrieben. Maximal ein Eintrag pro Knotenpool. Der Pool muss ein Rechenpool des Clusters und nicht der Anmeldepool sein.
In allen drei sind die Schlüssel Slurm-Parameternamen, wie sie in der SchedMD-Dokumentation beschrieben werden. Dabei wird die Groß-/Kleinschreibung nicht berücksichtigt und Unterstriche werden ignoriert. DefMemPerCPU, defmempercpu und def_mem_per_cpu beziehen sich also auf denselben Parameter. Werte werden so geschrieben, wie slurm.conf sie schreibt, einschließlich kommagetrennter Listen wie "PreemptMode": "SUSPEND,GANG" und zusammengesetzter Werte wie "SchedulerParameters": "bf_window=1440,bf_resolution=600".
Jede Karte unterstützt eine Teilmenge der slurm.conf-Parameter, die für den zugehörigen Datensatz gültig sind, aber nicht alle. Wenn Sie einen Parameter benötigen, der nicht unterstützt wird, wenden Sie sich an den Kontakt für Ihre Gemini Enterprise Agent Platform-Trainingscluster.
Ein Parameter, der im von Ihnen festgelegten Bereich nicht unterstützt wird, oder ein Wert, der für diesen Parameter nicht zulässig ist, wird bei der Anfrage abgelehnt. Der Fehler gibt den Namen des Parameters an. Es wird nichts stillschweigend verworfen. Einige Parameter werden aus einem bestimmten Grund abgelehnt:
-
Der Dienst verwaltet die Systemdiagnose von Knoten und das erneute Einreihen von Jobs. Daher können
HealthCheckProgram,HealthCheckInterval,HealthCheckNodeStateundRequeueExitnicht festgelegt werden. -
PrologundEpilogwerden stattdessen überprolog_bash_scriptsundepilog_bash_scriptsfestgelegt. -
slurmdbd.conf-Parameter wieStorageHostundPurgeJobAftersind nicht konfigurierbar. Die Abrechnungsdatenbank wird vom Dienst verwaltet. -
Auf Partitionsebene wird
Defaultabgelehnt. Die Standardpartition ist eine clusterweite Auswahl, die mitdefault_partition_idfestgelegt wird.
Laufzeitkonfiguration
Diese Felder werden im runtime_spec-Block der JSON-Datei definiert.
-
service_account: Das Standarddienstkonto, das vom Cluster verwendet wird, wenn darauf Arbeitslasten ausgeführt werden. Wenn nicht angegeben, wird das Compute Engine-Standarddienstkonto verwendet. Dieses Feld kann nach dem Erstellen des Clusters nicht mehr aktualisiert werden.
Nächste Schritte
Verwenden Sie Ihren aktiven persistenten Trainingscluster, um Ihre Arbeitslasten für maschinelles Lernen auszuführen.
- Job in Ihrem Cluster ausführen: Senden Sie ein
CustomJob, um einen Trainingsjob in Ihrem persistenten Cluster auszuführen. - Training mit Gemini Enterprise Agent Platform-Pipelines orchestrieren: Für wiederholbare Workflows in Produktionsqualität können Sie den Prozess zum Einreichen von Jobs mit Agent Platform-Pipelines automatisieren.
- Cluster ansehen: Mit der Google Cloud Console oder der Agent Platform API können Sie die vorhandenen Cluster in Ihrem Projekt auflisten, ihren Status prüfen und Konfigurationsdetails ansehen.
- Cluster ändern: Aktualisieren Sie die Konfiguration eines vorhandenen Clusters, z. B. die Anzahl der Knoten oder die Slurm-Partitionen.
- Löschen Sie den Cluster, um keine Kosten mehr zu verursachen: Trainingscluster sind persistent und verursachen Kosten, solange sie aktiv sind.