Crea un clúster de Slurm optimizado para IA con un tipo de máquina A4
En esta página, se describe cómo crear e implementar rápidamente un clúster de Slurm optimizado para IA con tipos de máquinas optimizadas para aceleradores A4 con gcloud CLI y Cluster Toolkit.
Los tipos de máquinas optimizados para aceleradores A4 incluyen GPUs NVIDIA B200 conectadas y están diseñados específicamente para la computación intensiva de IA, lo que ayuda 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 con 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 optimizado para IA basado en una plantilla.
Para seguir la guía paso a paso sobre esta tarea directamente en la consola Google Cloud , haz clic en Guiarme:
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 optimizados para aceleradores A4. Específicamente, 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, debes seguir este proceso:
- Configura tu Google Cloud proyecto con los permisos y las variables de entorno necesarios.
- Configura un bucket de Cloud Storage.
- 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 para una máquina
a4-highgpu-8g. Estas máquinas son obligatorias para este instructivo. Asegúrate de tener suficiente cuota de Filestore para aprovisionar el clúster de Slurm. Necesitas un mínimo de 10,240 GiB de capacidad zonal (también conocida como capacidad de SSD de alta escala).
Para verificar tu cuota de Filestore, consulta Cuotas y límites del sistema en la consola de Google Cloud y filtra la tabla para que solo se muestren los recursos de Filestore.
- Si deseas obtener instrucciones detalladas para verificar las cuotas de Filestore, consulta Cómo ver la cuota específica de una API.
- Si no tienes suficiente cuota, solicita un aumento de la cuota.
Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud .
Habilita las APIs de Compute Engine, Filestore, Cloud Storage, Service Usage y Cloud Resource Manager:
Roles obligatorios
Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios para implementar un clúster de Slurm, pídele a tu administrador que le otorgue los siguientes roles de IAM a la cuenta de servicio predeterminada de Compute Engine:
-
Visualizador de objetos de Storage (
roles/storage.objectViewer) 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 propia cuenta de servicio
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Es posible que tu administrador también pueda otorgarle los permisos necesarios a la cuenta de servicio predeterminada de Compute Engine a través de roles personalizados o de otros roles predefinidos.
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 Filestore (estándar) por región: 10,240 GiB
- 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 VM: 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.
Configura las variables de entorno
En Cloud Shell, establece las siguientes variables de entorno para usarlas en el resto del instructivo. Estas variables de entorno establecen valores de marcador de posición para las siguientes tareas:
Configura tu proyecto con los valores relevantes para acceder a tu máquina
a4-highgpu-8greservada.Configura un bucket de Cloud Storage para almacenar los módulos de Cluster Toolkit.
Variables de capacidad de reserva
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 Google Cloudal 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 del 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.
Variables de capacidad de almacenamiento
Crea las variables de entorno para tu bucket de Cloud Storage.
Cluster Toolkit usa planos para definir e implementar clústeres de VMs. Un modelo define uno o más módulos de Terraform para aprovisionar la infraestructura de Cloud. Este bucket se usa para almacenar estos modelos.
export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION
Reemplaza lo siguiente:
GOOGLE_CLOUD_BUCKET_NAME: Es el nombre que deseas usar para tu bucket de Cloud Storage que cumple con los requisitos de nombres de buckets.GOOGLE_CLOUD_BUCKET_LOCATION: Es cualquier Google Cloud región que elijas, donde se alojará el bucket. Por ejemplo,us-central1.
Cambia al proyecto aprobado por A4
Ejecuta el siguiente comando para asegurarte de que estás en el 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
Crea el bucket para almacenar tus módulos de Terraform. Desde Cloud Shell, usa las variables de entorno para ejecutar el siguiente comando:
Una práctica recomendada cuando se trabaja con Terraform es almacenar el estado de forma remota en un archivo habilitado para la versión. En Google Cloud, puedes crear un bucket de Cloud Storage que tenga habilitado el control de versiones.
gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
--project=${A4_RESERVATION_PROJECT_ID} \
--default-storage-class=STANDARD \
--location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
--uniform-bucket-level-access
gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning
Configura Cluster Toolkit
Para crear un clúster de Slurm en un proyecto Google Cloud , 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.
Clona el repositorio de GitHub de Cluster Toolkit
En Cloud Shell, clona el repositorio de GitHub:
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
Ve al directorio de trabajo principal:
cd cluster-toolkit/
Compila el objeto binario de Cluster Toolkit
En Cloud Shell, ejecuta el siguiente comando para compilar el objeto binario de Cluster Toolkit a partir del código fuente:
make
Para verificar el servicio, ejecuta el siguiente comando:
Para implementar un clúster de Slurm de máquinas A4 optimizadas para aceleradores de alta capacidad, debes usar la versión
v1.51.1o una posterior del kit de herramientas de clústeres../gcluster --version
Después de compilar 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: GOOGLE_CLOUD_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 modelo examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml.
En Cloud Shell, inicia 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.
De forma predeterminada, los esquemas de A4 High habilitan la protección contra eliminaciones en la instancia de Filestore. Cuando destruyas el clúster de Slurm, debes inhabilitar la protección contra eliminaciones antes de ejecutar el comando de destrucción.
Inhabilita la protección contra eliminaciones
Para inhabilitar la protección contra eliminaciones cuando actualizas una instancia, usa un comando similar al siguiente:
gcloud filestore instances update INSTANCE_NAME \
--no-deletion-protection
Reemplaza INSTANCE_NAME por el nombre de la instancia que deseas editar. Por ejemplo, my-genomics-instance
Para encontrar el INSTANCE_NAME, puedes ejecutar gcloud filestore instances
list. Este comando enumera todas las instancias de Filestore en tu proyecto Google Cloud actual, incluidos sus nombres, ubicaciones (zonas), niveles, capacidad y estado.
Después de ejecutar el comando, busca la instancia de Filestore que coincida con la máquina a4-highgpu-8g que se ejecuta en este instructivo.
Destruye el clúster de Slurm
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.Para destruir el clúster, ejecuta lo siguiente:
./gcluster destroy DEPLOYMENT_FOLDER --auto-approve
Reemplaza
DEPLOYMENT_FOLDERpor el nombre de la carpeta de la 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://${GOOGLE_CLOUD_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 vuelve a ejecutar el comando provision the Slurm cluster con el nuevo archivo de implementación.
¿Qué sigue?
- Tareas avanzadas de Slurm:
- Obtén más información para volver a implementar el clúster de Slurm.
- Obtén más información para probar el rendimiento de la red en el clúster de Slurm.
- Obtén información para administrar eventos de host:
- Cómo ver la topología de una instancia de procesamiento
- Supervisa las instancias de procesamiento en tu clúster de Slurm
- Cómo informar un host defectuoso