Selbstverwalteten Slurm-Cluster mit einer A4-VM erstellen

Auf dieser Seite wird beschrieben, wie Sie mit der gcloud CLI und dem Cluster Toolkit schnell einen KI-optimierten Slurm-Cluster mit beschleunigungsoptimierten A4-Maschinentypen erstellen und bereitstellen.

Beschleunigungsoptimierte A4-Maschinentypen sind mit NVIDIA B200-GPUs ausgestattet und speziell für rechenintensive KI-Anwendungen konzipiert. So kann Ihr Slurm-Cluster umfangreiches Modelltraining und Inferenz effizient verarbeiten. Weitere Informationen zu beschleunigungsoptimierten A4-Maschinentypen in Google Cloudfinden Sie unter GPU-Maschinentypen.

Alternativ können Sie Cluster Director verwenden, um einen A4-basierten Slurm-Cluster zu erstellen. Cluster Director ist ein verwalteter Dienst, der die Clusterbereitstellung vereinfacht und automatisiert und so den operativen Aufwand reduziert. Weitere Informationen finden Sie unter Vollständig verwalteten Slurm-Cluster mit zwei A4-VMs erstellen.

Anleitungsübersicht

In dieser Anleitung werden die Schritte zum Einrichten eines KI-optimierten Slurm-Clusters mit beschleunigungsoptimierten A4-Maschinentypen beschrieben. Konkret richten Sie einen Cluster mit Compute Engine-VMs ein, erstellen einen Cloud Storage-Bucket zum Speichern der erforderlichen Terraform-Module und richten eine Filestore-Instanz ein, um Ihren Slurm-Cluster bereitzustellen. So führen Sie die Schritte in dieser Anleitung aus:

  1. Richten Sie Ihr Google Cloud -Projekt mit den erforderlichen Berechtigungen für diesen Leitfaden und den Umgebungsvariablen für die Reservierung Ihrer Maschine ein.
  2. Cloud Storage-Bucket erstellen
  3. Richten Sie die Umgebungsvariablen für den Speicher ein.
  4. Cluster Toolkit einrichten
  5. Wechseln Sie in das Cluster Toolkit-Verzeichnis.
  6. Erstellen Sie eine YAML-Datei für die Slurm-Bereitstellung.
  7. Stellen Sie einen Slurm-Cluster mithilfe eines Blueprints bereit.
  8. Stellen Sie eine Verbindung zum Slurm-Cluster her.

Hinweis

  1. Reservieren Sie einen Kapazitätsblock oder erstellen Sie eine Reservierung im Kalendermodus für eine a4-highgpu-8g-Maschine.
  2. Prüfen Sie, ob Sie ein ausreichendes Managed Lustre-Kontingent haben (mindestens 36.000 GiB Speicherkapazitätskontingent und 18 GB/s Durchsatzkontingent), um die Blueprint-Ressourcen bereitzustellen.

  3. Achten Sie darauf, dass die Abrechnung für Ihr Projekt in Google Cloud aktiviert ist.

  4. Aktivieren Sie die APIs für Compute Engine, Managed Lustre, Service Networking, Cloud Storage, Service Usage und Resource Manager:

    APIs aktivieren

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.

Kosten

Die Kosten für die Ausführung dieser Anleitung variieren je nach Abschnitt, z. B. für die Einrichtung der Anleitung oder die Ausführung von Jobs. Sie können die Kosten mit dem Preisrechner berechnen.

  • Verwenden Sie die folgenden Spezifikationen, um die Kosten für die Einrichtung dieser Anleitung zu schätzen:

    • Managed Lustre-Kapazität: 36.000 GiB in der Leistungsstufe 500 MB/s pro TiB. Die Preise für Managed Lustre hängen sowohl von der Speicherkapazität als auch von der konfigurierten Leistungsstufe ab.
    • Nichtflüchtiger Standardspeicher: 50 GB pd-standard für den Slurm-Login-Knoten.
    • Leistungsstarke (SSD) nichtflüchtige Speicher: 50 GB pd-ssd für den Slurm-Controller.
    • Compute Engine-Instanz: 1 a4-highgpu-8g.

Cloud Shell starten

In dieser Anleitung verwenden Sie Cloud Shell, eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloudgehostet werden.

Die Google Cloud CLI ist in Cloud Shell vorinstalliert. Die gcloud CLI bietet die primäre Befehlszeile für Google Cloud. Cloud Shell aufrufen

  1. Zur Google Cloud Console.

    Google Cloud Console

  2. Klicken Sie in der oberen rechten Ecke der Console auf den Button Cloud Shell aktivieren: Cloud Shell-Symbol

Eine Cloud Shell-Sitzung wird gestartet und eine Eingabeaufforderung wird angezeigt. In dieser Shell führen Sie gcloud- und Cluster Toolkit-Befehle aus.

Variablen für die Maschinenreservierungskapazität festlegen

Legen Sie in Cloud Shell die folgenden Umgebungsvariablen für die Reservierungskapazität fest. Mit diesen Umgebungsvariablen werden Platzhalterwerte für die Konfiguration Ihres Projekts für den Zugriff auf Ihre reservierte a4-highgpu-8g-Maschine festgelegt.

