Crea un clúster de Slurm autoadministrado con una VM A4
En esta página, se describe cómo crear e implementar con rapidez un clúster de Slurm optimizado para IA con tipos de máquinas A4 optimizadas para aceleradores con gcloud CLI y el Cluster Toolkit.
Los tipos de máquinas optimizadas para aceleradores A4 incluyen GPUs NVIDIA B200 conectadas y están diseñados específicamente para el procesamiento intensivo de IA para ayudar a tu clúster de Slurm a controlar de manera eficiente el entrenamiento y la inferencia de modelos a gran escala. Para obtener más información sobre los tipos de máquinas optimizados para aceleradores A4 en Google Cloud, consulta Tipos de máquinas de GPU.
Como alternativa, puedes usar Cluster Director para crear un clúster de Slurm basado en A4. Cluster Director es un servicio administrado que simplifica y automatiza la implementación de clústeres, lo que reduce la sobrecarga operativa. Para obtener más información, consulta Crea un clúster de Slurm completamente administrado con dos VMs A4.
Descripción general del instructivo
En este instructivo, se describen los pasos para configurar un clúster de Slurm optimizado para IA con tipos de máquinas optimizadas para aceleradores A4. En particular, configurarás un clúster con máquinas virtuales de Compute Engine, crearás un bucket de Cloud Storage para almacenar los módulos de Terraform necesarios y configurarás una instancia de Filestore para aprovisionar tu clúster de Slurm. Para completar los pasos de este instructivo, sigue este proceso:
- Configura tu proyecto de Google Cloud con los permisos necesarios para esta guía y las variables de entorno para reservar tu máquina.
- Crear un bucket de Cloud Storage
- Configura las variables de entorno de almacenamiento.
- Configura Cluster Toolkit.
- Cambia al directorio de Cluster Toolkit.
- Crea un archivo YAML de implementación de Slurm.
- Aprovisiona un clúster de Slurm con un modelo.
- Conéctate al clúster de Slurm.
Antes de comenzar
- Reserva un bloque de capacidad o crea una reserva en modo Calendario para una
máquina
a4-highgpu-8g. Verifica que tengas suficiente cuota de Managed Lustre (un mínimo de 36,000 GiB de cuota de capacidad de almacenamiento y 18 GBps de cuota de capacidad de procesamiento) para aprovisionar los recursos del plano.
- Si deseas obtener instrucciones detalladas para verificar las cuotas, consulta Cómo ver la cuota específica de una API.
Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud .
Habilita las APIs de Compute Engine, Managed Lustre, Service Networking, Cloud Storage, Service Usage y Resource Manager:
Roles obligatorios
Para obtener los permisos que necesitas para implementar un clúster de Slurm, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Administrador de almacenamiento (
roles/storage.admin) en tu proyecto - Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1) en tu proyecto - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la cuenta de servicio en sí -
Para consumir una reserva para un único proyecto:
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1) en tu proyecto -
Para consumir una reserva compartida:
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1) tanto en el proyecto propietario como en cualquier proyecto de consumidor en el que quieras consumir la reserva
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Costos
El costo de ejecutar este instructivo varía según cada sección que completes, como configurar el instructivo o ejecutar trabajos. Puedes calcular el costo con la calculadora de precios.
Para estimar el costo de configurar este instructivo, usa las siguientes especificaciones:
- Capacidad de Managed Lustre: 36,000 GiB en el nivel de rendimiento de 500 MBps por TiB. Los precios de Managed Lustre dependen tanto de la capacidad de almacenamiento como del nivel de rendimiento configurado.
- Disco persistente estándar: 50 GB de
pd-standardpara el nodo de acceso de Slurm. - Discos persistentes de rendimiento (SSD): 50 GB de
pd-ssdpara el controlador de Slurm. - Instancia de Compute Engine: 1
a4-highgpu-8g.
Inicia Cloud Shell
En este instructivo, usarás Cloud Shell, que es un entorno de shell para administrar recursos alojados en Google Cloud.
Cloud Shell ya viene instalado en Google Cloud CLI, gcloud CLI proporciona la interfaz de línea de comandos principal para Google Cloud. Iniciar Cloud Shell:
Accede a la consola de Google Cloud .
Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell:
.
Se inicia una sesión de Cloud Shell y muestra una ventana de línea de comandos.
Usa esta shell para ejecutar los comandos de gcloud y Cluster Toolkit.
Establece variables de capacidad de reserva de máquinas
En Cloud Shell, configura las siguientes variables de entorno de capacidad de
reserva. Estas variables de entorno establecen valores de marcador de posición
para configurar tu proyecto de modo que acceda a tu máquina a4-highgpu-8g reservada.
export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID export A4_RESERVATION_NAME=A4_RESERVATION_NAME export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME export A4_REGION=A4_REGION export A4_ZONE=A4_ZONE export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME
Reemplaza lo siguiente:
A4_RESERVATION_PROJECT_ID: Es el ID del proyecto de Google Cloud al que se le otorgó el bloque de reserva del tipo de máquina A4.A4_RESERVATION_NAME: Es el nombre de la reserva de GPU que se usa en tu proyecto. Por ejemplo,a4high-exrA4_DEPLOYMENT_NAME: Es un nombre único para la implementación de tu clúster de Slurm. Por ejemplo,my-slurm-cluster-deploymentA4_REGION: Es la región que ejecuta el bloque de reserva de máquina A4 reservado. Por ejemplo,us-central1A4_ZONE: Es la zona que contiene las máquinas reservadas. Esta cadena debe contener la región y la zona. Por ejemplo,us-central1-a.A4_DEPLOYMENT_FILE_NAME: Es un nombre único para tu archivo YAML de modelo de Slurm. Si completas este instructivo más de una vez, elige un nombre de implementación único cada vez.
Cambia al proyecto aprobado por A4
Cambia al proyecto Google Cloud que tiene el bloque de reserva aprobado para el tipo de máquina A4:
gcloud config set project ${A4_RESERVATION_PROJECT_ID}Cree un bucket de Cloud Storage
Cuando implementas un plano y sus módulos, Terraform crea un archivo de estado que asigna tu plano a tus recursos en la nube. Para mantener un registro confiable de tu infraestructura, se recomienda almacenar los archivos de estado de Terraform en una ubicación remota habilitada para versiones, como un bucket de Cloud Storage con el control de versiones habilitado.
Para almacenar tu archivo de estado, crea un bucket de Cloud Storage con el control de versiones habilitado desde Cloud Shell:
gcloud storage buckets create gs://${BUCKET_NAME} \
--project=${A4_RESERVATION_PROJECT_ID} \
--default-storage-class=STANDARD \
--location=${BUCKET_LOCATION} \
--uniform-bucket-level-access
gcloud storage buckets update gs://${BUCKET_NAME} --versioning
Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre del bucket de Cloud Storage nuevo, que debe cumplir con los requisitos de nombres de buckets.A4_RESERVATION_PROJECT_ID: Es el ID del proyecto de Google Cloud al que se le otorgó el bloque de reserva del tipo de máquina A4.BUCKET_LOCATION: Es la región de Google Cloud en la que crearás tu bucket de Cloud Storage, comous-central1. Terraform almacena tu archivo de estado en esta ubicación.
Establece variables de capacidad de almacenamiento
En Cloud Shell, crea las variables de entorno para el bucket que creaste en el paso anterior.
export BUCKET_NAME=BUCKET_NAME export BUCKET_LOCATION=BUCKET_LOCATION
Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre de tu bucket.BUCKET_LOCATION: Es la región en la que se encuentra tu bucket.
Configura Cluster Toolkit
Para crear un clúster de Slurm en un Google Cloud proyecto, puedes usar Cluster Toolkit para controlar la implementación y el aprovisionamiento del clúster. Cluster Toolkit es un software de código abierto que ofrece Google Cloudpara simplificar el proceso de implementación de cargas de trabajo en Google Cloud.
Sigue estos pasos para configurar Cluster Toolkit.
Instala Cluster Toolkit
Para instalar Cluster Toolkit, descarga y extrae el paquete de objeto binario compilado previamente para tu plataforma. Están disponibles los archivos ZIP y TAR (.tgz).
- Ve a la página de versiones de Cluster Toolkit en GitHub.
- Descarga el paquete que coincida con tu plataforma y arquitectura. Están disponibles las siguientes opciones:
gcluster_bundle_linux_amd64.zipogcluster_bundle_linux_amd64.tgzgcluster_bundle_linux_arm64.zipogcluster_bundle_linux_arm64.tgzgcluster_bundle_mac_amd64.zipogcluster_bundle_mac_amd64.tgzgcluster_bundle_mac_arm64.zipogcluster_bundle_mac_arm64.tgz
- En la terminal, extrae los archivos del paquete en un directorio nuevo:
-
Si descargaste un paquete ZIP, extrae los archivos con el comando
unzip:unzip BUNDLE_FILENAME -d cluster-toolkit
-
Si descargaste un paquete tar, extrae los archivos con el comando
tar:mkdir -p cluster-toolkit tar -xzf BUNDLE_FILENAME -C cluster-toolkit
Reemplaza
BUNDLE_FILENAMEpor el nombre del paquete que descargaste. -
- Ve al directorio nuevo:
cd cluster-toolkit
- Verifica la instalación:
./gcluster --version
El resultado muestra la versión actual de Cluster Toolkit que estás usando.
Después de instalar el objeto binario, ya puedes implementar clústeres para ejecutar tus trabajos o cargas de trabajo.
Crea un archivo de implementación
En el directorio de Cluster Toolkit, crea el archivo YAML de implementación de Slurm.
nano ${A4_DEPLOYMENT_FILE_NAME}.yamlPega el siguiente contenido en el archivo YAML.
--- terraform_backend_defaults: type: gcs configuration: bucket: BUCKET_NAME vars: deployment_name: A4_DEPLOYMENT_FILE_NAME project_id: A4_RESERVATION_PROJECT_ID region: A4_REGION zone: A4_ZONE a4h_reservation_name: A4_RESERVATION_NAME a4h_cluster_size: 1Para guardar el archivo y salir, presiona Ctrl + O > Intro > Ctrl + X.
Aprovisiona el clúster de Slurm
Para aprovisionar el clúster de Slurm, ejecuta el siguiente comando de implementación. Este
comando aprovisiona el clúster de Slurm con el
archivo de plano
examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml.
De forma predeterminada, este plano implementa instancias de procesamiento (Compute Engine instances)
que usan Advanced Compute Images precompiladas.
Para obtener más información sobre los controladores preinstalados y las herramientas de configuración que
implementarás, consulta Descripción general de Advanced Compute Images.
En Cloud Shell, usa el comando
gcluster deploy para iniciar la creación
del clúster.
./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve
Conéctate al clúster
Después de la implementación, conéctate a la consola de Google Cloud para ver tu clúster.
Ve a la página Compute Engine > Instancias de VM en la consola deGoogle Cloud .
Busca el nodo de acceso (
a4high-login-001o uno similar).Haz clic en SSH para conectarte.
Realiza una limpieza
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
Destruye el clúster de Slurm
Te recomendamos que limpies tus recursos cuando ya no los necesites. Cuando destruyes el clúster de Slurm, se borran todos los recursos aprovisionados, incluida la instancia de Lustre administrado y todos los datos almacenados en ella.
Antes de ejecutar el comando destroy, navega a la raíz del directorio de Cluster Toolkit. De forma predeterminada,
DEPLOYMENT_FOLDERse encuentra en la raíz del directorio de Cluster Toolkit.Usa el comando
gcluster destroypara destruir el clúster:./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
Reemplaza
DEPLOYMENT_FOLDERpor el nombre de la carpeta de implementación. Por lo general, es igual aDEPLOYMENT_NAME.
Cuando se complete la destrucción, verás un mensaje similar al siguiente:
Destroy complete! Resources: xx destroyed.
Borra el bucket de almacenamiento
Borra el bucket de Cloud Storage después de asegurarte de que el comando anterior finalizó sin errores:
gcloud storage buckets delete gs://${BUCKET_NAME}
Soluciona problemas
Error: Cloud Shell no puede aprovisionar el clúster porque no hay almacenamiento disponible.
Es posible que veas este error si usas Cloud Shell con frecuencia y se te acabó el espacio de almacenamiento.
Para resolver este problema, consulta Cómo inhabilitar o restablecer Cloud Shell.
Error: Ya existe el nombre del clúster o del modelo.
Es posible que veas este error si usas un proyecto que ya usó los nombres de archivo exactos que se usan en este instructivo. Por ejemplo, si otra persona de tu organización completó este instructivo de principio a fin.
Para resolver este problema, vuelve a realizar el instructivo, elige un nombre único para el archivo de implementación y, luego, vuelve a ejecutar el comando aprovisionar el clúster de Slurm con el nuevo archivo de implementación.
¿Qué sigue?
- Tareas avanzadas de Slurm:
- Obtén información para administrar eventos de host:
- Visualiza la topología de una instancia de procesamiento
- Supervisa las instancias de Compute Engine y los clústeres de Slurm
- Cómo informar un host defectuoso