In dieser Anleitung erfahren Sie, wie Sie die überwachte Feinabstimmung (Supervised Fine-Tuning, SFT) auf einem Multi-Host-Tensor Processing Unit (TPU) v6e-Cluster mit MaxText und Cluster Toolkit ausführen. Mit dem Cluster Toolkit führen Sie eine Multi-Host-Trainingsarbeitslast aus und exportieren die Ergebnisse zur Bereitstellung wieder in das Hugging Face-Format.
Zusammenfassung der Arbeitslast
Für die Ausführung dieser SFT-Arbeitslast auf Cloud TPU und GKE sind die folgenden Komponenten erforderlich:
- Modell: Gemma 4 31B (
google/gemma-4-31b-it), ein fortschrittliches Open-Weights-Modell. In dieser Anleitung werden die Modellgewichtungen von Hugging Face heruntergeladen, in ein MaxText-kompatibles Format konvertiert und in einem GKE-Cluster mit Cloud TPU v6e-Infrastruktur (v6e-32) bereitgestellt. - Trainingsmethode: SFT mit MaxText. Die Arbeitslast führt eine skalierbare Feinabstimmungspipeline auf Cloud TPU v6e mit JAX aus. Die Modellparameter werden über 1.000 Schritte hinweg mit dem integrierten SFT-Trainer von MaxText (
maxtext.trainers.post_train.sft.train_sft) und Datasets für die Feinabstimmung von Anweisungen optimiert. - Dataset und Vorlage: UltraChat 200k (
HuggingFaceH4/ultrachat_200k), ein umfangreiches, hochwertiges Dataset mit Multi-Turn-Dialogen. Die Arbeitslast verwendet dieses Dataset, um das Modell zu optimieren und seine Fähigkeiten zur Konversation und zum Befolgen von Anweisungen zu verbessern. - Infrastruktur und Framework: GKE, verwaltet mit Cluster Toolkit, auf Cloud TPU v6e (
v6e-32, mit einer4x8-Topologie). Das Framework ist MaxText (tpu_post_training:0.2.4) mit einem JAX-Backend.
Ziele
- Cluster Toolkit und seine Abhängigkeiten installieren
- Cluster Toolkit-Cluster bereitstellen
- Hugging Face-Modell in das MaxText-Format konvertieren.
- Führen Sie eine SFT-Trainingsarbeitslast auf der TPU aus.
- Konvertieren Sie das optimierte Modell für die Bereitstellung zurück in das Hugging Face-Format.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Für diese Anleitung benötigen Sie ein Hugging Face-Zugriffstoken. Sie können sich bei Hugging Face für ein kostenloses Konto registrieren. Nachdem Sie ein Konto erstellt haben, generieren Sie ein Zugriffstoken:
- Klicken Sie auf der Seite Willkommen bei Hugging Face auf Ihren Konto-Avatar und wählen Sie Zugriffstokens aus.
- Klicken Sie auf der Seite Zugriffstokens auf Neues Token erstellen.
- Wählen Sie den Tokentyp Lesen aus und geben Sie einen Namen für das Token ein.
- Ihr Zugriffstoken wird angezeigt. Speichern Sie das Token an einem sicheren Ort.
- Akzeptieren Sie auf der
google/gemma-4-31b-it-Modellkarte auf Hugging Face die Lizenzvereinbarung für das Modell.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:
-
So schließen Sie diese Anleitung ab:
- TPU-Administrator (
roles/tpu.admin) - Service Account User (
roles/iam.serviceAccountUser) - Compute-Administrator (
roles/compute.admin) - Storage-Administrator (
roles/storage.admin) - Kubernetes Engine-Administrator (
roles/container.admin) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin) - Service Usage-Administrator ()
roles/serviceusage.serviceUsageAdmin
- TPU-Administrator (
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.
Umgebungsvariablen einrichten
Richten Sie die Umgebungsvariablen ein:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: die ID Ihres Projekts in Google Cloud.YOUR_REGION: die Region, in der sich Ihre TPU-Reservierung befindet und in der Sie Ihren Cluster bereitstellen.YOUR_ZONE: die Zone, in der sich Ihre TPU-Reservierung befindet und in der Sie Ihren Cluster bereitstellen.YOUR_CLUSTER_NAME: Name Ihres GKE-Clusters. Der Name muss mit einem Kleinbuchstaben beginnen, darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten und darf maximal 20 Zeichen lang sein, damit die darauf basierenden Dienstkonto-IDs die Beschränkung von 30 Zeichen nicht überschreiten.YOUR_BUCKET_NAME: ein global eindeutiger Name für einen Cloud Storage-Bucket.YOUR_RESERVATION_NAME: der Name Ihrer TPU v6e-Reservierung.YOUR_HF_TOKEN: Ihr Hugging Face-Zugriffstoken.
Standardmäßig setzt das Script MODEL_NAME auf gemma4-31b (den MaxText-Modellnamen für google/gemma-4-31b-it).
Cluster Toolkit-Abhängigkeiten installieren
Wenn Sie diese Anleitung auf einem Linux- oder macOS-Client oder einer Linux- oder macOS-Workstation ausführen möchten, folgen Sie den entsprechenden Schritten unter Abhängigkeiten installieren in der Cluster Toolkit-Dokumentation.
Wenn Sie Cloud Shell verwenden, können Sie diesen Abschnitt überspringen.
Cluster Toolkit installieren
Laden Sie das vordefinierte Bundle für die in CLUSTER_TOOLKIT_VERSION (v1.103.0) definierte Version des Cluster Toolkits herunter und extrahieren Sie es in Ihr aktuelles Arbeitsverzeichnis:
Umgebung authentifizieren
Damit das Cluster Toolkit Ressourcen bereitstellen und Images in Ihrem Namen in Artifact Registry hochladen kann, müssen Sie die Google Cloud CLI authentifizieren und Ihre Standardanmeldedaten für Anwendungen festlegen:
Cluster Toolkit-Cluster erstellen
Führen Sie die folgenden Schritte aus, um einen Cluster Toolkit-Cluster mit 32 v6e-TPU-Chips zu erstellen und bereitzustellen:
Erstellen Sie einen Cloud Storage-Bucket:
Stellen Sie die Blueprint-Konfiguration bereit und kopieren Sie den Beispiel-Blueprint für die Bereitstellung in ein isoliertes Arbeitsverzeichnis:
Aktualisieren Sie
tmp/gke-tpu-v6e-advanced.yaml, um dem Dienstkonto des Clusterknotenpools (gke-np-sa) die Rolle „Storage-Administrator“ (roles/storage.admin) zuzuweisen, damit Prüfpunkte in Ihren Cloud Storage-Bucket geschrieben werden können. Ändern Sie den Maschinentyp des Systemknotenpools ine2-standard-8und pinnen Sie den Systemknotenpool an Ihre Zielzone, um regionale Engpässe bei Maschinentypen zu vermeiden:Verwenden Sie den Befehl
gcluster deploy, um Ihren Cluster Toolkit-Cluster mit dem Blueprinttmp/gke-tpu-v6e-advanced.yamlbereitzustellen und die erforderlichen Variablen mit dem Flag--varszu übergeben:
Modell in das MaxText-Format konvertieren
Wenn Sie das Modell im MaxText-Format trainieren möchten, müssen Sie es vom Hugging Face-Format in das MaxText-Format konvertieren.
Verwenden Sie den
gcluster job config-Befehl, um Ihr Standardprojekt, Ihren Standardcluster und Ihren Standardstandort zu konfigurieren und nachfolgende Befehle zu vereinfachen:Verwenden Sie den Befehl
gcluster job submit, um das Modell vom Hugging Face-Format in das MaxText-Format zu konvertieren und in Ihrem Cloud Storage-Bucket zu speichern:Der Befehl enthält das Flag
--await-job-completion. Das bedeutet, dass er in Ihrem aktuellen Terminal wartet, bis die Konvertierung abgeschlossen ist.Optional: Wenn Sie die Konvertierungslogs streamen möchten, während der Job ausgeführt wird, öffnen Sie ein separates Terminal im Arbeitsverzeichnis, in dem Sie
gclusterextrahiert haben, und führen Sie den Befehlgcluster job logsaus:Prüfen Sie im ursprünglichen Terminal, ob die konvertierten Modelldateien in Ihrem Cloud Storage-Bucket verfügbar sind:
Trainingsarbeitslast starten
Starten Sie nach Abschluss der Konvertierung die SFT-Arbeitslast:
Der Befehl enthält das Flag
--await-job-completion. Das bedeutet, dass er im aktuellen Terminal wartet, bis der Trainingsjob abgeschlossen ist.Optional: Wenn Sie die Livetrainingslogs während der Ausführung des Jobs streamen möchten, öffnen Sie ein separates Terminal im Arbeitsverzeichnis, in dem Sie
gclusterextrahiert haben, und führen Sie den Befehlgcluster job logsaus:Nach Abschluss der ersten XLA-Kompilierung protokolliert der Koordinator den Ausgabefortschritt für jeden Schritt des 1.000-Schritte-Laufs im Format
completed step: <step>, seconds: ..., TFLOP/s/device: ..., loss: .... Der Trainingsverlust sinkt dabei von etwa1.57bei Schritt 5 auf etwa0.82bei Schritt 1.000. Bevor Sie mit dem nächsten Abschnitt fortfahren, warten Sie, bis Schritt 1000 abgeschlossen ist und die Ausgabe des Befehls./gcluster job listden Status vonsftalsSucceededanzeigt.Prüfen Sie im ursprünglichen Terminal, ob die SFT-Trainingsprüfpunkte in Ihrem Cloud Storage-Bucket generiert wurden:
Trainiertes Modell wieder in das Hugging Face-Format konvertieren
Nachdem die Trainingsarbeitslast abgeschlossen ist, konvertieren Sie das Modell wieder in das Hugging Face-Format:
Der Befehl enthält das Flag
--await-job-completion. Das bedeutet, dass er in Ihrem aktuellen Terminal wartet, bis die Konvertierung abgeschlossen ist.Optional: Wenn Sie die Live-Konvertierungslogs während der Ausführung des Jobs streamen möchten, öffnen Sie ein separates Terminal im Arbeitsverzeichnis, in dem Sie
gclusterextrahiert haben, und führen Sie den Befehlgcluster job logsaus:Prüfen Sie im ursprünglichen Terminal, ob die endgültigen Hugging Face Safetensors-Gewichtungen in Ihrem Cloud Storage-Bucket generiert wurden:
Bereinigen
Verwenden Sie den Befehl gcluster destroy, um die in dieser Anleitung erstellten Ressourcen zu löschen und zusätzliche Kosten zu vermeiden:
Nächste Schritte
- Weitere Informationen zu Cloud TPU finden Sie unter Einführung in Cloud TPU.
- Details zur Architektur und Konfiguration der
v6e-32-TPU finden Sie unter TPU v6e.