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):
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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.-
Asegúrate de tener los siguientes roles en el proyecto: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Verifica los roles
-
En la Google Cloud consola de, dirígete a la página IAM.
Ir a IAM - Selecciona el proyecto.
-
En la columna Principal, busca todas las filas que te identifiquen a ti o a un grupo en el que se te incluya. Para saber en qué grupos estás incluido, comunícate con tu administrador.
- Para todas las filas en las que se te especifique o se te incluya, verifica la columna Rol para ver si la lista de roles incluye los roles necesarios.
Otorga los roles
-
En la Google Cloud consola de, dirígete a la página IAM.
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.
- Haz clic en Selecciona un rol y, luego, busca el rol.
- Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega uno más.
- 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 CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION 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.CONTROL_PLANE_LOCATION: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.PROJECT_ID: Es el ID del Google Cloud proyecto de.
Configura Google Cloud CLI para usar tus Google Cloud credenciales para la autenticación:
gcloud auth login
Si deseas obtener más información, consulta Autentica para usar Google Cloud CLI.
Instala
kubectly 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} \ --location=${CONTROL_PLANE_LOCATION} \ --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.pyInstala 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.yamlObserva 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 Google Cloud Artifact Registry
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-py3a tu repositorio. Asegúrate de que el nombre del repositorio de Docker en el archivoscripts/build-and-push-docker-image.shcoincida 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.yamlpara 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.shpara 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_NAMEpor 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 Google Cloud cuenta de 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
DELETEy haz clic en Borrar.