Entrena Llama2 con Megatron-LM en máquinas virtuales A3 Mega
Descripción general
En esta guía de inicio rápido, aprenderás a ejecutar una carga de trabajo de PyTorch basada en contenedores Megatron-LM en A3 Mega. El código está disponible en este repositorio de GitHub: megatron-gke.
Antes de comenzar
Siga los pasos que se indican a continuación para habilitar la API de 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.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Crea un clúster A3 Mega
Crea un clúster de GKE A3 Mega con GPUDirect-TCPXO y varias redes. Para obtener más información, consulta Maximiza el ancho de banda de red de la GPU con GPUDirect y varias redes.
-
Configure su entorno
Crea variables de entorno para algunos parámetros comunes
export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION export ZONE=ZONE export PROJECT_ID=PROJECT_ID
Reemplaza lo siguiente:
CLUSTER_NAME
: el nombre del clúster de GKE Mega A3 que tiene habilitadas GPUDirect-TCPXO y redes múltiples.REGION
: Es la región en la que creaste el clúster.ZONE
: Es la zona en la que creaste el clúster.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud.
Configura Google Cloud CLI para usar tus credenciales de Google Cloud para la autenticación:
gcloud auth login
Si deseas obtener más información, consulta Autentica para usar Google Cloud CLI.
Instala
kubectl
y el complemento de gcloud CLI de GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Recupera las credenciales para tu clúster de GKE:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID}
Si aún no lo está, instala 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
Usa un programador adaptado a la topología para implementar tus Pods
Puedes usar el programador adaptado a la topología para implementar tus Pods de GKE en nodos que tienen una topología de GPU especificada.
En los siguientes comandos de kubectl
, usarás los archivos directamente desde un repositorio. De manera alternativa, puedes clonar el repositorio de forma local y los comandos kubectl
pueden hacer referencia a los archivos locales en su lugar.
Para obtener más información, consulta Programador de topologías.
Configura la cuenta de servicio:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Instala las secuencias de comandos del programador de topología en 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
Instala el daemonset de la etiqueta de topología y el Pod del programador de topología:
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
Observa las acciones del programador de topología:
kubectl -n kube-system logs topology-scheduler-pod
Ejecuta la carga de trabajo
Compila el Dockerfile y envíalo a Artifact Registry de Google Cloud
Crea un bucket de Cloud Storage y un repositorio de Docker. En
scripts/setup-and-configure-resources.sh script
, reemplaza los nombres del bucket y del repositorio por los que creaste y, luego, ejecuta la secuencia de comandos:bash scripts/setup-and-configure-resources.sh
Compila y envía la imagen
pytorch-megatron:23.11-py3
a tu repositorio. Asegúrate de que el nombre del repositorio de Docker en el archivoscripts/build-and-push-docker-image.sh
coincida con el nombre del repositorio que usaste en la secuencia de comandosscripts/setup-and-configure-resources.sh
. También puedes editar el nombre de la etiqueta de imagen de Docker antes de enviarla.bash scripts/build-and-push-docker-image.sh
Lanza la comparativa de Megatron-LM Llama2
Edita el archivo
helm/values.yaml
para especificar el bucket de Cloud Storage y la imagen de Docker creada en las secciones anteriores. Para ver algunas configuraciones de ejemplo, consulta configuración de muestra.Opcional: También puedes editar el archivo
selected-configuration.sh
para especificar los cambios que realizaste en la configuración predeterminada de Helm.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Reemplaza
HELM_EXPERIMENT_NAME
por un nombre arbitrario para tu experimento.
El experimento escribe métricas de la herramienta de creación de perfiles de Nsight Systems en el bucket de Cloud Storage especificado en el directorio megatron-experiments
.
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
Borra el clúster de GKE:
Ve a la página Clústeres:
- Selecciona la casilla de verificación correspondiente a CLUSTER_NAME.
- Haz clic en Borrar.
- Para confirmar la eliminación, escribe CLUSTER_NAME y haz clic en Borrar.
Borra el bucket de Cloud Storage
Ve a la página Buckets:
Selecciona la casilla de verificación del bucket de Cloud Storage que creaste para esta guía de inicio rápido.
Haz clic en
Borrar.Para confirmar la eliminación, escribe
DELETE
y haz clic en Borrar.