Auf dieser Seite wird die direkte, API-gestützte Methode zum Erstellen und Verwalten eines Trainingsclusters beschrieben. Sie erfahren, wie Sie die vollständige Konfiguration Ihres Clusters, einschließlich Login-Knoten, Hochleistungs-GPU-Partitionen wie A4 und Slurm-Orchestrator-Einstellungen, in einer JSON-Datei definieren.
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 die Organisationsrichtlinie öffentliche IP-Adressen auf Compute-Instanzen verbietet, stellen Sie den Trainingscluster mit dem Parameter enable_public_ips: false bereit und verwenden Sie Cloud NAT für ausgehenden Internet-Traffic.
Der erste Schritt bei der Bereitstellung eines Trainingsclusters besteht darin, die vollständige Konfiguration in einer JSON-Datei zu definieren. Diese Datei dient als Vorlage für Ihren Cluster und enthält alle Angaben, 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. Suchen Sie in dieser Liste nach dem Beispiel, das Ihren Anforderungen am besten entspricht, und verwenden Sie es als Ausgangspunkt.
GPU nur 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 Startskript: Zeigt, wie Sie beim Start benutzerdefinierte Befehle auf Knoten ausführen.
Nur-CPU-Cluster: Eine grundlegende Konfiguration, die nur CPU-Ressourcen verwendet.
Erweiterte Slurm-Konfiguration: Hier wird gezeigt, wie Sie
slurm.conf-Parameter auf Cluster-, Partitions- oder Knotenpool-Ebene festlegen und Prolog- und Epilog-Skripts ausführen.
Auf jedes Beispiel folgt eine detaillierte Beschreibung der wichtigsten Parameter, die in der jeweiligen Konfiguration verwendet werden.
GPU nur mit Filestore
Dies ist die Standardkonfiguration. Es stellt eine Filestore-Instanz bereit, die als /home-Verzeichnis für den Cluster dient und für die allgemeine Verwendung und das Speichern von Nutzerdaten geeignet ist.
Das folgende Beispiel zeigt den Inhalt von gpu-filestore.json. Mit dieser Spezifikation wird ein Cluster mit einer GPU-Partition erstellt. Sie können diese als Vorlage verwenden und Werte wie machineType oder nodeCount an Ihre Anforderungen 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, wenn Ihre Trainingsjobs einen hohen Durchsatz für den Zugriff auf große Datasets erfordern.
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 zusätzlich zu den allgemeinen Einstellungen die relevanten Felder zur Definition Ihres Knotenpools 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 Vorlage für Ihren Cluster und enthält alle Informationen, von Name und 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 Kontrolle über Slurm ermöglicht, indem slurm.conf-Parameter nach Name festgelegt und Prolog- und Epilog-Skripts für die automatisierte Jobeinrichtung 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 Konfigurationszuordnungen, eine für jeden slurm.conf-Eintrag:
configin der Slurm-Spezifikation für clusterweite Einstellungenconfigauf einer Partitionnode_sets-Eintrag für einen Knotenpool
Informationen zu den Regeln für Parameternamen, Werte und abgelehnte Parameter 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 Jobs in der Warteschlange 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 Multifaktor-Priorität, die Partitionsprioritäts-Preemption und SchedulerParameters fest, deren bf_continue-Begriff die zusammengesetzte Form zeigt: Ein einfacher Begriff aktiviert ein Flag und die Begriffe sind kommagetrennt. Die Partitionszuordnung begrenzt die Joblaufzeit und den Standardspeicher nur für die Partition cpu. Der Eintrag node_sets kennzeichnet die Knoten dieses Pools, damit Jobs sie mit --constraint auswählen können.
Nachdem Ihr Cluster in einer JSON-Datei definiert wurde, können Sie ihn mit den folgenden REST API-Befehlen bereitstellen und verwalten. In den Beispielen wird der Alias gcurl verwendet. Das ist ein praktisches, authentifiziertes Kürzel für die Interaktion mit den API-Endpunkten. Diese Befehle decken den gesamten Lebenszyklus ab, von der ersten Bereitstellung des Clusters über die Aktualisierung eines Clusters, das Abrufen des Status, das Auflisten aller Cluster bis hin zum 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 jetzt den folgenden gcurl-Befehl aus. Die JSON-Datei (in diesem Beispiel cpu-cluster.json) wird als Anfragetext verwendet. Die Umgebungsvariablen, die Sie gerade festgelegt haben, werden verwendet, um den API-Endpunkt und die Suchparameter 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 Sie bei der Bereitstellung des Clusters erhalten haben. 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 logische Gruppen unterteilt, 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 ist auf 10 Zeichen beschränkt.
- 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 innerhalb des Clusters (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 Login-Knotenpool muss der
MAX_NODE_COUNTmit demMIN_NODE_COUNTübereinstimmen. -
ENABLE_PUBLIC_IPS: Ein boolescher Wert (
trueoderfalse), der bestimmt, ob der Login-Knoten eine öffentliche IP-Adresse hat. -
BOOT_DISK_TYPE: Der Bootlaufwerkstyp für den Login-Knoten (z. B.
pd-standard,pd-ssd). - BOOT_DISK_SIZE_GB: Die Größe des Bootlaufwerks in GB für den Login-Knoten.
- 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 booten, als vollständiger Image- oder Image-Familien-Ressourcenpfad (z. B.projects/IMAGE_PROJECT/global/images/IMAGEoderprojects/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 sie 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 bereits vorhandener Filestore-Instanzen, die im Knotenpool für den gemeinsamen Dateizugriff bereitgestellt werden sollen. -
LUSTRES (entspricht
lustresin einemnode_pools-Objekt): Eine Liste vorhandener Lustre-Instanzen, die für den Hochleistungs-Dateizugriff 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 sind:
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. Dies 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. Dies 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 Block orchestrator_spec.slurm_spec 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 bereitgestellt werden soll. -
LOGIN_NODE_POOL_ID (entspricht
login_node_pool_id): Die ID des Knotenpools, der für Login-Knoten verwendet werden soll. -
partitions: Eine Liste von Partitionsobjekten, wobei für jedes Objekt eineidund eine Liste vonnode_pool_idserforderlich ist. -
default_partition_id(optional): Deridder Partition, die zum Ausführen von Slurm-Jobs verwendet wird, wenn keine Partition explizit angegeben ist (z. B. beim Ausführen vonsbatchohne das Flag--partition). Wenn Sie nichts festlegen, wird die erste Partition in der Partitionsliste zur Standardpartition. Wenn Sie die Liste neu anordnen, ändert sich also 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 Name festgelegt werden. Weitere Informationen finden Sie unter Slurm-Konfigurationszuordnungen. -
schedulingundaccounting: Ersetzt. Diese beiden Objekte stellen einen festen Satz von Prioritäts-, Preemption- und Ressourcenerfassungsparametern bereit, die jeweils namentlich in der clusterbezogenenconfig-Zuordnung festgelegt werden können (priority_typeals"PriorityType",preempt_modeals"PreemptMode"usw.). Sie funktionieren weiterhin für Cluster, die sie verwenden. Neue Cluster sollten jedochconfigverwenden, das viel mehrslurm.conf-Parameter als diese Teilmenge unterstützt.
Slurm-Konfigurationszuordnungen
Slurm-Parameter werden nach Name in drei Maps festgelegt, eine für jeden slurm.conf-Eintrag:
-
config: Clusterbezogene Einstellungen, 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, jeweils mit einernode_pool_id- und einerconfig-Zuordnung. Die Einstellungen werden als zusätzliche Paare in der ZeileNodeName=für die Knoten dieses Knotenpools geschrieben. Höchstens ein Eintrag pro Knotenpool. Der Pool muss ein Compute-Pool des Clusters sein, nicht der Anmeldepool.
In allen drei Fällen sind die Schlüssel Slurm-Parameternamen, wie sie in der SchedMD-Dokumentation beschrieben sind, ohne Berücksichtigung der Groß-/Kleinschreibung und ohne Unterstriche. DefMemPerCPU, defmempercpu und def_mem_per_cpu bedeuten also alle denselben Parameter. Werte werden so geschrieben, wie sie von slurm.conf geschrieben werden, einschließlich durch Kommas getrennter 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 ihren Eintrag gültig sind, aber nicht alle. Wenn Sie einen Parameter benötigen, der nicht unterstützt wird, wenden Sie sich an Ihren Ansprechpartner für 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 nennt den Parameter. 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 in die Warteschlange. Daher können
HealthCheckProgram,HealthCheckInterval,HealthCheckNodeStateundRequeueExitnicht festgelegt werden. -
PrologundEpilogwerden stattdessen überprolog_bash_scriptsundepilog_bash_scriptsfestgelegt. -
slurmdbd.conf-Parameter wieStorageHostundPurgeJobAfterkönnen nicht konfiguriert werden. Die Ressourcenerfassungsdatenbank wird vom Dienst verwaltet. -
Auf Partitionsebene wird
Defaultabgelehnt. Die Standardpartition ist eine clusterweite Auswahl, die mitdefault_partition_idfestgelegt wird.
Laufzeitkonfiguration
Diese Felder werden im Block runtime_spec der JSON-Datei definiert.
-
service_account: Das Standarddienstkonto, das vom Cluster verwendet wird, wenn Arbeitslasten darauf 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 im Cluster ausführen: Senden Sie einen
CustomJob, um einen Trainingsjob im nichtflüchtigen Cluster auszuführen. - Training mit Gemini Enterprise Agent Platform-Pipelines orchestrieren: Für wiederholbare, produktionsreife Workflows können Sie den Prozess der Jobeinreichung mit Agent Platform-Pipelines automatisieren.
- Cluster ansehen: Listen Sie die vorhandenen Cluster in Ihrem Projekt auf, prüfen Sie ihren Status und rufen Sie Konfigurationsdetails über die Google Cloud Console oder die Agent Platform API auf.
- Cluster ändern: Aktualisieren Sie die Konfiguration eines vorhandenen Clusters, z. B. die Knotenanzahl oder die Slurm-Partitionen.
- Löschen Sie den Cluster, um Kosten zu vermeiden: Trainingscluster sind nichtflüchtig und verursachen Kosten, solange sie aktiv sind.