Cluster erstellen

Wenn Sie sich für Trainingscluster für die Gemini Enterprise Agent Platform interessieren, wenden Sie sich an Ihren Vertriebsmitarbeiter, um Zugriff zu erhalten.

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.

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:

  • config in der Slurm-Spezifikation für clusterweite Einstellungen
  • config auf einer Partition
  • node_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_COUNT muss mit der MAX_NODE_COUNT übereinstimmen.
  • MAX_NODE_COUNT: Für den Anmelde-Knotenpool muss MAX_NODE_COUNT mit MIN_NODE_COUNT übereinstimmen.
  • ENABLE_PUBLIC_IPS: Ein boolescher Wert (true oder false), 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_image in einem node_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 filestores in einem node_pools-Objekt): Eine Liste der vorhandenen Filestore-Instanzen, die für den gemeinsamen Dateizugriff im Knotenpool bereitgestellt werden sollen.
  • LUSTRES (entspricht lustres in einem node_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_80GB
    • NVIDIA_H100_MEGA_80GB
    • NVIDIA_H200_141GB
    • NVIDIA_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 muss SPECIFIC_RESERVATION sein. Das ist der einzige unterstützte Wert. Wenn SPECIFIC_RESERVATION verwendet wird, müssen Sie die Reservierung in machine_spec.reservation_affinity.values angeben.
  • 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.values angegeben ist, z. B. projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME. Eine Reservierung ist erforderlich, wenn RESERVATION_AFFINITY_TYPE SPECIFIC_RESERVATION ist.

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 ein id und eine Liste von node_pool_ids erforderlich sind.
  • default_partition_id (optional): Die id der Partition, die zum Ausführen von Slurm-Jobs verwendet wird, wenn keine Partition explizit angegeben wird (z. B. beim Ausführen von sbatch ohne 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[].config und node_sets: Slurm-Parameter, die nach Namen festgelegt werden. Weitere Informationen finden Sie unter Slurm-Konfigurationszuordnungen.
  • scheduling und accounting: Ersetzt. Diese beiden Objekte machen eine feste Gruppe von Prioritäts-, Preemption- und Abrechnungsparametern verfügbar, die jeweils nach Namen in der clusterbezogenen config-Map festgelegt werden können (priority_type als "PriorityType", preempt_mode als "PreemptMode" usw.). Sie funktionieren weiterhin für Cluster, in denen sie verwendet werden. In neuen Clustern sollte jedoch config verwendet werden, da es viel mehr slurm.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 globale Key=Value-Zeilen geschrieben werden.
  • partitions[].config: Einstellungen für eine Partition, die als zusätzliche Paare in der PartitionName=-Zeile dieser Partition geschrieben werden.
  • node_sets: Eine Liste von Objekten, die jeweils eine node_pool_id- und eine config-Karte enthalten. Die Einstellungen werden als zusätzliche Paare in die NodeName=-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, HealthCheckNodeState und RequeueExit nicht festgelegt werden.
  • Prolog und Epilog werden stattdessen über prolog_bash_scripts und epilog_bash_scripts festgelegt.
  • slurmdbd.conf-Parameter wie StorageHost und PurgeJobAfter sind nicht konfigurierbar. Die Abrechnungsdatenbank wird vom Dienst verwaltet.
  • Auf Partitionsebene wird Default abgelehnt. Die Standardpartition ist eine clusterweite Auswahl, die mit default_partition_id festgelegt 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.