Cluster erstellen

Wenn Sie an Gemini Enterprise Agent Platform-Trainingsclustern interessiert sind, wenden Sie sich an Ihren Vertriebsmitarbeiter, um Zugriff zu erhalten.

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.

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:

  • 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, 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_COUNT muss mit der MAX_NODE_COUNT übereinstimmen.
  • MAX_NODE_COUNT: Für den Login-Knotenpool muss der MAX_NODE_COUNT mit dem MIN_NODE_COUNT übereinstimmen.
  • ENABLE_PUBLIC_IPS: Ein boolescher Wert (true oder false), 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_image in einem node_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/IMAGE oder 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 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 filestores in einem node_pools-Objekt): Eine Liste bereits vorhandener Filestore-Instanzen, die im Knotenpool für den gemeinsamen Dateizugriff bereitgestellt werden sollen.
  • LUSTRES (entspricht lustres in einem node_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_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. Dies 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. Dies 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 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 eine id und eine Liste von node_pool_ids erforderlich ist.
  • default_partition_id (optional): Der id der Partition, die zum Ausführen von Slurm-Jobs verwendet wird, wenn keine Partition explizit angegeben ist (z. B. beim Ausführen von sbatch ohne 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[].config und node_sets: Slurm-Parameter, die nach Name festgelegt werden. Weitere Informationen finden Sie unter Slurm-Konfigurationszuordnungen.
  • scheduling und accounting: Ersetzt. Diese beiden Objekte stellen einen festen Satz von Prioritäts-, Preemption- und Ressourcenerfassungsparametern bereit, die jeweils namentlich in der clusterbezogenen config-Zuordnung festgelegt werden können (priority_type als "PriorityType", preempt_mode als "PreemptMode" usw.). Sie funktionieren weiterhin für Cluster, die sie verwenden. Neue Cluster sollten jedoch config verwenden, das viel mehr slurm.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 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, jeweils mit einer node_pool_id- und einer config-Zuordnung. Die Einstellungen werden als zusätzliche Paare in der Zeile NodeName= 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, 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 können nicht konfiguriert werden. Die Ressourcenerfassungsdatenbank 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 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.