Addestra Llama2 con Megatron-LM su macchine virtuali A3 Mega
Panoramica
In questa guida rapida, imparerai a eseguire un carico di lavoro Megatron-LM basato su container PyTorch su A3 Mega. Il codice è disponibile in questo repository GitHub: megatron-gke.
Prima di iniziare
Per abilitare l'API Google Kubernetes Engine (GKE), segui questi passaggi:
- 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.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.enable
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.enable
permission. Learn how to grant roles. -
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.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Crea variabili di ambiente per alcuni parametri comuni
export CLUSTER_NAME=CLUSTER_NAME export CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION export PROJECT_ID=PROJECT_ID
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster GKE A3 Mega in cui sono abilitati GPUDirect-TCPXO e il networking multiplo.CONTROL_PLANE_LOCATION
: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.PROJECT_ID
: il tuo ID progetto Google Cloud .
Configura Google Cloud CLI in modo da utilizzare le tue credenziali Google Cloud per l'autenticazione:
gcloud auth login
Per ulteriori informazioni, consulta Autenticarsi per utilizzare Google Cloud CLI.
Installa
kubectl
e il plug-in gcloud CLI per GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Recupera le credenziali per il tuo cluster GKE:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --location=${CONTROL_PLANE_LOCATION} \ --project=${PROJECT_ID}
Se non è già installato, installa 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
Configura il account di servizio:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Installa gli script dello scheduler della topologia in un 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
Installa il daemonset dell'etichetta della topologia e il pod dello scheduler della topologia:
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
Osserva le azioni dello scheduler della topologia:
kubectl -n kube-system logs topology-scheduler-pod
Crea un bucket Cloud Storage e un repository Docker. In
scripts/setup-and-configure-resources.sh script
, sostituisci i nomi del bucket e del repository con quelli che hai creato, quindi esegui lo script:bash scripts/setup-and-configure-resources.sh
Crea ed esegui il push dell'immagine
pytorch-megatron:23.11-py3
nel repository. Assicurati che il nome del repository Docker nel filescripts/build-and-push-docker-image.sh
corrisponda al nome del repository che hai utilizzato nello scriptscripts/setup-and-configure-resources.sh
. Puoi anche modificare il nome del tag dell'immagine Docker prima di eseguire il push.bash scripts/build-and-push-docker-image.sh
Modifica il file
helm/values.yaml
per specificare il bucket Cloud Storage e l'immagine Docker creati nelle sezioni precedenti. Per alcune configurazioni di esempio, consulta sample-configurations.(Facoltativo) Puoi anche modificare il file
selected-configuration.sh
per specificare eventuali modifiche apportate alla configurazione Helm predefinita.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Sostituisci
HELM_EXPERIMENT_NAME
con un nome arbitrario per l'esperimento.- Seleziona la casella di controllo per CLUSTER_NAME.
- Fai clic su Elimina.
- Per confermare l'eliminazione, digita CLUSTER_NAME e fai clic su Elimina.
Seleziona la casella di controllo per il bucket Cloud Storage che hai creato per questa guida rapida.
Fai clic su
Elimina.Per confermare l'eliminazione, digita
DELETE
e fai clic su Elimina.
Crea un cluster A3 Mega
Crea un cluster GKE A3 Mega con GPUDirect-TCPXO e networking multiplo. Per ulteriori informazioni, consulta Massimizzare la larghezza di banda di rete della GPU con GPUDirect e il multi-networking.
Configura l'ambiente
Utilizzare lo scheduler con riconoscimento della topologia per eseguire il deployment dei pod
Puoi utilizzare lo scheduler topologia consapevole per eseguire il deployment dei pod GKE sui nodi con una topologia GPU specificata.
Nei seguenti comandi
kubectl
utilizzerai i file direttamente da un repository. In alternativa, puoi clonare il repository in locale e i comandikubectl
possono fare riferimento ai file locali.Per saperne di più, consulta Pianificatore della topologia.
Esegui il workload
Crea il Dockerfile ed eseguine il push su Google Cloud Artifact Registry
Avviare il benchmark Megatron-LM Llama2
L'esperimento scrive le metriche dello strumento di profilazione Nsight Systems nel bucket Cloud Storage specificato nella directory
megatron-experiments
.Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.
Elimina il cluster GKE:
Vai alla pagina Cluster:
Elimina il bucket Cloud Storage
Vai alla pagina Bucket:
Passaggi successivi
-