In dieser Anleitung wird beschrieben, wie Sie ein Gemma 4-LLM (Large Language Model) mit 31 Milliarden Parametern (google/gemma-4-31b-it) in einem GKE-Autopilot-Cluster (Google Kubernetes Engine) mit mehreren Hosts und mehreren GPUs auf Google Cloudabstimmen. Dieser Cluster verwendet zwei virtuelle A4-Maschinen (VM) (a4-highgpu-8g) mit insgesamt 16 NVIDIA B200-GPUs.
Die drei Hauptprozesse, die in dieser Anleitung beschrieben werden, sind:
- Stellen Sie einen GKE-Cluster mit mehreren Hosts im Autopilot-Modus bereit.
- Erstellen Sie mit Cloud Build ein benutzerdefiniertes Container-Image mit den erforderlichen Abhängigkeiten für das Fine-Tuning.
- Orchestriert eine verteilte Multi-Host-Arbeitslast für das Fine-Tuning auf allen 16 GPUs mit Kubernetes JobSet und der Hugging Face Accelerate-Bibliothek mit Fully Sharded Data Parallel v2 (FSDP v2) und überträgt Checkpoints an den Hugging Face Hub.
Diese Anleitung richtet sich an Entwickler von maschinellem Lernen (ML), Forscher, Plattformadministratoren und ‑operatoren sowie Daten- und KI-Spezialisten, die GKE-Cluster auf Google Cloud bereitstellen, um LLMs auf mehreren Hosts abzustimmen.
Ziele
Über Hugging Face auf das Gemma 4-Modell zugreifen
Bereiten Sie Ihre Umgebung vor.
A4-GKE-Cluster mit mehreren Hosts erstellen und bereitstellen
Optimieren Sie das Gemma 4 31B-Modell auf 16 GPUs mit Kubernetes
JobSetund Hugging Face Accelerate mit FSDP v2.den Job überwachen
Die feinabgestimmten Adaptergewichte können Sie im Hugging Face-Hub ansehen.
bereinigen.
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.
Hinweis
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:
- Kubernetes Engine-Administrator (
roles/container.admin) - Compute-Administrator (
roles/compute.admin) - Storage-Administrator (
roles/storage.admin) - Artifact Registry-Administrator (
roles/artifactregistry.admin) - Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor) - Service Account User (
roles/iam.serviceAccountUser) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin) - Service Usage-Administrator ()
roles/serviceusage.serviceUsageAdmin
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.
Aktivieren Sie die erforderlichen APIs, falls noch nicht geschehen:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com Aktivieren Sie das Compute Engine-Standarddienstkonto für IhrGoogle Cloud -Projekt:
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_IDWeisen Sie dem Standard-Compute Engine-Dienstkonto die IAM-Rollen mit den geringsten Berechtigungen zu, die zum Erstellen des Container-Images und zum Ausführen des Fine-Tuning-Arbeitslast erforderlich sind:
ROLES=( "roles/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer" ) for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLESPrüfen Sie, ob die Rollen dem Compute Engine-Standarddienstkonto zugewiesen wurden:
echo "Displaying roles for ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com:" gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"Erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:
gcloud auth application-default login
OS Login für Ihr Projekt aktivieren:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
Über Hugging Face auf Gemma 4 zugreifen
So greifen Sie über Hugging Face auf Gemma 4 zu:
- Melden Sie sich bei Hugging Face an und akzeptieren Sie die Lizenzvereinbarung für Gemma 4.
- Erstellen Sie ein Hugging Face-Zugriffstoken für
write.
Klicken Sie auf Profil > Einstellungen > Zugriffstokens > + Neues Token erstellen. - Kopieren und speichern Sie den Wert für das
write-Zugriffstoken. Sie verwenden dieses Token, um das Basismodell herunterzuladen und optimierte Adapter-Checkpoints in den Hugging Face Hub zu übertragen, bevor GKE die GPU-Knoten herunterskaliert.
Umgebung vorbereiten
Legen Sie die folgenden Umgebungsvariablen fest, um die Umgebung vorzubereiten:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: die ID des Google Cloud Projekts, in dem Sie den GKE-Cluster erstellen möchten.
YOUR_CLUSTER_NAME: Der Name des GKE-Cluster, der erstellt werden soll.
YOUR_REGION: die Region, in der Sie Ihren GKE-Cluster erstellen möchten. Sie können den Cluster nur in der Region erstellen, in der Ihre Reservierung vorhanden ist.
YOUR_RESERVATION_NAME: Die Kennung für Ihre reservierte Kapazität.
YOUR_HF_TOKEN: Das Hugging Face-
write-Zugriffstoken, das Sie im vorherigen Abschnitt erstellt haben.YOUR_ARTIFACT_REGISTRY_LOCATION: die Google Cloud Region (z. B.
us-central1), in der Sie Ihr Artifact Registry -Repository erstellen möchten. Verwenden Sie dieselbe Region, die Sie für YOUR_REGION angegeben haben, um die Latenz beim Abrufen von Bildern zu minimieren.YOUR_NUMBER_OF_NODES: die Anzahl der A4-VM-Knoten in Ihrem Fine-Tuning-Job. Für dieses Tutorial mit mehreren Hosts mit 16 NVIDIA B200-GPUs auf zwei
a4-highgpu-8g-Instanzen legen Sie diesen Wert auf2fest.
GKE-Cluster mit mehreren Hosts im Autopilot-Modus erstellen
Erstellen Sie einen GKE-Cluster mit mehreren Hosts im Autopilot-Modus:
Das Erstellen des GKE-Cluster kann einige Minuten dauern. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf, um zu prüfen, ob Google Cloud das Erstellen Ihres Clusters abgeschlossen hat.
kubectl für die Kommunikation mit Ihrem GKE-Cluster konfigurieren
Konfigurieren Sie kubectl für die Kommunikation mit Ihrem GKE-Cluster:
Kubernetes-Secret für Hugging Face-Anmeldedaten erstellen
Erstellen Sie ein Kubernetes-Secret zum Speichern Ihres Hugging Face-Tokens:
Arbeitslast vorbereiten
So bereiten Sie Ihre Arbeitslast vor:
Arbeitslastskripts erstellen
Führen Sie die folgenden Schritte aus, um die Konfigurationsdateien und ‑skripts zu erstellen, die von Ihrer Arbeitslast zum Feinabstimmen verwendet werden:
Erstellen Sie ein Verzeichnis für die Arbeitslastskripts. Verwenden Sie dieses Verzeichnis als Arbeitsverzeichnis.
Erstellen Sie die Datei
cloudbuild.yaml, um das Container-Image für Ihre Arbeitslast mit Cloud Build zu erstellen und per Push in Artifact Registry zu übertragen:Erstellen Sie eine
Dockerfile-Datei, um die Umgebung zu definieren und die Abhängigkeiten zu installieren, die für den Fine-Tuning-Job erforderlich sind:Erstellen Sie die Datei
accel_fsdp_gemma4_config.yaml. Mit dieser Konfiguration wird Hugging Face Accelerate angewiesen,Gemma4TextDecoderLayermit FSDP v2 auf 16 GPUs auf zwei Hosts aufzuteilen:Erstellen Sie das
finetune.yamlKubernetes-ManifestJobSet:Erstellen Sie das Skript für die überwachte Feinabstimmung für
finetune.py:
Container für die Feinabstimmung mit Docker und Cloud Build erstellen
Artifact Registry-Docker-Repository erstellen:
Installieren Sie die benutzerdefinierten Ressourcendefinitionen (CRDs)
JobSet, die für die Orchestrierung von Arbeitslasten mit mehreren Hosts erforderlich sind:Senden Sie den Container-Build an Cloud Build. Verwenden Sie dazu das Verzeichnis
llm-finetuning-gemma, das Sie in einem vorherigen Schritt erstellt haben:Exportieren Sie die Container-Image-URL für mehrere Hosts. Sie benötigen sie später in dieser Anleitung, wenn Sie das
JobSet-Manifest bereitstellen:
Fine-Tuning-Arbeitslast starten
Führen Sie die folgenden Schritte aus, um Ihre verteilte Arbeitslast für das Fine-Tuning bereitzustellen und zu überwachen:
Ersetzen Sie Umgebungsvariablen im Manifest für die Feinabstimmung, um den Job für die Feinabstimmung zu erstellen:
Da Ihr Cluster im GKE Autopilot-Modus ausgeführt wird, kann es einige Minuten dauern, bis die beiden GPU-fähigen A4-Knoten bereitgestellt und das Container-Image abgerufen werden.
Beobachten Sie die Worker-Pods, bis beide den Status
Runninghaben:Nachdem die Worker-Pods in den Status
Runninggewechselt sind, streamen Sie die Trainingslogs:
Arbeitslast überwachen
Sie können die GPU-Auslastung in Ihrem GKE-Cluster überwachen, um zu prüfen, ob alle 16 GPUs auf beiden A4-Hosts aktiv Trainingsschritte verarbeiten. Generieren Sie den Observability-Link und öffnen Sie ihn in Ihrem Browser:
Wenn Sie Ihre Arbeitslast überwachen, sollten Sie mit folgendem Verhalten rechnen:
- GPU-Auslastung: Bei einem fehlerfreien verteilten Feinabstimmungsjob sollte die GPU-Auslastung aller 16 NVIDIA B200-GPUs während der Trainingsschritte ansteigen und sich bei 95–100 % stabilisieren.
- Jobdauer: Auf zwei
a4-highgpu-8g-Knoten (16 B200-GPUs) dauert der Fine-Tuning-Job mit 3 Epochen etwa 2,5 Stunden.
Abgestimmte Adaptergewichte ansehen
Wenn das Training abgeschlossen ist, können Sie sich die abgestimmten LoRA-Adaptergewichte und Checkpoints auf Hugging Face Hub unter https://huggingface.co/YOUR_HF_USERNAME/gemma-31b-text-to-sql ansehen.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Ressourcen, um zusätzliche Gebühren zu vermeiden.
Ressourcen löschen
Löschen Sie die Abstimmung
JobSet:So löschen Sie den GKE-Cluster:
Löschen Sie Ihr Artifact Registry-Repository: