Selbstverwalteten Slurm-Cluster für KI-Arbeitslasten erstellen

In diesem Dokument wird beschrieben, wie Sie einen selbstverwalteten Slurm-Cluster konfigurieren und bereitstellen, der die Maschinentypen A4X Max, A4X, A4, A3 Ultra, A3 Mega oder A3 High verwendet. Weitere Informationen zu diesen beschleunigungsoptimierten Maschinentypen finden Sie unter GPU-Beschleuniger.

In diesem Dokument wird beschrieben, wie Sie mit dem Cluster Toolkit einen Slurm-Cluster erstellen. Cluster Toolkit ist ein Open-Source-Tool von Google, das die Konfiguration und Bereitstellung eines Clusters mithilfe von Blueprints vereinfacht. Sie haben die volle Kontrolle über Ihren Cluster, sind aber auch für die Verwaltung verantwortlich. Wenn Sie den Aufwand für die Verwaltung eines Clusters vermeiden und sich auf die Ausführung Ihrer Arbeitslast konzentrieren möchten, erstellen Sie einen vollständig verwalteten Cluster mit Cluster Director.

Beschränkungen

Je nach dem Maschinentyp, der von den Compute Engine-Instanzen in Ihrem Cluster verwendet wird, gelten die folgenden Einschränkungen:

A4X Max

A4X

A4

  • Sie erhalten weder Rabatte für kontinuierliche Nutzung noch flexible Rabatte für zugesicherte Nutzung für Instanzen, die einen A4-Maschinentyp verwenden.
  • Sie können einen A4-Maschinentyp nur in bestimmten Regionen und Zonen verwenden.
  • Sie können keinen nichtflüchtigen Speicher (regional oder zonal) verwenden. Sie können nur Google Cloud Hyperdisk verwenden.
  • Der A4-Maschinentyp ist nur auf der Emerald Rapids-CPU-Plattform verfügbar.
  • Sie können den Maschinentyp einer Instanz nicht in einen A4-Maschinentyp ändern oder von einem A4-Maschinentyp ändern. Sie müssen eine neue Instanz mit diesem Maschinentyp erstellen.
  • A4-Maschinentypen unterstützen keine einzelnen Mandanten.
  • Sie können Windows-Betriebssysteme nicht auf einem A4-Maschinentyp ausführen.
  • Wenn Sie bei A4-Instanzen ethtool -S zum Überwachen des GPU-Netzwerks verwenden, werden die Zähler für physische Ports, die auf _phy enden, nicht aktualisiert. Dies ist das erwartete Verhalten für Instanzen, die die MRDMA-VF-Architektur (Virtual Function) verwenden. Weitere Informationen finden Sie unter MRDMA-Funktionen und Netzwerkmonitoring-Tools.
  • Sie können Hyperdisk ML-Laufwerke, die vor dem 4. Februar 2026 erstellt wurden, nicht an A4-Maschinentypen anhängen.

A3 Ultra

  • Sie erhalten weder Rabatte für kontinuierliche Nutzung noch flexible Rabatte für zugesicherte Nutzung für Instanzen, die einen A3-Ultra-Maschinentyp verwenden.
  • Sie können einen A3-Ultra-Maschinentyp nur in bestimmten Regionen und Zonen verwenden.
  • Sie können keinen nichtflüchtigen Speicher (regional oder zonal) verwenden. Sie können nur Google Cloud Hyperdisk verwenden.
  • Der A3 Ultra-Maschinentyp ist nur auf der Emerald Rapids-CPU-Plattform verfügbar.
  • Änderungen des Maschinentyps werden für den A3-Ultra-Maschinentyp nicht unterstützt. Wenn Sie zu diesem Maschinentyp wechseln oder von diesem Maschinentyp zu einem anderen wechseln möchten, müssen Sie eine neue Instanz erstellen.
  • Sie können Windows-Betriebssysteme nicht auf einem A3-Ultra-Maschinentyp ausführen.
  • A3 Ultra-Maschinentypen unterstützen keine einzelnen Mandanten.
  • Wenn Sie bei A3 Ultra-Instanzen ethtool -S zum Überwachen des GPU-Netzwerks verwenden, werden die Zähler für physische Ports, die auf _phy enden, nicht aktualisiert. Dies ist das erwartete Verhalten für Instanzen, die die MRDMA-VF-Architektur (Virtual Function) verwenden. Weitere Informationen finden Sie unter MRDMA-Funktionen und Netzwerkmonitoring-Tools.