export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID
export A4_RESERVATION_NAME=A4_RESERVATION_NAME
export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME
export A4_REGION=A4_REGION
export A4_ZONE=A4_ZONE
export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME

Ersetzen Sie Folgendes:

  • A4_RESERVATION_PROJECT_ID: Die Projekt-ID von Google Cloud, für die der Reservierungsblock für den A4-Maschinentyp gewährt wurde.
  • A4_RESERVATION_NAME: der Name der GPU-Reservierung, die in Ihrem Projekt verwendet wird. Beispiel: a4high-exr.
  • A4_DEPLOYMENT_NAME: Ein eindeutiger Name für Ihr Slurm-Cluster-Deployment. Beispiel: my-slurm-cluster-deployment.
  • A4_REGION: Die Region, in der der reservierte Reservierungsblock für den A4-Maschinentyp ausgeführt wird. Beispiel: us-central1.
  • A4_ZONE: die Zone, die die reservierten Maschinen enthält. Dieser String muss sowohl die Region als auch die Zone enthalten. Beispiel: us-central1-a
  • A4_DEPLOYMENT_FILE_NAME: Ein eindeutiger Name für die YAML-Datei des Slurm-Blueprints. Wenn Sie dieses Tutorial mehrmals durchlaufen, wählen Sie jedes Mal einen eindeutigen Bereitstellungsnamen.

Zu Ihrem für A4 genehmigten Projekt wechseln

Wechseln Sie zum Projekt Google Cloud , das den genehmigten Reservierungsblock für den A4-Maschinentyp hat:

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

Cloud Storage-Bucket erstellen

Wenn Sie einen Blueprint und seine Module bereitstellen, erstellt Terraform eine Statusdatei, die Ihren Blueprint Ihren Ressourcen in der Cloud zuordnet. Um einen zuverlässigen Datensatz Ihrer Infrastruktur zu erhalten, empfiehlt es sich, Ihre Terraform-Statusdateien an einem Remote-Speicherort mit aktivierter Versionsverwaltung zu speichern, z. B. in einem Cloud Storage-Bucket mit aktivierter Versionsverwaltung.

Erstellen Sie in Cloud Shell einen Cloud Storage-Bucket mit aktivierter Versionsverwaltung, um die Statusdatei zu speichern:

gcloud storage buckets create gs://${BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${BUCKET_NAME} --versioning

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name des neuen Cloud Storage-Bucket, der den Anforderungen für Bucket-Namen entsprechen muss.
  • A4_RESERVATION_PROJECT_ID: Die Projekt-ID von Google Cloud, für die der Reservierungsblock für den A4-Maschinentyp gewährt wurde.
  • BUCKET_LOCATION: die Google Cloud Region, in der Ihr Cloud Storage-Bucket erstellt werden soll, z. B. us-central1. Terraform speichert Ihre Statusdatei an diesem Speicherort.

Variablen für die Speicherkapazität festlegen

Erstellen Sie in Cloud Shell die Umgebungsvariablen für den Bucket, den Sie im vorherigen Schritt erstellt haben.

export BUCKET_NAME=BUCKET_NAME
export BUCKET_LOCATION=BUCKET_LOCATION

Ersetzen Sie Folgendes:

  • BUCKET_NAME: der Name Ihres Buckets.
  • BUCKET_LOCATION: die Region, in der sich der Bucket befindet.

Cluster Toolkit einrichten

Wenn Sie einen Slurm-Cluster in einem Google Cloud -Projekt erstellen möchten, können Sie das Cluster Toolkit verwenden, um den Cluster bereitzustellen und zu provisionieren. Cluster Toolkit ist eine Open-Source-Software von Google Cloud, mit der sich die Bereitstellung von Arbeitslasten in Google Cloudvereinfachen lässt.

Gehen Sie so vor, um Cluster Toolkit einzurichten.

Cluster Toolkit installieren

Wenn Sie das Cluster Toolkit installieren möchten, laden Sie das vordefinierte Binärpaket für Ihre Plattform herunter und extrahieren Sie es. Es sind sowohl ZIP- als auch TAR-Archive (.tgz) verfügbar.

  1. Rufen Sie auf GitHub die Seite mit den Cluster Toolkit-Releases auf.
  2. Laden Sie das Bundle herunter, das Ihrer Plattform und Architektur entspricht. Folgende Optionen sind verfügbar:
    • gcluster_bundle_linux_amd64.zip oder gcluster_bundle_linux_amd64.tgz
    • gcluster_bundle_linux_arm64.zip oder gcluster_bundle_linux_arm64.tgz
    • gcluster_bundle_mac_amd64.zip oder gcluster_bundle_mac_amd64.tgz
    • gcluster_bundle_mac_arm64.zip oder gcluster_bundle_mac_arm64.tgz
  3. Extrahieren Sie im Terminal die Bundle-Dateien in ein neues Verzeichnis:
    • Wenn Sie ein ZIP-Bundle heruntergeladen haben, extrahieren Sie die Dateien mit dem Befehl unzip:

      unzip BUNDLE_FILENAME -d cluster-toolkit
    • Wenn Sie ein TAR-Bundle heruntergeladen haben, extrahieren Sie die Dateien mit dem Befehl tar:

      mkdir -p cluster-toolkit
      tar -xzf BUNDLE_FILENAME -C cluster-toolkit

    Ersetzen Sie BUNDLE_FILENAME durch den Namen des heruntergeladenen Bundles.

  4. Wechseln Sie zum neuen -Verzeichnis:
    cd cluster-toolkit
  5. Installation prüfen:
    ./gcluster --version

    Die Ausgabe zeigt die aktuelle Version des Cluster-Toolkits, das Sie verwenden.

