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:
- Richten Sie Ihr Google Cloud -Projekt mit den erforderlichen Berechtigungen für diesen Leitfaden und den Umgebungsvariablen für die Reservierung Ihrer Maschine ein.
- Cloud Storage-Bucket erstellen
- Richten Sie die Umgebungsvariablen für den Speicher ein.
- Cluster Toolkit einrichten
- Wechseln Sie in das Cluster Toolkit-Verzeichnis.
- Erstellen Sie eine YAML-Datei für die Slurm-Bereitstellung.
- Stellen Sie einen Slurm-Cluster mithilfe eines Blueprints bereit.
- Stellen Sie eine Verbindung zum Slurm-Cluster her.
Hinweis
- Reservieren Sie einen Kapazitätsblock oder erstellen Sie eine Reservierung im Kalendermodus für eine
a4-highgpu-8g-Maschine. 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.
- Eine detaillierte Anleitung zum Prüfen von Kontingenten finden Sie unter API-spezifische Kontingente aufrufen.
Achten Sie darauf, dass die Abrechnung für Ihr Projekt in Google Cloud aktiviert ist.
Aktivieren Sie die APIs für Compute Engine, Managed Lustre, Service Networking, Cloud Storage, Service Usage und Resource Manager:
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:
- Storage-Administrator (
roles/storage.admin) für Ihr Projekt - Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) für Ihr Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das Dienstkonto selbst -
So nutzen Sie eine Reservierung für ein Einzelprojekt:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) für Ihr Projekt -
So nutzen Sie eine freigegebene Reservierung: Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) sowohl für das Inhaberprojekt als auch für alle Nutzerprojekte, in denen Sie die Reservierung nutzen möchten
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-standardfür den Slurm-Login-Knoten. - Leistungsstarke (SSD) nichtflüchtige Speicher: 50 GB
pd-ssdfü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
Zur Google Cloud Console.
Klicken Sie in der oberen rechten Ecke der Console auf den Button Cloud Shell aktivieren:

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-aA4_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.
- Rufen Sie auf GitHub die Seite mit den Cluster Toolkit-Releases auf.
- Laden Sie das Bundle herunter, das Ihrer Plattform und Architektur entspricht. Folgende Optionen sind verfügbar:
gcluster_bundle_linux_amd64.zipodergcluster_bundle_linux_amd64.tgzgcluster_bundle_linux_arm64.zipodergcluster_bundle_linux_arm64.tgzgcluster_bundle_mac_amd64.zipodergcluster_bundle_mac_amd64.tgzgcluster_bundle_mac_arm64.zipodergcluster_bundle_mac_arm64.tgz
- 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_FILENAMEdurch den Namen des heruntergeladenen Bundles. -
- Wechseln Sie zum neuen -Verzeichnis:
cd cluster-toolkit
- 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
Erstellen Sie im Cluster Toolkit-Verzeichnis die YAML-Datei für die Slurm-Bereitstellung.
nano ${A4_DEPLOYMENT_FILE_NAME}.yamlFü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: 1Drü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.
Rufen Sie in derGoogle Cloud Console die Seite Compute Engine > VM-Instanzen auf.
Suchen Sie den Login-Knoten (
a4high-login-001oder ähnlich).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.
Bevor Sie den Löschbefehl ausführen, wechseln Sie zum Stammverzeichnis des Cluster Toolkit-Verzeichnisses. Standardmäßig befindet sich
DEPLOYMENT_FOLDERim Stammverzeichnis des Cluster Toolkit-Verzeichnisses.Verwenden Sie den Befehl
gcluster destroy, um den Cluster zu löschen:./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
Ersetzen Sie
DEPLOYMENT_FOLDERdurch den Namen des Bereitstellungsordners. Er entspricht in der RegelDEPLOYMENT_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
- Erweiterte Slurm-Aufgaben:
- So verwalten Sie Hostereignisse:
- Topologie einer Compute-Instanz ansehen
- Compute Engine-Instanzen und Slurm-Cluster überwachen
- Fehlerhaften Host melden