Auf dieser Seite wird Plattformadministratoren und ML-Entwicklern (Machine Learning) gezeigt, wie sie einen von Slurm orchestrierten Cluster Director-Cluster erstellen und für Pathways-Arbeitslasten konfigurieren. Wenn Sie diese Schritte ausführen, stellen Sie einen Cluster mit TPU v6e-Slices, einem CPU-Controller-Knoten, einem freigegebenen Google Cloud Managed Lustre-Dateisystem und der Laufzeitumgebung /home/pathways bereit. Pathways ist nicht auf einem Cluster Director-Cluster vorinstalliert. Nachdem Sie den Cluster erstellt haben, laden Sie die Pathways-Skripts auf den Login-Knoten herunter und führen einmal ein Setupskript aus.
Hinweis
-
Wählen Sie den Tab für die gewünschte Verwendung der Beispiele auf dieser Seite aus:
gcloud
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Hinweis
Bevor Sie beginnen, müssen die folgenden Voraussetzungen erfüllt sein:
- Installieren Sie die Google Cloud CLI.
- Aktivieren Sie die Hypercompute Cluster API.
- Ihr Nutzerkonto und das Compute Engine-Standarddienstkonto müssen die IAM-Rollen (Identity and Access Management) haben, die zum Erstellen eines Cluster Director-Clusters und zum Herstellen einer Verbindung zu diesem erforderlich sind. Eine Liste der Rollen finden Sie unter Vorbereitung in der Kurzanleitung für Cluster Director.
- Erstellen Sie eine TPU v6e-Reservierung in der Zone, in der Sie den Cluster erstellen möchten (z. B. mindestens vier
ct6e-standard-4t-VMs für zwei2x4-Slices). - Konfigurieren Sie passwortloses
sudoauf den Clusterknoten für die automatische Slice-Wiederherstellung. Bitten Sie Ihren Administrator, Ihnen die Rolle „Compute OS-Administrator-Login“ (roles/compute.osAdminLogin) für das Projekt zuzuweisen. - Erstellen Sie einen Cloud Storage-Bucket für Pathways-Scratch-Daten und Arbeitslastausgaben und weisen Sie Ihrem Nutzerkonto und dem Compute Engine-Standarddienstkonto die Rolle „Storage-Objekt-Nutzer“ (
roles/storage.objectUser) für das Projekt zu.
Lokale Umgebung einrichten
Melden Sie sich mit Ihren Google Cloud -Anmeldedaten an:
gcloud auth login
Definieren Sie die folgenden Umgebungsvariablen mit Werten, die für Ihre Arbeitslast geeignet sind:
export PROJECT=PROJECT_ID export REGION=REGION export ZONE=ZONE export CLUSTER_ID=CLUSTER_ID export RESERVATION_NAME=RESERVATION_NAME
Ersetzen Sie Folgendes:
PROJECT_ID: IhreGoogle Cloud -Projekt-ID.REGION: die Region, in der Sie Ressourcen erstellen.ZONE: die Zone, in der Sie Ressourcen erstellen.CLUSTER_ID: der Clustername. Der Name darf bis zu 10 Zeichen lang sein und nur Ziffern und Kleinbuchstaben enthalten.RESERVATION_NAME: der Name Ihrer TPU v6e-Reservierung inZONE.
Cluster Director-Cluster erstellen
Im folgenden Beispiel erstellen Sie einen Cluster mit zwei TPU v6e-2x4-Slices (vier ct6e-standard-4t-VMs) aus Ihrer Reservierung und einem CPU-Knoten für den Pathways-Controller. Alle Knoten stellen ein freigegebenes Managed Lustre-Dateisystem unter /home bereit. Weitere Informationen zu den Feldern in der Clusterdefinition finden Sie unter Benutzerdefinierten Cluster erstellen.
Erstellen Sie den Cluster mit der REST API:
Erstellen Sie den Anfragetext:
cat <<EOF > "${CLUSTER_ID}_create.json" { "networkResources": { "net": { "config": { "newNetwork": { "network": "projects/${PROJECT}/global/networks/${CLUSTER_ID}-net" } } } }, "storageResources": { "home": { "config": { "newLustre": { "lustre": "projects/${PROJECT}/locations/${ZONE}/instances/${CLUSTER_ID}-lustre", "filesystem": "lustre", "capacityGb": "18000", "perUnitStorageThroughput": "500" } } } }, "computeResources": { "crtpu": { "config": { "newReservedInstances": { "reservation": "projects/${PROJECT}/zones/${ZONE}/reservations/${RESERVATION_NAME}" } } }, "crcpu": { "config": { "newOnDemandInstances": { "zone": "${ZONE}", "machineType": "n2-highmem-32" } } } }, "orchestrator": { "slurm": { "loginNodes": { "count": "1", "zone": "${ZONE}", "machineType": "n2-standard-16", "enableOsLogin": true, "enablePublicIps": true, "bootDisk": { "type": "pd-balanced", "sizeGb": "100" }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] }, "nodeSets": [ { "id": "nstpu", "computeId": "crtpu", "staticNodeCount": "4", "maxDynamicNodeCount": "0", "enablePublicIps": true, "resourcePolicyConfig": { "acceleratorTopology": "2x4" }, "computeInstance": { "bootDisk": { "type": "hyperdisk-balanced", "sizeGb": "100" } }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] }, { "id": "nscpu", "computeId": "crcpu", "staticNodeCount": "1", "maxDynamicNodeCount": "0", "enablePublicIps": true, "computeInstance": { "bootDisk": { "type": "pd-balanced", "sizeGb": "100", "image": "projects/clusterdirector-public-images/global/images/family/tpu-v6e-v5p-ubuntu2204-slurm2605-v20260902" } }, "storageConfigs": [ { "id": "home", "localMount": "/home" } ] } ], "partitions": [ { "id": "tpu", "nodeSetIds": ["nstpu"] }, { "id": "cpu", "nodeSetIds": ["nscpu"] } ], "defaultPartition": "tpu", "config": { "requeueExitCodes": [1, 2, 134, 137, 139, 143] } } } } EOFSenden Sie dann die Anfrage:
curl -s -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d @"${CLUSTER_ID}_create.json" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters?clusterId=${CLUSTER_ID}"Der Cluster enthält Folgendes:
tpu-Partition: Ein statisches Knotenset reservierter TPU v6e-VMs.staticNodeCountist die Anzahl der VMs undacceleratorTopologyist die Topologie der einzelnen Slices. Jedect6e-standard-4t-VM hat vier Chips, sodass ein2x4-Slice zwei VMs hat. Für mehr Slices multiplizieren Sie: Zwei2x4-Slices benötigen einenstaticNodeCountvon4.cpu-Partition: Eine On-Demand-VM, auf der der Pathways-Ressourcenmanager, der IFRT-Proxyserver und der MaxText-Client ausgeführt werden. Die Pathways-Skripts senden Jobs an eine Partition mit dem Namencpu. Die VM verwendet den Maschinentypn2-highmem-32, da der Pathways-Dienst und MaxText zusammen bis zu 240 GB Arbeitsspeicher benötigen, während sie Prüfpunkte speichern. Außerdem wird ein Image mit Slurm 26.05 verwendet, das TPU-Slices unterstützt, da der Pathways-Dienst die TPU-Worker-Jobs von dieser VM sendet.requeueExitCodes: Slurm stellt einen Job, der mit einem dieser Codes beendet wird, wieder in die Warteschlange. Mit dieser Einstellung kann Slurm einen TPU-Worker-Job neu starten, wenn eine beliebige VM im Slice vorzeitig beendet wird, nicht nur die erste.
Warten Sie, bis der Cluster bereit ist. Sie können den Fortschritt auf der Seite Cluster Director in der Google Cloud Console verfolgen oder in der Ausgabe des folgenden Befehls prüfen, ob
reconcilingden Wertfalsehat:curl -s \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
Pathways-Umgebung einrichten
Die Pathways-Umgebung befindet sich im freigegebenen Dateisystem unter /home/pathways. Sie müssen sie also nur einmal pro Cluster einrichten. Sie enthält die Pathways-Container-Images, eine Python-Umgebung mit JAX und pathwaysutils sowie die Pathways-Skripts.
Stellen Sie eine Verbindung zum Login-Knoten her. Weitere Möglichkeiten zum Herstellen einer Verbindung finden Sie unter Verbindung zu einem Cluster herstellen.
gcloud compute ssh ${CLUSTER_ID}-login-001 \ --project=${PROJECT} \ --zone=${ZONE} \ --tunnel-through-iapPrüfen Sie, ob die Partitionen
cpuundtpuvorhanden sind und den Statusidlehaben:sinfo -o "%P %a %D %T %N %f"Die Ausgabe sieht etwa so aus:
PARTITION AVAIL NODES STATE NODELIST FEATURES tpu* up 4 idle ${CLUSTER_ID}-nstpu-[0-3] cpu up 1 idle ${CLUSTER_ID}-nscpu-0Laden Sie die Pathways-Skripts auf den Login-Knoten herunter:
mkdir -p ~/pathways-scripts && cd ~/pathways-scripts for f in setup_env.sh start_pathways.sh run_worker_slice.sh run_maxtext.sh; do curl -fsSLO "https://raw.githubusercontent.com/GoogleCloudPlatform/slurm-gcp/tpu-2605/pathways/scripts/${f}" doneMit diesem Befehl werden die folgenden Skripts heruntergeladen:
setup_env.sh: Führt eine einmalige Einrichtung der Pathways-Umgebung durch.start_pathways.sh: Startet den Pathways-Dienst.run_worker_slice.sh: Startet den Pathways-Worker für ein TPU-Slice (eingereicht vonstart_pathways.sh).run_maxtext.sh: Führt eine MaxText-Beispieltrainingsarbeitslast aus.
Führen Sie das Setupscript aus. Das dauert etwa 5 Minuten:
chmod +x *.sh ./setup_env.shDas Script ruft die Pathways-Server- und Proxy-Images ab, erstellt eine Python-Umgebung mit JAX,
pathwaysutilsund MaxText, kopiert die Scripts nach/home/pathwaysund verknüpft~/pathwaysmit/home/pathways. Sie endet mit einer Ausgabe, die etwa so aussieht:Environment ready: JAX 0.11.1Optional: Wenn Sie anderen Clusternutzern Zugriff auf die Pathways-Umgebung gewähren möchten, lassen Sie sie
/home/pathwaysmit ihrem Basisverzeichnis verknüpfen:ln -sfn /home/pathways ~/pathways
Der Cluster ist jetzt für Pathways bereit. Sie starten den Pathways-Dienst im Rahmen der Ausführung einer Arbeitslast, da Batch- und interaktive Arbeitslasten ihn mit unterschiedlichen Einstellungen starten. Weitere Informationen finden Sie unter Batcharbeitslast mit Pathways ausführen und Interaktive Arbeitslast mit Pathways ausführen.
Wenn Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung für Pathways in der Cloud.
Bereinigen
Löschen Sie den Cluster Director-Cluster, wenn Sie fertig sind, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden:
curl -s -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://hypercomputecluster.googleapis.com/v1alpha/projects/${PROJECT}/locations/${REGION}/clusters/${CLUSTER_ID}"
Nächste Schritte
- Batcharbeitslast mit Pathways ausführen
- Interaktive Arbeitslast mit Pathways ausführen
- Ausfallsicheres Training mit Pathways
- JAX-Arbeitslasten zu Pathways portieren
- Fehlerbehebung für Pathways in der Cloud