A3 Mega

A3 High

Hinweis

Bevor Sie einen Slurm-Cluster erstellen, müssen Sie die folgenden Schritte ausführen, sofern Sie dies noch nicht getan haben:

  1. Nutzungsoption auswählen: Die gewählte Nutzungsoption bestimmt, wie Sie GPU-Ressourcen erhalten und verwenden. Weitere Informationen finden Sie unter Nutzungsoption auswählen.
  2. Kapazität abrufen: Der Vorgang zum Abrufen von Kapazität unterscheidet sich für jede Verbrauchsoption. Informationen zum Erhalten von Kapazität für die von Ihnen gewählte Verbrauchsoption finden Sie unter Kapazität – Übersicht.
  3. Prüfen Sie, ob Sie genügend Filestore-Kapazitätskontingent haben: Sie benötigen genügend Filestore-Kontingent in Ihrer Zielregion, bevor Sie die Bereitstellung vornehmen. Die erforderliche Mindestkapazität hängt von den Maschinentypen in Ihrem Cluster ab:
    • A4X Max, A4X, A4, A3 Ultra und A3 Mega: Erfordert mindestens 10 TiB (10.240 GiB) HIGH_SCALE_SSD-Kapazität (zonal).
    • A3 High: Erfordert mindestens 2,5 TiB (2.560 GiB) an BASIC_SSD-Kapazität (Standard).

    So prüfen Sie das Kontingent oder fordern eine Kontingenterhöhung an:

  4. Cluster Toolkit installieren: Zum Bereitstellen von Slurm-Clustern müssen Sie das Cluster Toolkit in der Version v1.62.0 oder höher verwenden.

    Informationen zum Installieren des Cluster Toolkits finden Sie unter Cluster Toolkit einrichten.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen eines Slurm-Clusters benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Storage-Bucket einrichten

Cluster-Blueprints verwenden Terraform-Module, um die Cloud-Infrastruktur bereitzustellen. Als Best Practice für die Arbeit mit Terraform empfiehlt es sich, den Status remote in einer versionsfähigen Datei zu speichern. Auf Google Cloudkönnen Sie einen Cloud Storage-Bucket mit aktivierter Versionsverwaltung erstellen.

Führen Sie die folgenden Befehle aus, um diesen Bucket zu erstellen und die Versionsverwaltung über die Befehlszeile zu aktivieren:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --default-storage-class=STANDARD --location=BUCKET_REGION \
    --uniform-bucket-level-access
gcloud storage buckets update gs://BUCKET_NAME --versioning

Ersetzen Sie Folgendes:

Cluster Toolkit installieren

Wenn Sie Slurm mit Google Cloudverwenden möchten, müssen Sie das Cluster Toolkit installieren. Für Linux und macOS empfehlen wir, das vordefinierte Bundle zu installieren.

Wechseln Sie nach der Installation des Cluster Toolkits in das Verzeichnis, das die Binärdatei gcluster enthält:

  • Wenn Sie das vordefinierte Bundle installiert haben, wechseln Sie in das Verzeichnis gcluster-bundle:

    cd gcluster-bundle
  • Wenn Sie die Binärdatei aus der Quelle erstellt haben, wechseln Sie in das Verzeichnis cluster-toolkit:

    cd cluster-toolkit

    Für diese Clusterbereitstellung ist Cluster Toolkit v1.62.0 oder höher erforderlich. Führen Sie den folgenden Befehl aus, um die aktuelle Version zu prüfen:

    ./gcluster --version

Bereitstellungsdatei erstellen

Erstellen Sie eine Bereitstellungsdatei, mit der Sie den Cloud Storage-Bucket angeben, Namen für Ihr Netzwerk und Subnetzwerk festlegen und Bereitstellungsvariablen wie Projekt-ID, Region und Zone festlegen können.

Folgen Sie der Anleitung für den gewünschten Maschinentyp und die gewünschte Verbrauchsoption, um eine Bereitstellungsdatei zu erstellen.

A4X Max

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a4xmax-bm-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_max_cluster_size: NUMBER_OF_INSTANCES
  a4x_max_reservation_name: RESERVATION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Regions- und Zoneninformationen von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: die Anzahl der A4X Max-Bare-Metal-Instanzen in Ihrem Cluster. Sie können eine beliebige Anzahl von Instanzen angeben. A4X Max-Instanzen sind jedoch physisch über ein Multi-Knoten-NVLink-System in Gruppen von 18 Instanzen (72 GPUs) miteinander verbunden, um eine NVLink-Domain zu bilden.

    Für eine optimale Netzwerkleistung empfehlen wir, einen Wert anzugeben, der ein Vielfaches von 18 Instanzen ist (z. B. 18, 36 oder 54). Wenn Sie einen A4X Max-Cluster erstellen, wird durch das A4X Max-Blueprint automatisch eine Richtlinie für kompakte Platzierung mit einer GPU-Topologie von 1x72 für jede Gruppe von 18 Instanzen erstellt und angewendet.

  • RESERVATION_NAME: der Name Ihrer Reservierung.

A4X

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a4xhigh-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_cluster_size: NUMBER_OF_INSTANCES
  a4x_reservation_name: RESERVATION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Regions- und Zoneninformationen von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: Die Anzahl der A4X-Instanzen in Ihrem Cluster. Sie können eine beliebige Anzahl von Instanzen angeben. A4X-Instanzen sind jedoch physisch über ein NVLink-System mit mehreren Knoten in Gruppen von 18 Instanzen (72 GPUs) miteinander verbunden, um eine NVLink-Domain zu bilden.

    Für eine optimale Netzwerkleistung empfehlen wir, einen Wert anzugeben, der ein Vielfaches von 18 Instanzen ist (z. B. 18, 36 oder 54). Wenn Sie einen A4X-Cluster erstellen, erstellt und wendet der A4X-Blueprint automatisch eine Richtlinie für kompakte Platzierung mit einer GPU-Topologie von 1x72 für jede Gruppe von 18 Instanzen an. Weitere Informationen zur A4X-Topologie finden Sie unter A4X-Grundlagen.

  • RESERVATION_NAME: der Name Ihrer Reservierung.

A4

Die Parameter, die Sie Ihrer Bereitstellungsdatei hinzufügen müssen, hängen von der Verbrauchsoption ab, die Sie für Ihre Bereitstellung verwenden. Wählen Sie den Tab aus, der dem Bereitstellungsmodell Ihrer Verbrauchsoption entspricht.

Reservierungsgebunden

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a4high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_reservation_name: RESERVATION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Informationen zu Region und Zone von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.
  • RESERVATION_NAME: der Name Ihrer Reservierung.

Flex-Start

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a4high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_dws_flex_enabled: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

Bei dieser Bereitstellung werden statische Rechenknoten bereitgestellt. Das bedeutet, dass der Cluster immer eine feste Anzahl von Knoten hat. Wenn Sie stattdessen das Autoscaling für Ihren Cluster aktivieren möchten, verwenden Sie die Datei examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml und bearbeiten Sie die Werte von node_count_static und node_count_dynamic_max entsprechend:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a4h_cluster_size)

Spot

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a4high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_INSTANCES
  a4h_enable_spot_vm: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

A3 Ultra

Die Parameter, die Sie Ihrer Bereitstellungsdatei hinzufügen müssen, hängen von der Verbrauchsoption ab, die Sie für Ihre Bereitstellung verwenden. Wählen Sie den Tab aus, der dem Bereitstellungsmodell Ihrer Verbrauchsoption entspricht.

Reservierungsgebunden

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a3ultra-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_reservation_name: RESERVATION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Informationen zu Region und Zone von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: Die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.
  • RESERVATION_NAME: Der Name Ihrer Reservierung.

Flex-Start

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a3ultra-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_dws_flex_enabled: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: Die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

Bei dieser Bereitstellung werden statische Rechenknoten bereitgestellt. Das bedeutet, dass der Cluster immer eine feste Anzahl von Knoten hat. Wenn Sie stattdessen das Autoscaling für Ihren Cluster aktivieren möchten, verwenden Sie die Datei examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml und bearbeiten Sie die Werte von node_count_static und node_count_dynamic_max so, dass sie den folgenden Werten entsprechen:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3u_cluster_size)

Spot

Erstellen Sie mit einem Texteditor eine YAML-Datei mit dem Namen a3ultra-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_INSTANCES
  a3u_enable_spot_vm: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: Die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

A3 Mega

Die Parameter, die Sie Ihrer Bereitstellungsdatei hinzufügen müssen, hängen von der Nutzungsoption ab, die Sie für Ihre Bereitstellung verwenden. Wählen Sie den Tab aus, der dem Bereitstellungsmodell Ihrer Verbrauchsoption entspricht.

Reservierungsgebunden

Erstellen Sie eine YAML-Datei mit dem Namen a3mega-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um Ihre Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_reservation_name: RESERVATION_NAME
  a3mega_partition_name: PARTITION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Informationen zu Region und Zone von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: Die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.
  • RESERVATION_NAME: Der Name Ihrer Reservierung.
  • PARTITION_NAME: ein Name für die Slurm-Partition.

Flex-Start

Erstellen Sie eine YAML-Datei mit dem Namen a3mega-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um Ihre Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_dws_flex_enabled: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

Bei dieser Bereitstellung werden statische Rechenknoten bereitgestellt. Das bedeutet, dass der Cluster immer eine feste Anzahl von Knoten hat. Wenn Sie stattdessen das Autoscaling für Ihren Cluster aktivieren möchten, verwenden Sie die Datei examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml und bearbeiten Sie die Werte von node_count_static und node_count_dynamic_max entsprechend:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3mega_cluster_size)

Spot

Erstellen Sie eine YAML-Datei mit dem Namen a3mega-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um Ihre Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_INSTANCES
  a3mega_enable_spot_vm: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: Die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

A3 High

Die Parameter, die Sie Ihrer Bereitstellungsdatei hinzufügen müssen, hängen von der Verbrauchsoption ab, die Sie für Ihre Bereitstellung verwenden. Wählen Sie den Tab aus, der dem Bereitstellungsmodell Ihrer Verbrauchsoption entspricht.

Reservierungsgebunden

Erstellen Sie eine YAML-Datei mit dem Namen a3high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_reservation_name: RESERVATION_NAME
  a3_partition_name: PARTITION_NAME

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD und KEYSERVER_UBUNTU_KEY: die technischen Anmeldedaten für A3 High-optimierte Bilder. Diese Werte werden Ihnen von Ihrem Google Cloud-Account-Management-Team zur Verfügung gestellt. Weitere Informationen finden Sie unter Anmeldedaten für GPUDirect-TCPX abrufen.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der sich die reservierten Maschinen befinden.
  • ZONE: die Zone, in der Sie den Cluster bereitstellen möchten. Wenn Sie eine reservierungsbasierte Verbrauchsoption verwenden, wurden die Informationen zu Region und Zone von Ihrem Account-Management-Team bereitgestellt, als die Kapazität bereitgestellt wurde.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.
  • RESERVATION_NAME: Der Name Ihrer Reservierung.
  • PARTITION_NAME: ein Name für die Slurm-Partition.

Flex-Start

Erstellen Sie eine YAML-Datei mit dem Namen a3high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_dws_flex_enabled: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD und KEYSERVER_UBUNTU_KEY: die technischen Anmeldedaten für A3 High-optimierte Bilder. Diese Werte werden Ihnen von Ihrem Google Cloud-Account-Management-Team zur Verfügung gestellt. Weitere Informationen finden Sie unter Anmeldedaten für GPUDirect-TCPX abrufen.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

Bei dieser Bereitstellung werden statische Rechenknoten bereitgestellt. Das bedeutet, dass der Cluster immer eine feste Anzahl von Knoten hat. Wenn Sie stattdessen das Autoscaling für Ihren Cluster aktivieren möchten, verwenden Sie die Datei examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml und bearbeiten Sie die Werte von node_count_static und node_count_dynamic_max entsprechend:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3_static_cluster_size)

Spot

