In dieser Anleitung wird beschrieben, wie Sie das Gemma 3-LLM (Large Language Model) in einem Slurm-Cluster mit mehreren Knoten abstimmen, in dem zwei A4-VM-Instanzen verwendet werden. In dieser Anleitung führen Sie die folgenden Schritte aus:
Benutzerdefiniertes Image erstellen
RDMA-Netzwerk konfigurieren
Führen Sie einen verteilten Job zur Feinabstimmung aus. Für effizientes Training auf mehreren Knoten verwenden Sie die Hugging Face Accelerate-Bibliothek mit Fully Sharded Data Parallel (FSDP).
Diese Anleitung richtet sich an Entwickler von maschinellem Lernen (ML), Plattformadministratoren und ‑operatoren sowie an Daten- und KI-Spezialisten, die daran interessiert sind, Slurm-Funktionen zur Jobplanung für die Verarbeitung von Arbeitslasten zum Feinabstimmen zu verwenden.
Ziele
Über Hugging Face auf Gemma 3 zugreifen
Bereiten Sie Ihre Umgebung vor.
Erstellen Sie einen A4-Slurm-Cluster.
Arbeitslast vorbereiten
Führen Sie einen Job zur Feinabstimmung aus.
den Job überwachen
bereinigen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
- Google Kubernetes Engine (GKE) Enterprise edition
- Filestore
- Cloud Storage
- Cloud Logging
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderliche API, falls sie noch nicht aktiviert ist:
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 file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com
-
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.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch Ihren Google Cloud Projektnamen.
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderliche API, falls sie noch nicht aktiviert ist:
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 file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com
-
Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/compute.admin, roles/iam.serviceAccountUser, roles/file.editor, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.USER_IDENTIFIER: Die Kennung für Ihr Nutzerkonto . Beispiel:myemail@example.comROLE: Die IAM-Rolle, die Sie Ihrem Nutzerkonto zuweisen.
- Aktivieren Sie das Standarddienstkonto für Ihr Google Cloud -Projekt:
gcloud iam service-accounts enable PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
Ersetzen Sie PROJECT_NUMBER durch die Projekt-ID. Informationen zum Abrufen Ihrer Projektnummer finden Sie unter Vorhandenes Projekt abrufen.
- Weisen Sie dem Standarddienstkonto die Rolle „Bearbeiter“ (
roles/editor) zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- Erstellen Sie lokale Anmeldedaten zur Authentifizierung 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
- Melden Sie sich in Ihrem Hugging Face-Konto an oder erstellen Sie ein Konto.
Über Hugging Face auf Gemma 3 zugreifen
So greifen Sie mit Hugging Face auf Gemma 3 zu:
Einwilligungsvereinbarung unterzeichnen, um Gemma 3 12B zu verwenden
Erstellen Sie ein Hugging Face-Zugriffstoken für
read. Klicken Sie auf Profil > Einstellungen > Zugriffstokens > +Neues Token erstellen.Kopieren und speichern Sie den Wert für das
read-Zugriffstoken. Sie benötigen sie später in dieser Anleitung.
Cluster Toolkit installieren
Weitere Informationen zur Verwendung der gcluster-CLI und zur Verwaltung von Clustern finden Sie in der Übersicht zum Cluster Toolkit.
Cluster Toolkit-Version vorbereiten:
Release herunterladen:
Definieren Sie den Pfad
gcluster:
Umgebung vorbereiten
So bereiten Sie die Umgebung vor:
Legen Sie die Standardumgebungsvariablen fest:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: die ID desGoogle Cloud -Projekts, in dem Sie den Cloud Storage-Bucket erstellen möchten.YOUR_ZONE: die Zone, in der sich Ihre Reservierung befindet.YOUR_REGION: die Region, in der Ihre Reservierung vorhanden ist.YOUR_RESERVATION_NAME: die URL oder der Name der Reservierung, die Sie zum Erstellen Ihres Slurm-Clusters verwenden möchten.YOUR_CLUSTER_NAME: Der Name des Slurm-Clusters, den Sie erstellen möchten.YOUR_GCS_BUCKET: Ein Name für Ihren Cloud Storage-Bucket, der den Anforderungen für Bucket-Namen entspricht.YOUR_HF_TOKEN: das Hugging Face-Zugriffstoken, das Sie im vorherigen Abschnitt erstellt haben.
Erstellen Sie einen Cloud Storage-Bucket:
A4-Slurm-Cluster erstellen
So erstellen Sie einen A4-Slurm-Cluster:
Erstellen Sie die Datei
a4high-slurm-deployment.yaml.Manifeste vorbereiten:
Erstellen Sie die Terraform-Manifeste mit dem Befehl
gcluster create:Patchen Sie die Manifeste:
Stellen Sie den Cluster bereit:
Der
gcluster deploy-Befehl ist ein zweistufiger Prozess, der so abläuft:In der ersten Phase wird ein benutzerdefiniertes Image mit vorinstallierter Software erstellt. Das kann bis zu 45 Minuten dauern.
In der zweiten Phase wird der Cluster mit diesem benutzerdefinierten Image bereitgestellt. Dieser Vorgang dauert in der Regel weniger lange als die erste Phase.
Wenn die erste Phase erfolgreich ist, die zweite jedoch fehlschlägt, können Sie versuchen, den Slurm-Cluster noch einmal bereitzustellen und dabei die erste Phase zu überspringen:
Arbeitslast vorbereiten
So bereiten Sie Ihre Arbeitslast vor:
Arbeitslastskripts erstellen
So erstellen Sie die Skripts, die von Ihrer Arbeitslast zum Feinabstimmen verwendet werden:
Erstellen Sie zum Einrichten der virtuellen Python-Umgebung die Datei
install_environment.shmit folgendem Inhalt:Erstellen Sie die Datei
accelerate_config.yamlmit dem folgenden Inhalt, um die Konfigurationen für den Feinabstimmungsjob anzugeben:Erstellen Sie die Datei
submit.slurmmit folgendem Inhalt, um die Aufgaben anzugeben, die für die Jobs in Ihrem Slurm-Cluster ausgeführt werden sollen:Wenn Sie die Abhängigkeiten für Ihren Feinabstimmungsjob angeben möchten, erstellen Sie die Datei
requirements.txtmit folgendem Inhalt:Erstellen Sie die Datei
train.pymit folgendem Inhalt, um die Anleitung für Ihren Job anzugeben:
Scripts in den Slurm-Cluster hochladen
So laden Sie die Skripts, die Sie im vorherigen Abschnitt erstellt haben, in den Slurm-Cluster hoch:
Legen Sie die Variable
LOGIN_NODEfest, indem Sie den Namen des Anmeldenodes für Ihren Cluster abrufen:Die Variable
LOGIN_NODEspeichert einen Wert ähnlich wie${CLUSTER_NAME}-login-001.Laden Sie Ihre Skripts in das Basisverzeichnis des Anmeldeknotens hoch:
Verbindung zum Slurm-Cluster herstellen
Stellen Sie eine Verbindung zum Anmeldeknoten her und übertragen Sie Ihr Hugging Face-Token auf die neue Sitzung:
Frameworks und Tools installieren
Richten Sie nach der Verbindung mit dem Anmeldeknoten eine virtuelle Python-Umgebung mit den erforderlichen Abhängigkeiten ein:
Fine-Tuning-Arbeitslast starten
So starten Sie die Arbeitslast für das Fine-Tuning:
Senden Sie den Job an den Slurm-Scheduler und rufen Sie die Job-ID ab:
Auf dem Anmeldeknoten in Ihrem Slurm-Cluster können Sie den Fortschritt des Jobs überwachen, indem Sie die Ausgabedateien prüfen, die in Ihrem
home-Verzeichnis erstellt wurden:Wenn Ihr Job erfolgreich gestartet wird, wird in der Datei
.erreine Fortschrittsanzeige angezeigt, die aktualisiert wird, während der Job ausgeführt wird.
Arbeitslast überwachen
Sie können die Nutzung der GPUs in Ihrem Slurm-Cluster überwachen, um zu prüfen, ob Ihr Fine-Tuning-Job effizient ausgeführt wird. Öffnen Sie dazu den folgenden Link in Ihrem Browser:
https://console.cloud.google.com/monitoring/metrics-explorer?project=PROJECT_ID&pageState=%7B%22xyChart%22%3A%7B%22dataSets%22%3A%5B%7B%22timeSeriesFilter%22%3A%7B%22filter%22%3A%22metric.type%3D%5C%22agent.googleapis.com%2Fgpu%2Futilization%5C%22%20resource.type%3D%5C%22gce_instance%5C%22%22%2C%22perSeriesAligner%22%3A%22ALIGN_MEAN%22%7D%2C%22plotType%22%3A%22LINE%22%7D%5D%7D%7D
Wenn Sie Ihre Arbeitslast überwachen, sehen Sie Folgendes:
GPU-Nutzung: Bei einem fehlerfreien Feinabstimmungsjob sollte die Nutzung aller 16 GPUs (acht GPUs für jede VM im Cluster) während des Trainings ansteigen und sich auf einem bestimmten Niveau stabilisieren.
Jobdauer: Der Job sollte etwa eine Stunde dauern.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Slurm-Cluster löschen
Führen Sie den Befehl gcluster destroy aus, um den Slurm-Cluster zu löschen:
Wenn Sie alle VPC-Netzwerke, Firewallregeln, Router, IP-Adressen und Subnetze löschen müssen, die mit dem Projekt verknüpft sind, gehen Sie so vor:
Projekt löschen
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID