Llama2 mit Megatron-LM auf virtuellen A3-Mega-Maschinen trainieren
Übersicht
In dieser Kurzanleitung erfahren Sie, wie Sie eine containerbasierte Megatron-LM-PyTorch-Arbeitslast auf A3 Mega ausführen. Der Code ist in diesem GitHub-Repository verfügbar: megatron-gke.
Hinweise
Mit den folgenden Schritten aktivieren Sie die Google Kubernetes Engine-API:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
Make sure that you have the following role or roles on the project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Zu IAM - Wählen Sie das Projekt aus.
- Klicken Sie auf Zugriff erlauben.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.
- Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
- Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
- Klicken Sie auf Speichern.
A3-Mega-Cluster erstellen
Erstellen Sie einen A3 Mega-GKE-Cluster mit GPUDirect-TCPXO und Multi-Networking. Weitere Informationen finden Sie unter GPU-Netzwerkbandbreite mit GPUDirect und Multi-Networking maximieren.
-
Umgebung einrichten
Umgebungsvariablen für einige gängige Parameter erstellen
export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION export ZONE=ZONE export PROJECT_ID=PROJECT_ID
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Der Name Ihres A3 Mega-GKE-Cluster, für den GPUDirect-TCPXO und Multi-Networking aktiviert sind.REGION
: die Region, in der Sie den Cluster erstellt habenZONE
: die Zone, in der Sie den Cluster erstellt haben.PROJECT_ID
: Ihre Google Cloud -Projekt-ID.
Konfigurieren Sie die Google Cloud CLI so, dass Ihre Google Cloud Anmeldedaten für die Authentifizierung verwendet werden:
gcloud auth login
Weitere Informationen finden Sie unter Für die Verwendung der Google Cloud CLI authentifizieren.
Installieren Sie
kubectl
und das GKE gcloud CLI-Plug-in:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Rufen Sie die Anmeldedaten für Ihren GKE-Cluster ab:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID}
Wenn Helm noch nicht installiert ist, installieren Sie es:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh && rm get_helm.sh sudo chmod +x /usr/local/bin/helm
Topologiesensitiven Planer zum Bereitstellen von Pods verwenden
Mit dem topologiesensitiven Planer können Sie Ihre GKE-Pods auf Knoten mit einer bestimmten GPU-Topologie bereitstellen.
In den folgenden kubectl
-Befehlen verwenden Sie die Dateien direkt aus einem Repository. Alternativ können Sie das Repository lokal klonen. Die kubectl
-Befehle können dann auf die lokalen Dateien verweisen.
Weitere Informationen finden Sie unter Topologie-Scheduler.
Dienstkonto einrichten
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Installieren Sie die Topologie-Scheduler-Skripts in einer ConfigMap:
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.py curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.py kubectl -n kube-system create configmap topology-scheduler-scripts \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py
Installieren Sie das DaemonSet für das Topologielabel und den Pod für den Topologieplaner:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.yaml $ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.yaml
Beobachten Sie die Aktionen des Topologieplaners:
kubectl -n kube-system logs topology-scheduler-pod
Arbeitslast ausführen
Dockerfile erstellen und in der Google Cloud Artifact Registry per Push übertragen
Erstellen Sie einen Cloud Storage-Bucket und ein Docker-Repository. Ersetzen Sie in
scripts/setup-and-configure-resources.sh script
die Bucket- und Repository-Namen durch die von Ihnen erstellten Namen und führen Sie das Skript aus:bash scripts/setup-and-configure-resources.sh
Erstellen Sie das
pytorch-megatron:23.11-py3
-Image und übertragen Sie es per Push in Ihr Repository. Achten Sie darauf, dass der Name des Docker-Repositorys in der Dateiscripts/build-and-push-docker-image.sh
mit dem Namen des Repositorys übereinstimmt, den Sie im Skriptscripts/setup-and-configure-resources.sh
verwendet haben. Sie können den Docker-Image-Tag-Namen auch vor dem Push bearbeiten.bash scripts/build-and-push-docker-image.sh
Megatron-LM Llama2-Benchmark starten
Bearbeiten Sie die Datei
helm/values.yaml
, um den Cloud Storage-Bucket und das Docker-Image anzugeben, die Sie in den vorherigen Abschnitten erstellt haben. Einige Beispielkonfigurationen finden Sie unter sample-configurations.Optional: Sie können die Datei
selected-configuration.sh
auch bearbeiten, um alle Änderungen anzugeben, die Sie an der Standard-Helm-Konfiguration vorgenommen haben.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Ersetzen Sie
HELM_EXPERIMENT_NAME
durch einen beliebigen Namen für den Test.
Das Experiment schreibt Messwerte aus dem Nsight Systems-Profilierungstool in den Cloud Storage-Bucket, der im Verzeichnis megatron-experiments
angegeben ist.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Löschen Sie den GKE-Cluster:
Rufen Sie die Seite Cluster auf:
- Aktivieren Sie das Kästchen für CLUSTER_NAME.
- Klicken Sie auf Löschen.
- Geben Sie CLUSTER_NAME ein und klicken Sie auf Löschen, um den Löschvorgang zu bestätigen.
Cloud Storage-Bucket löschen
Rufen Sie die Seite Buckets auf.
Klicken Sie das Kästchen für den Cloud Storage-Bucket an, den Sie für diese Kurzanleitung erstellt haben.
Klicken Sie auf
Löschen.Geben Sie
DELETE
ein und klicken Sie auf Löschen, um den Löschvorgang zu bestätigen.