In dieser Anleitung wird beschrieben, wie Sie ein mistralai/Mixtral-8x7B-v0.1-Modell in einem Slurm-Cluster mit mehreren Knoten und mehreren GPUs auf Google Cloudabstimmen. Der Cluster verwendet zwei a4-highgpu-8g-VM-Instanzen mit jeweils 8 NVIDIA B200-GPUs.
Die beiden in dieser Anleitung beschriebenen Hauptprozesse sind:
- Stellen Sie einen leistungsstarken Slurm-Cluster in Produktionsqualität mit demGoogle Cloud Cluster Toolkit bereit. Im Rahmen dieser Bereitstellung erstellen Sie ein benutzerdefiniertes VM-Image mit der erforderlichen vorinstallierten Software. Außerdem richten Sie ein freigegebenes Lustre-Dateisystem ein und konfigurieren Hochgeschwindigkeitsnetzwerke.
- Nachdem der Cluster bereitgestellt wurde, führen Sie einen verteilten Feinabstimmungsjob mit den Skripts aus, die in dieser Anleitung enthalten sind. Für den Job wird PyTorch Fully Sharded Data Parallel (FSDP) verwendet, auf das Sie über die Hugging Face-Bibliothek Transformer Reinforcement Learning (TRL) zugreifen.
Diese Anleitung richtet sich an Entwickler von maschinellem Lernen (ML), Forscher, Plattformadministratoren und ‑betreiber sowie Daten- und KI-Spezialisten, die daran interessiert sind, eine KI-Arbeitslast auf mehrere Knoten und GPUs zu verteilen.
Ziele
- Über Hugging Face auf Mixtral zugreifen
- Cluster Toolkit installieren
- Umgebung vorbereiten
- Einen produktionsreifen A4-High-GPU-Slurm-Cluster erstellen und bereitstellen
- Eine Umgebung mit mehreren Knoten für verteiltes Training mit FSDP konfigurieren
- Das Mixtral-Modell mit der Hugging Face-Klasse
trl.SFTTraineroptimieren. - Daten auf lokalen SSDs bereitstellen.
- den Job überwachen
- 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
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie 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 -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- 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 „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere 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 den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderliche API:
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 lustre.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 -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- 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 „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere 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 den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die erforderliche API:
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 lustre.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
- Aktivieren Sie OS Login für Ihr Projekt:
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- Melden Sie sich in einem Hugging Face-Konto an oder erstellen Sie ein Konto.
- Installieren Sie die Abhängigkeiten, die Sie für die Verwendung des Cluster Toolkits benötigen.
Über Hugging Face auf Mixtral zugreifen
So greifen Sie über Hugging Face auf Mixtral zu:
- Melden Sie sich bei Hugging Face an und sehen Sie sich das Mixtral-Modell an.
- Erstellen Sie ein Hugging Face-Zugriffstoken für
read. - Kopieren und speichern Sie den Tokenwert. Sie benötigen sie später in dieser Anleitung.
Cluster Toolkit installieren
Cluster Toolkit ist ein Open-Source-Tool, das die Bereitstellung von Arbeitslasten aus den Bereichen Hochleistungs-Computing (HPC), künstliche Intelligenz (KI) und maschinelles Lernen (ML) auf Google Cloudvereinfacht. Weitere Informationen zur Verwendung von gcluster und zur Verwaltung von Clustern finden Sie in der Übersicht zum Cluster Toolkit.
Cluster Toolkit-Version vorbereiten:
Laden Sie das Release herunter:
Definieren Sie den Pfad
gcluster:
Umgebung vorbereiten
So bereiten Sie die Umgebung vor:
Legen Sie die Standardumgebungsvariablen fest:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: der Name des Google Cloud -Projekts, in dem Sie den Slurm-Cluster 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 der Bereitstellung. Verwenden Sie einen kurzen Namen, der nur Buchstaben und Ziffern enthält (z. B.a4high). Dieser Name wird auch dem vom Deployment erstellten Slurm-Cluster zugewiesen.YOUR_GCS_BUCKET: Der Name des Buckets, in dem Sie die Ergebnisse des Trainings-Checkpoints speichern. Geben Sie einen vorhandenen Bucket an oder erstellen Sie einen neuen. Bevor Sie einen Bucket erstellen, sollten Sie sich mit den Anforderungen für Bucket-Namen vertraut machen.YOUR_HF_TOKEN: das Hugging Face-Token, das Sie in einem früheren Schritt erstellt haben.
Erstellen Sie einen Cloud Storage-Bucket:
A4-Slurm-Cluster erstellen
So erstellen Sie einen A4-Slurm-Cluster:
Überschreiben Sie die Datei
a4high-slurm-deployment.yamlim Verzeichnisexamples/machine-learning/a4-highgpu-8gmit Ihren Umgebungsvariablen, indem Sie den folgenden Befehl ausführen:Öffnen Sie die Datei
a4high-slurm-blueprint.yamlim Verzeichnisexamples/machine-learning/a4-highgpu-8gund bearbeiten Sie sie so, dass Managed Lustre für das freigegebene Verzeichnis/homeverwendet wird:- Entfernen Sie den Standardblock für das
homefs-Modul mitsource: modules/file-system/filestore. - Aktivieren Sie die Module
lustrefs(homefs-Block mitremote_mount: lustrefs) undprivate-service-access. - Konfigurieren Sie im Block
varsFolgendes:- Ändern Sie den Wert für
install_managed_lustrein/var/tmp/slurm_vars.jsonintrue. - Setzen Sie den Parameter
per_unit_storage_throughputauf500. - Setzen Sie den Parameter
lustre_size_gibauf36000. - Entfernen Sie die Auskommentierung von
lustre_instance_id: lustre-instance. - Kommentieren Sie nicht verwendete
filestore_ip_rangeaus oder entfernen Sie sie.
- Ändern Sie den Wert für
- Entfernen Sie den Standardblock für das
Stellen Sie den Cluster bereit:
Mit dem Befehl
./gcluster deploywird ein zweistufiger Prozess gestartet:- In der ersten Phase wird ein benutzerdefiniertes Image mit vorinstallierter Software erstellt. Das kann bis zu 35 Minuten dauern.
- In der zweiten Phase wird der Cluster mit diesem benutzerdefinierten Image bereitgestellt. Dieser Vorgang sollte schneller abgeschlossen sein als die erste Phase.
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 die Datei
install_environment.shmit folgendem Inhalt, um die virtuelle Python-Umgebung einzurichten:Erstellen Sie eine
requirements-fsdp.txt-Datei mit folgendem Inhalt, um die Python-Abhängigkeiten für das Trainingsskript anzugeben:Geben Sie
train-mixtral.pyals Haupttrainingsskript an:Erstellen Sie die Datei
train-mixtral.shmit dem folgenden Inhalt, um die Aufgaben anzugeben, die für die Jobs in Ihrem Slurm-Cluster ausgeführt werden sollen:
Skripts in Ihren Slurm-Cluster hochladen
So laden Sie die im vorherigen Abschnitt erstellten Skripts in den Slurm-Cluster hoch:
Legen Sie die Variable
LOGIN_NODEfest, indem Sie den Namen des Anmeldenknotens für Ihren Cluster abrufen:Die Variable
LOGIN_NODEspeichert einen Wert ähnlich wie${DEPLOYMENT_NAME}-login-001.Firewallregel erstellen
Laden Sie Ihre Skripts in das Basisverzeichnis des Anmeldeknotens hoch:
Verbindung zum Slurm-Cluster herstellen
Stellen Sie eine Verbindung zum Slurm-Cluster her, indem Sie über SSH eine Verbindung zum Anmeldeknoten herstellen:
Frameworks und Tools installieren
Nachdem Sie eine Verbindung zum Anmeldeknoten hergestellt haben, installieren Sie die erforderlichen Frameworks und Tools, indem Sie das Installationsskript auf einem Rechenknoten ausführen:
Mit diesem Befehl wird die virtuelle Umgebung eingerichtet, alle Abhängigkeiten werden installiert und die Mixtral-Modellgewichte werden in ~/Mixtral-8x7B-v0.1 heruntergeladen. Das kann über 30 Minuten dauern.
Wenn Sie diesen Schritt über srun ausführen, wird das Installationsskript vom Anmeldeknoten an einen zugewiesenen Rechenknoten delegiert. So kann das Skript während der Kompilierung auf GPU-Treiber zugreifen.
Arbeitslast für das Feinabstimmen starten
So starten Sie Ihre Trainingsarbeitslast:
Senden Sie den Job an den Slurm-Planer:
Arbeitslast überwachen
So können Sie den Fortschritt Ihres Feinabstimmungsjobs überwachen:
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 sich im Laufe des Jobs aktualisiert.Der Job besteht aus zwei Hauptphasen:
- Das große Basismodell wird auf die lokale SSD jedes Rechenknotens kopiert.
- Der Trainingsjob, der beginnt, sobald das Kopieren des Modells abgeschlossen ist.
Die Ausführung des gesamten Jobs dauert etwa 60 Minuten.
Sie können auch 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=YOUR_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%7DAlternativ können Sie den Befehl direkt im Terminal eingeben:
Wenn Sie Ihre Arbeitslast überwachen, sehen Sie Folgendes:
GPU-Nutzung: Bei einem fehlerfreien Fine-Tuning-Job 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.
Ressourcen löschen
Führen Sie die folgenden Befehle aus, um die Ressourcen zu löschen, die Sie in dieser Anleitung erstellt haben:
Wenn Sie Ihren Slurm-Cluster löschen möchten, wechseln Sie zum Verzeichnis
cluster-toolkitund führen Sie den folgenden Befehl aus:Löschen Sie den Bucket:
Wenn Sie ein Packer-Image löschen möchten, öffnen Sie Ihren Webbrowser, rufen Sie die folgende Seite auf, suchen Sie nach dem gewünschten Image und klicken Sie auf „Löschen“.
Projekt löschen
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Slurm-Cluster neu bereitstellen
- Netzwerkleistung in einem Slurm-Cluster testen
- VMs in einem Slurm-Cluster überwachen
- Serving-Endpunkt erstellen: Sobald Sie Ihr feinabgestimmtes Modell haben, können Sie es mit Google Kubernetes Engine (GKE) oder Vertex AI auf einem Serving-Endpunkt bereitstellen, um es für die Inferenz zugänglich zu machen.
- Empfohlene Speicherdienste für KI- und ML-Workloads