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:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Prüfen Sie, ob Sie die folgenden Rollen für das Projekt haben: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Rollen prüfen
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
-
Suchen Sie in der Spalte Hauptkonto nach allen Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, angegeben sind. Fragen Sie Ihren Administrator, zu welchen Gruppen Sie gehören.
- Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Spalte Rolle, um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.
Rollen zuweisen
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie das Projekt aus.
- Klicken Sie auf Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.
- Klicken Sie auf Rolle auswählen und suchen Sie nach der Rolle.
- Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
- 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 CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION 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.CONTROL_PLANE_LOCATION: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.PROJECT_ID: Projekt-ID in Google Cloud .
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
kubectlund 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} \ --location=${CONTROL_PLANE_LOCATION} \ --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.pyInstallieren 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.yamlBeobachten 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 scriptdie Bucket- und Repository-Namen durch die von Ihnen erstellten Namen und führen Sie das Skript dann 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.shmit dem Namen des Repositorys übereinstimmt, den Sie im Skriptscripts/setup-and-configure-resources.shverwendet haben. Sie können den Docker-Image-Tag-Namen auch vor dem Hochladen 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 auch die Datei
selected-configuration.shbearbeiten, 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_NAMEdurch 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
DELETEein und klicken Sie auf Löschen, um den Löschvorgang zu bestätigen.