Entraîner Llama2 avec Megatron-LM sur des machines virtuelles A3 Mega
Présentation
Dans ce guide de démarrage rapide, vous allez apprendre à exécuter une charge de travail PyTorch Megatron-LM basée sur un conteneur sur A3 Mega. Le code est disponible dans ce dépôt GitHub : megatron-gke.
Avant de commencer
Procédez comme suit pour activer l'API Google Kubernetes Engine (GKE) :
- 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 colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
- Cliquez sur Enregistrer.
Créer un cluster A3 Mega
Créez un cluster GKE A3 Mega avec GPUDirect-TCPXO et le multiréseau. Pour en savoir plus, consultez la page Maximiser la bande passante réseau de GPU avec GPUDirect-TCPX et le multiréseau.
-
Configurer votre environnement
Créer des variables d'environnement pour certains paramètres courants
export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION export ZONE=ZONE export PROJECT_ID=PROJECT_ID
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster GKE Mega A3 sur lequel GPUDirect-TCPXO et le multiréseau sont activés.REGION
: région dans laquelle vous avez créé le cluster.ZONE
: zone dans laquelle vous avez créé votre cluster.PROJECT_ID
: ID de votre projet Google Cloud.
Configurez Google Cloud CLI de manière à utiliser vos identifiants Google Cloud pour l'authentification :
gcloud auth login
Pour en savoir plus, consultez la page S'authentifier pour utiliser Google Cloud CLI.
Installez
kubectl
et le plug-in gcloud CLI GKE :sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Récupérez les identifiants de votre cluster GKE :
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID}
Si ce n'est pas déjà fait, installez Helm :
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
Utiliser le programmeur basé sur la topologie pour déployer vos pods
Vous pouvez utiliser le programmeur basé sur la topologie pour déployer vos pods GKE sur des nœuds ayant une topologie GPU spécifiée.
Dans les commandes kubectl
suivantes, vous utiliserez les fichiers directement à partir d'un dépôt. Vous pouvez également cloner le dépôt localement, ce qui permet aux commandes kubectl
de référencer les fichiers locaux.
Pour en savoir plus, consultez la section Programmeur de topologie.
Configurez le compte de service :
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Installez les scripts du programmeur de topologie dans un fichier 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
Installez le DaemonSet du libellé de topologie et le pod du programmeur de topologie :
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
Observez les actions du programmeur de topologie :
kubectl -n kube-system logs topology-scheduler-pod
Exécuter la charge de travail
Créer le Dockerfile et le transférer vers Google Cloud Artifact Registry
Créez un bucket Cloud Storage et un dépôt Docker. Dans le fichier
scripts/setup-and-configure-resources.sh script
, remplacez les noms du bucket et du dépôt par ceux que vous avez créés, puis exécutez le script :bash scripts/setup-and-configure-resources.sh
Créez et transférez l'image
pytorch-megatron:23.11-py3
vers votre dépôt. Assurez-vous que le nom du dépôt Docker dans le fichierscripts/build-and-push-docker-image.sh
correspond au nom du dépôt que vous avez utilisé dans le scriptscripts/setup-and-configure-resources.sh
. Vous pouvez également modifier le nom du tag de l'image Docker avant le transfert.bash scripts/build-and-push-docker-image.sh
Lancer le benchmark Megatron-LM Llama2
Modifiez le fichier
helm/values.yaml
pour spécifier le bucket Cloud Storage et l'image Docker créées dans les sections précédentes. Pour obtenir des exemples de configurations, consultez la section sample-configurations.Facultatif : Vous pouvez également modifier le fichier
selected-configuration.sh
pour spécifier les modifications apportées à la configuration Helm par défaut.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Remplacez
HELM_EXPERIMENT_NAME
par un nom arbitraire pour votre test.
Le test écrit les métriques de l'outil de profilage des systèmes Nsight dans le bucket Cloud Storage spécifié dans le répertoire megatron-experiments
.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :
Supprimez le cluster GKE :
Accédez à la page Clusters :
- Sélectionnez la case à cocher correspondant à CLUSTER_NAME.
- Cliquez sur Supprimer.
- Pour confirmer la suppression, saisissez CLUSTER_NAME, puis cliquez sur Supprimer.
Supprimer le bucket Cloud Storage
Accédez à la page Buckets :
Cochez la case correspondant au bucket Cloud Storage que vous avez créé dans ce guide de démarrage rapide.
Cliquez sur
Supprimer.Pour confirmer la suppression, saisissez
DELETE
, puis cliquez sur Supprimer.