In dieser Anleitung wird beschrieben, wie Sie ein Gemma 4-LLM (Large Language Model) in einem GKE-Cluster (Google Kubernetes Engine) mit einem einzelnen Host und mehreren GPUs in Google Cloudfeinabstimmen. Dieser Cluster verwendet eine einzelne virtuelle A4-Maschine (VM) mit 8 angehängten NVIDIA B200-GPUs.
Die beiden Hauptprozesse, die in dieser Anleitung beschrieben werden, sind:
- Einen leistungsstarken GKE-Cluster mit GKE Autopilot bereitstellen. Im Rahmen dieser Bereitstellung verwenden Sie Cloud Build, um ein benutzerdefiniertes Container-Image mit der erforderlichen vorinstallierten Software zu erstellen.
- Nachdem der Cluster bereitgestellt wurde, führen Sie einen Feinabstimmungsjob aus, der Fully Sharded Data Parallel (FSDP) verwendet, um das Modell auf alle acht GPUs eines einzelnen A4-Knotens (
a4-highgpu-8g) aufzuteilen. Der Job verwendet die Scripts, die zu dieser Anleitung gehören, und nutzt die Hugging Face Accelerate-Bibliothek.
Diese Anleitung richtet sich an ML-Entwickler, Forscher, Plattformadministratoren und -operatoren sowie an Daten- und KI-Spezialisten, die GKE-Cluster auf Google Cloud bereitstellen möchten, um LLMs zu trainieren.
Ziele
Greifen Sie über Hugging Face auf das Gemma 4-Modell zu.
Bereiten Sie Ihre Umgebung vor.
A4-GKE-Cluster erstellen und bereitstellen
Optimieren Sie das Gemma 4-Modell mit der Hugging Face Accelerate-Bibliothek mit vollständig fragmentierter Datenparallelität (Fully Sharded Data Parallelism, FSDP).
den Job überwachen
bereinigen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Google Kubernetes Engine (GKE)
- Artifact Registry
- Cloud Build
- Cloud Storage
- Cloud Logging
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
Aktivieren Sie die erforderlichen APIs, falls sie noch nicht aktiviert sind:
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 Inhaberrolle (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 Standarddienstkonto für Ihr Google Cloud -Projekt:
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@" \ --project=YOUR_PROJECT_ID
Weisen Sie dem Standarddienstkonto die Rollen zu, die es zum Ausführen der Feinabstimmungsarbeitslast benötigt:
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@" \ --role="${role}" 1>/dev/null done unset ROLES
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Rollen zugewiesen wurden:
gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@" \ --format="table(bindings.role)"Erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:
gcloud auth application-default login
Aktivieren Sie OS Login für Ihr Projekt:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
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) - Dienstkontoadministrator (
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.
Über Hugging Face auf Gemma 4 zugreifen
So greifen Sie über Hugging Face auf Gemma 4 zu:
- Bei Hugging Face anmelden
- Erstellen Sie ein Hugging Face-
write-Zugriffstoken.
Klicken Sie auf Mein Profil > Einstellungen > Zugriffstokens > + Neues Token erstellen. - Kopieren und speichern Sie den Wert des
write access-Tokens. Sie benötigen sie später in dieser Anleitung.
Umgebung vorbereiten
Legen Sie Folgendes fest, um Ihre 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 zu erstellenden GKE-Cluster.
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 sich Ihre Reservierung befindet.
YOUR_RESERVATION_NAME: die Kennung für Ihre reservierte Kapazität.
YOUR_HF_TOKEN: Das Hugging Face-Zugriffstoken, das Sie im vorherigen Abschnitt erstellt haben.
YOUR_ARTIFACT_REGISTRY_LOCATION: die Google Cloud Region, in der Sie Ihr Artifact Registry-Repository erstellen möchten. Um die Latenz beim Abrufen von Images zu minimieren, empfehlen wir, dieselbe Region zu verwenden, die Sie für YOUR_REGION verwendet haben.
GKE-Cluster im Autopilot-Modus erstellen
Führen Sie den folgenden Befehl aus, um einen GKE-Cluster im Autopilot-Modus zu erstellen:
Das Erstellen des GKE-Cluster kann einige Zeit dauern. Wenn Sie prüfen möchten, ob Google Cloud die Erstellung des Clusters abgeschlossen hat, rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.
Kubernetes-Secret für Hugging Face-Anmeldedaten erstellen
So erstellen Sie ein Kubernetes-Secret für Hugging Face-Anmeldedaten:
Konfigurieren Sie
kubectlfür die Kommunikation mit Ihrem GKE-Cluster:Erstellen Sie ein Kubernetes-Secret, um Ihr Hugging Face-Token zu speichern:
Arbeitslast vorbereiten
So bereiten Sie Ihre Arbeitslast vor:
Arbeitslastskripts erstellen
So erstellen Sie die Skripts, die von Ihrer Feinabstimmungsarbeitslast verwendet werden:
Erstellen Sie ein Verzeichnis für die Arbeitslastskripts. Verwenden Sie dieses Verzeichnis als Arbeitsverzeichnis.
Erstellen Sie die Datei
cloudbuild.yaml, um Google Cloud Build zu verwenden. Mit dieser Datei wird der Arbeitslastcontainer erstellt und in Artifact Registry gespeichert:Erstellen Sie eine
Dockerfile-Datei, um den Job für die Feinabstimmung auszuführen:Erstellen Sie die Datei
accel_fsdp_gemma4_config.yaml. Diese Konfigurationsdatei weist Hugging Face Accelerate an, den Abstimmungsjob mithilfe von FSDP auf die acht lokalen GPUs auf Ihrem einzelnen Host aufzuteilen:Erstellen Sie die Datei
finetune.yaml.Erstellen Sie die Datei
finetune.py.
Container für die Feinabstimmung mit Docker und Cloud Build erstellen
Artifact Registry-Docker-Repository erstellen:
Führen Sie im Verzeichnis
llm-finetuning-gemma, das Sie in einem vorherigen Schritt erstellt haben, den folgenden Befehl aus, um das Feinabstimmungs-Image zu erstellen und per Push an Artifact Registry zu senden.Exportieren Sie die Bild-URL. Sie benötigen sie in einem späteren Schritt dieser Anleitung:
Arbeitslast für die Feinabstimmung starten
So starten Sie Ihre Feinabstimmungs-Arbeitslast:
Wenden Sie das Manifest für die Feinabstimmung an, um den Job für die Feinabstimmung zu erstellen:
Da Sie Cluster im GKE-Autopilot-Modus verwenden, kann es einige Minuten dauern, bis der GPU-fähige Knoten gestartet wird.
Überwachen Sie den Job mit folgendem Befehl:
Prüfen Sie die Logs des Jobs, nachdem die Pods ausgeführt werden:
Die Jobressource lädt die Modelldaten herunter und optimiert das Modell dann auf allen acht GPUs. Der Download dauert etwa fünf Minuten. Nach Abschluss des Downloads dauert die Feinabstimmung etwa 45 Minuten. Der Job speichert alle 20 Schritte einen Prüfpunkt und überträgt den optimierten LoRA-Adapter (Low-Rank Adaptation) in ein privates Hugging Face-Repository mit dem Namen
gemma-31b-text-to-sql.Rufen Sie nach Abschluss des Jobs die URL Ihres optimierten Modells auf Hugging Face ab und öffnen Sie die URL in Ihrem Browser:
Arbeitslast überwachen
Sie können die Nutzung der GPUs in Ihrem GKE-Cluster überwachen, um zu prüfen, ob Ihr Feinabstimmungsjob effizient ausgeführt wird. Öffnen Sie dazu den folgenden Link in Ihrem Browser:
Wenn Sie Ihre Arbeitslast überwachen, können Sie Folgendes sehen:
- GPU-Nutzung: Bei einem fehlerfreien Feinabstimmungsjob steigt die Nutzung aller 8 GPUs während des Trainings und stabilisiert sich auf einem hohen Niveau.
- Jobdauer: Der Job sollte auf dem angegebenen A4-Cluster etwa 45 Minuten dauern.
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Ressourcen, um zusätzliche Kosten zu vermeiden.
Ressourcen löschen
Führen Sie den folgenden Befehl aus, um Ihren Feinabstimmungsjob zu löschen:
Führen Sie den folgenden Befehl aus, um den GKE-Cluster zu löschen:
Führen Sie den folgenden Befehl aus, um Ihr Artifact Registry-Repository zu löschen: