Cluster erstellen

Wenn Sie sich für Vertex AI-Trainingscluster 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 der 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 GET-, LIST-, UPDATE- und DELETE-Vorgängen 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 Internetzugriff.

Der erste Schritt beim Bereitstellen eines Trainingsclusters besteht darin, seine vollständige Konfiguration in einer JSON-Datei zu definieren. Diese Datei dient als Blaupause für Ihren Cluster und gibt alles an, von seinem Namen und seinen Netzwerkeinstellungen bis hin zur Hardware für seine 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. Sehen Sie sich diese Liste an, um das Beispiel zu finden, das Ihren Anforderungen am ehesten entspricht, und verwenden Sie es als Ausgangspunkt.

Auf jedes Beispiel folgt eine detaillierte Beschreibung der wichtigsten Parameter, die in der jeweiligen Konfiguration verwendet werden.

Nur 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. Durch diese Spezifikation wird ein Cluster mit einer GPU-Partition erstellt. Sie können dies 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
      }
    },
    {
      "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"
          ]
        }
      },
      "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
      }
    }
  ],
  "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/asia-sREGION/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": {
          "reservation_affinity_type": 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"
    }
  }
}

CPU mit erweiterter Slurm-Konfiguration

In diesem Beispiel wird gezeigt, wie Sie den Slurm-Orchestrator mit erweiterten Parametern anpassen. Verwenden Sie diese Vorlage, wenn Sie eine detaillierte Kontrolle über das Verhalten bei der Jobplanung benötigen, z. B. zum Festlegen von Prioritätsgewichten für mehrere Faktoren, zum Konfigurieren von Job-Preemption und zum Ausführen von Prolog- und Epilog-Skripts für die automatisierte Job-Einrichtung und -Bereinigung.

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",
      "accounting": {
        "accounting_storage_enforce": "ACCOUNTING_STORAGE_ENFORCE"
      },
      "scheduling": {
        "priority_type": "PRIORITY_TYPE",
        "priority_weight_age": PRIORITY_WEIGHT_AGE,
        "priority_weight_assoc": PRIORITY_WEIGHT_ASSOC,
        "priority_weight_fairshare": PRIORITY_WEIGHT_FAIRSHARE,
        "priority_weight_job_size": PRIORITY_WEIGHT_JOB_SIZE,
        "priority_weight_partition": PRIORITY_WEIGHT_PARTITION,
        "priority_weight_qos": PRIORITY_WEIGHT_QOS,
        "priority_weight_tres": "PRIORITY_WEIGHT_TRES",
        "preempt_type": "PREEMPT_TYPE",
        "preempt_mode": "PREEMPT_MODE",
        "preempt_exempt_time": "PREEMPT_EXEMPT_TIME"
      },
      "prolog_bash_scripts": [
        "#!/bin/bash\necho 'First prolog script running'",
        "#!/bin/bash\necho 'Second prolog script running'"
      ],
      "epilog_bash_scripts": [
        "#!/bin/bash\necho 'Epilog script running'"
      ]
      "partitions": [
        {
          "id": "cpu",
          "node_pool_ids": [
            "cpu"
          ]
        }
      ],
      "login_node_pool_id": "login"
    }
  }
}

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 Verknüpfung für die Interaktion mit den API-Endpunkten darstellt. Diese Befehle decken den gesamten Lebenszyklus ab, von der ersten Bereitstellung des 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 Cluster für das Modelltraining 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 einfacher zu verwalten.

  • PROJECT_ID: Die 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, zum Erstellen des API-Endpunkt und der Abfrageparameter verwendet.

  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 logische Gruppen unterteilt, je nachdem, welche Ressource 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

Die folgenden Parameter werden verwendet, um die Knotenpools für Anmelde- und Worker-Knoten zu definieren.

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. Unterstützte Werte sind a3-megagpu-8g, a3-ultragpu-8g, a4-highgpu-8g.
  • MIN_NODE_COUNT: Die MIN_NODE_COUNT muss mit der MAX_NODE_COUNT übereinstimmen.
  • MAX_NODE_COUNT: Für den Anmeldeknotenpool muss die MAX_NODE_COUNT mit der 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 Anmeldenode (z. B. pd-standard, pd-ssd).
  • BOOT_DISK_SIZE_GB: Die Größe des Bootlaufwerks in GB für den Anmeldeknoten.

Workerspezifische Einstellungen

  • ACCELERATOR_TYPE: Der entsprechende GPU-Beschleuniger, der an die Worker-Knoten angehängt werden soll. Unterstützte Werte:
    • 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: Die Reservierungsaffinität für den Knotenpool (z. B. SPECIFIC_RESERVATION).
  • RESERVATION_NAME: Der Name der Reservierung, die für den Knotenpool verwendet werden soll.

Orchestrator- und Speicherkonfiguration

Diese Felder werden im orchestrator_spec.slurm_spec-Block der JSON-Datei definiert.

Wichtige Slurm- und Speichereinstellungen

  • FILESTORE (entspricht home_directory_storage): Der vollständige Ressourcenname der Filestore-Instanz, die als /home-Verzeichnis bereitgestellt werden soll.
  • LUSTRE (entspricht lustres in einem node_pools-Objekt): Eine Liste der vorhandenen verwalteten Lustre-Instanzen, die für den leistungsstarken Dateizugriff auf den Clusterknoten bereitgestellt werden sollen.
  • 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.

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.
  • ACCOUNTING_STORAGE_ENFORCE: Erzwingt Abrechnungslimits für die Speichernutzung.
  • PRIORITY_TYPE: Der zu verwendende Algorithmus für die Priorität der Planung (z. B. priority/multifactor).
  • priority_weight_*: Eine Reihe von Ganzzahlwerten, mit denen verschiedenen Faktoren bei der Berechnung der Priorität für die Planung ein Gewicht zugewiesen wird (z. B. priority_weight_age, priority_weight_fairshare).
  • PREEMPT_TYPE: Das zu verwendende Preemption-Plug-in (z. B. preempt/partition_prio).
  • PREEMPT_MODE: Der Modus für das Preemption-Plug-in, z. B. REQUEUE.
  • PREEMPT_EXEMPT_TIME: Die Zeit nach dem Start eines Jobs, in der er nicht unterbrochen werden kann.

Nächste Schritte

Verwenden Sie Ihren aktiven persistenten Trainingscluster, um Ihre Arbeitslasten für maschinelles Lernen auszuführen.