Erstellen Sie eine YAML-Datei mit dem Namen a3high-slurm-deployment.yaml und fügen Sie den folgenden Inhalt hinzu, um die Bereitstellungsdatei zu erstellen.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_INSTANCES
  a3_enable_spot_vm: true

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets, den Sie im vorherigen Abschnitt erstellt haben.
  • DEPLOYMENT_NAME: Ein Name für Ihre Bereitstellung. Wenn Sie mehrere Cluster erstellen, müssen Sie für jeden einen eindeutigen Namen auswählen.
  • PROJECT_ID: Ihre Projekt-ID.
  • TCPX_KERNEL_LOGIN, TCPX_KERNEL_PASSWORD und KEYSERVER_UBUNTU_KEY: die technischen Anmeldedaten für A3 High-optimierte Bilder. Diese Werte erhalten Sie von Ihrem Google Cloud-Account-Management-Team. Weitere Informationen finden Sie unter Anmeldedaten für GPUDirect-TCPX abrufen.
  • SYSTEM_NETWORK_NAME: der Name des VPC-Netzwerk, das für das Systemnetzwerk verwendet werden soll.
  • SYSTEM_SUBNET_NAME: Der Name des Subnetzwerks, das für das Systemnetzwerk verwendet werden soll.
  • CLUSTER_NAME: ein Name für Ihren Slurm-Cluster.
  • REGION: die Region, in der Sie Ihren Cluster bereitstellen möchten.
  • ZONE: die Zone, in der Sie Ihren Cluster bereitstellen möchten.
  • NUMBER_OF_INSTANCES: die Anzahl der Compute Engine-Instanzen, die Sie für den Cluster benötigen.

Slurm-Cluster bereitstellen

Das Cluster Toolkit stellt den Cluster auf Grundlage der Bereitstellungsdatei, die Sie im vorherigen Schritt erstellt haben, und des Standard-Cluster-Blueprints bereit. Weitere Informationen zu benutzerdefinierten Images oder zum Bereitstellen von Slurm mit einem benutzerdefinierten Betriebssystem-Image finden Sie unter Benutzerdefinierte Slurm-Images.

Wählen Sie zum Bereitstellen des Clusters eine der folgenden Optionen aus, um den Befehl gcluster deploy für Ihren Maschinentyp im Cluster Toolkit-Verzeichnis auszuführen. Dieser Schritt dauert etwa 20–30 Minuten.

A4X Max

./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --auto-approve

A4X

Standardmäßig werden mit dem Cluster-Blueprint Compute-Instanzen bereitgestellt, die vorgefertigte Advanced Compute-Images verwenden. Diese Images sind mit speziellen Treibern und Software vorkonfiguriert, um Ihre Arbeitslasten auszuführen, einschließlich NVIDIA-Treibern, CUDA, Netzwerkstrukturen und Slurm-Agents. Dadurch entfällt die Notwendigkeit, Images während der Bereitstellung manuell zu erstellen. Weitere Informationen zu den vordefinierten Softwarepaketen und Konfigurationstools, die Sie bereitstellen, finden Sie unter Übersicht über Advanced Compute Images.

./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --auto-approve

A4

Standardmäßig werden mit dem Cluster-Blueprint Compute-Instanzen bereitgestellt, die vordefinierte Advanced Compute Images verwenden. Diese Images sind mit speziellen Treibern und Software vorkonfiguriert, um Ihre Arbeitslasten auszuführen, einschließlich NVIDIA-Treibern, CUDA, Netzwerkstrukturen und Slurm-Agents. Dadurch entfällt die Notwendigkeit, Images während der Bereitstellung manuell zu erstellen. Weitere Informationen zu den vorgefertigten Softwarepaketen und Konfigurationstools, die Sie bereitstellen, finden Sie unter Übersicht über Advanced Compute Images.

./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

A3 Ultra

Standardmäßig werden mit dem Cluster-Blueprint Compute-Instanzen bereitgestellt, die vordefinierte Advanced Compute Images verwenden. Diese Images sind mit speziellen Treibern und Software vorkonfiguriert, um Ihre Arbeitslasten auszuführen, einschließlich NVIDIA-Treibern, CUDA, Netzwerkstrukturen und Slurm-Agents. Dadurch entfällt die Notwendigkeit, Images während der Bereitstellung manuell zu erstellen. Weitere Informationen zu den vorgefertigten Softwarepaketen und Konfigurationstools, die Sie bereitstellen, finden Sie unter Übersicht über Advanced Compute Images.

./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --auto-approve

A3 Mega

./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --auto-approve

A3 High

./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --auto-approve

Verbindung zum Slurm-Cluster herstellen

Für den Zugriff auf Ihren Cluster müssen Sie sich beim Slurm-Anmeldeknoten anmelden. Wenn beim Versuch, eine Verbindung zu Ihrem Knoten herzustellen, Fehler auftreten, lesen Sie den Abschnitt SSH-Fehler beheben.