Nachdem Sie das Binärprogramm installiert haben, können Sie Cluster bereitstellen, um Ihre Jobs oder Arbeitslasten auszuführen.

Bereitstellungsdatei erstellen

  1. Erstellen Sie im Cluster Toolkit-Verzeichnis die YAML-Datei für die Slurm-Bereitstellung.

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Fügen Sie den folgenden Inhalt in die YAML-Datei ein.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: BUCKET_NAME
    
    vars:
      deployment_name: A4_DEPLOYMENT_FILE_NAME
      project_id: A4_RESERVATION_PROJECT_ID
      region: A4_REGION
      zone: A4_ZONE
      a4h_reservation_name: A4_RESERVATION_NAME
      a4h_cluster_size: 1
    
  3. Drücken Sie zum Speichern und Beenden der Datei Strg + O > Eingabetaste > Strg + X.

Slurm-Cluster bereitstellen

Führen Sie den folgenden Bereitstellungsbefehl aus, um den Slurm-Cluster bereitzustellen. Mit diesem Befehl wird der Slurm-Cluster mit der Blueprint-Datei examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml bereitgestellt. Standardmäßig werden mit diesem Blueprint Compute-Instanzen (Compute Engine instances) bereitgestellt, die vordefinierte Advanced Compute Images verwenden. Weitere Informationen zu den vorinstallierten Treibern und Konfigurationstools, die Sie bereitstellen, finden Sie unter Übersicht über Advanced Compute Images.

Starten Sie in Cloud Shell die Clustererstellung mit dem Befehl gcluster deploy.

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

Mit dem Cluster verbinden

Stellen Sie nach der Bereitstellung eine Verbindung zur Google Cloud Console her, um Ihren Cluster aufzurufen.

  1. Rufen Sie in derGoogle Cloud Console die Seite Compute Engine > VM-Instanzen auf.

    Zur Seite „VM-Instanzen“

  2. Suchen Sie den Login-Knoten (a4high-login-001 oder ähnlich).

  3. Klicken Sie auf SSH, um eine Verbindung herzustellen.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

Slurm-Cluster löschen

Wir empfehlen, Ressourcen zu bereinigen, wenn sie nicht mehr benötigt werden. Wenn Sie den Slurm-Cluster löschen, werden alle bereitgestellten Ressourcen gelöscht, einschließlich der verwalteten Lustre-Instanz und aller darauf gespeicherten Daten.

  1. Bevor Sie den Löschbefehl ausführen, wechseln Sie zum Stammverzeichnis des Cluster Toolkit-Verzeichnisses. Standardmäßig befindet sich DEPLOYMENT_FOLDER im Stammverzeichnis des Cluster Toolkit-Verzeichnisses.

  2. Verwenden Sie den Befehl gcluster destroy, um den Cluster zu löschen:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Ersetzen Sie DEPLOYMENT_FOLDER durch den Namen des Bereitstellungsordners. Er entspricht in der Regel DEPLOYMENT_NAME.

Wenn das Löschen abgeschlossen ist, wird eine Meldung wie diese angezeigt:

Destroy complete! Resources: xx destroyed.

Storage-Bucket löschen

Löschen Sie den Cloud Storage-Bucket, nachdem Sie sich vergewissert haben, dass der vorherige Befehl ohne Fehler beendet wurde:

gcloud storage buckets delete gs://${BUCKET_NAME}

Fehlerbehebung

  • Fehler: Cloud Shell kann den Cluster nicht bereitstellen, da kein Speicherplatz mehr vorhanden ist.

    Dieser Fehler kann auftreten, wenn Sie Cloud Shell häufig verwenden und der Speicherplatz nicht mehr ausreicht.

    Informationen zur Behebung dieses Problems finden Sie unter Cloud Shell deaktivieren oder zurücksetzen.

  • Fehler: Der Cluster- oder Blueprint-Name ist bereits vorhanden.

    Dieser Fehler kann auftreten, wenn Sie ein Projekt verwenden, in dem die in dieser Anleitung verwendeten Dateinamen bereits verwendet wurden. Das ist beispielsweise der Fall, wenn eine andere Person in Ihrer Organisation dieses Tutorial vollständig durchlaufen hat.

    Um dieses Problem zu beheben, führen Sie das Tutorial noch einmal durch und wählen Sie einen eindeutigen Namen für die Bereitstellungsdatei aus. Führen Sie dann den Befehl zum Bereitstellen des Slurm-Clusters mit der neuen Bereitstellungsdatei noch einmal aus.

Nächste Schritte