Wählen Sie eine der folgenden Optionen aus, um eine Verbindung zum Anmeldeknoten in Ihrem Cluster herzustellen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.

    Zur Seite „VM-Instanzen"

  2. Suchen Sie den Anmeldeknoten mit dem Namen DEPLOYMENT_NAME-login-001.

  3. Klicken Sie in der Zeile des Knotens in der Spalte Verbinden auf SSH.

gcloud

Führen Sie die folgenden Schritte aus, um eine Verbindung zum Anmeldeknoten in Ihrem Cluster herzustellen:

  1. Verwenden Sie den folgenden gcloud compute instances list-Befehl, um den Anmeldeknoten zu identifizieren:

    gcloud compute instances list \
        --filter="name ~ login" \
        --format "value(name)" \
        --zones=ZONE
    

    Wenn in der Ausgabe mehrere Slurm-Cluster aufgeführt sind, können Sie Ihren Anmeldeknoten anhand des DEPLOYMENT_NAME identifizieren, den Sie in den vorherigen Schritten angegeben haben.

  2. Verwenden Sie zum Herstellen einer Verbindung zum Anmeldeknoten den Befehl gcloud compute ssh mit dem Flag --tunnel-through-iap:

    gcloud compute ssh LOGIN_NODE \
        --tunnel-through-iap \
        --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • ZONE: die Zone, in der sich der Knoten befindet.

    • LOGIN_NODE: der Name des Anmeldeknotens.

Netzwerkleistung im Slurm-Cluster testen

Wir empfehlen, die Funktionalität der bereitgestellten Cluster zu prüfen. Verwenden Sie dazu NCCL-Tests. Das sind NVIDIA Collective Communications Library (NCCL)-Tests, die für die Google-Umgebung optimiert sind.

Slurm-Cluster neu bereitstellen

Wenn Sie die Anzahl der Rechenknoten erhöhen oder neue Partitionen zu Ihrem Cluster hinzufügen müssen, müssen Sie möglicherweise die Konfigurationen für Ihren Slurm-Cluster aktualisieren, indem Sie ihn noch einmal bereitstellen. Wenn Sie Ihren Blueprint geändert haben, um benutzerdefinierte Images zu erstellen, können Sie den Prozess der erneuten Bereitstellung beschleunigen, indem Sie ein vorhandenes Image aus einer vorherigen Bereitstellung verwenden. Wenn Sie einen Cluster, der benutzerdefinierte Images verwendet, noch einmal bereitstellen, können Sie das Flag --only angeben, um das Erstellen neuer Images zu vermeiden.

So stellen Sie die Clusterinfrastruktur (cluster-env,cluster) neu bereit, ohne Module zum Erstellen von Images auszuführen:

  1. Mit dem Cluster verbinden

  2. Wählen Sie je nach Maschinentyp, den Ihr Cluster verwendet, eine der folgenden Optionen aus, um Ihren Cluster und seine IT-Infrastruktur noch einmal bereitzustellen:

    A4X Max

    ./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4X

    ./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4

    ./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Ultra

    ./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Mega

    ./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 High

    ./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

Slurm-Cluster löschen

Standardmäßig wird durch die A4X Max-, A4X-, A4- und A3 Ultra-Blueprints der Löschschutz für die Filestore-Instanz aktiviert. Wenn Sie die Filestore-Instanz löschen möchten, wenn Sie den Slurm-Cluster löschen, deaktivieren Sie den Löschschutz, bevor Sie den Löschbefehl ausführen. Eine Anleitung finden Sie unter Löschschutz für eine vorhandene Instanz festlegen oder entfernen.

Führen Sie die folgenden Schritte aus, um den Slurm-Cluster zu löschen:

  1. Trennen Sie die Verbindung zum Cluster, falls Sie dies noch nicht getan haben .

  2. Bevor Sie den Befehl destroy ausführen, wechseln Sie zum Stammverzeichnis des Cluster Toolkit-Verzeichnisses.

  3. Führen Sie den gcluster destroy-Befehl aus, um den Cluster zu löschen:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Ersetzen Sie DEPLOYMENT_FOLDER durch den Namen des Bereitstellungsordners.

Wenn das Cluster Toolkit Ihren Cluster löscht, sieht die Ausgabe in etwa so aus:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

Nächste Schritte