Crea un clúster de Slurm autoadministrado con una VM 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 A4 optimizados para aceleradores con gcloud CLI y Cluster Toolkit.

Los tipos de máquinas A4 optimizados para aceleradores vienen con GPUs NVIDIA B200 conectadas y están diseñados específicamente para la computación intensiva de IA para ayudar a tu clúster de Slurm a controlar de manera eficiente el entrenamiento de modelos y la inferencia a gran escala. Para obtener más información sobre los tipos de máquinas A4 optimizados para aceleradores 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 de Slurm completamente administrado con dos VMs A4.


Para seguir la guía paso a paso sobre esta tarea directamente en la Google Cloud consola, haz clic en Guiarme:

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 A4 optimizados para aceleradores. 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:

  1. Configura tu Google Cloud proyecto con los permisos necesarios para esta guía y las variables de entorno para reservar tu máquina.
  2. Crea un bucket de Cloud Storage.
  3. Configura tus variables de entorno de almacenamiento.
  4. Configura Cluster Toolkit.
  5. Cambia al directorio de Cluster Toolkit.
  6. Crea un archivo YAML de implementación de Slurm.
  7. Aprovisiona un clúster de Slurm con un modelo.
  8. Conéctate al clúster de Slurm.

Antes de comenzar

  1. Reserva un bloque de capacidad para una a4-highgpu-8g máquina.
  2. 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.

  3. Asegúrate de tener habilitada la facturación para tu Google Cloud proyecto.

  4. Habilita las APIs de Compute Engine, Filestore, Cloud Storage, Service Usage y Cloud Resource Manager:

    Habilitar las API

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:

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 Filestore (estándar) por región: 10,240 GiB
    • Disco persistente estándar: 50 GB de pd-standard para el nodo de acceso de Slurm
    • Discos persistentes de rendimiento (SSD): 50 GB de pd-ssd para 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 la Google Cloud CLI. gcloud CLI proporciona la interfaz de línea de comandos principal para Google Cloud. Iniciar Cloud Shell:

  1. Accede a la Google Cloud consola de.

    Google Cloud console

  2. Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: Ícono de 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, establece las siguientes variables de entorno de capacidad de reserva. Estas variables de entorno establecen valores de marcador de posición para configurar tu proyecto para acceder 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 Google Cloud ID del proyecto 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-exr.
  • A4_DEPLOYMENT_NAME: Es un nombre único para la implementación del clúster de Slurm. Por ejemplo, my-slurm-cluster-deployment.
  • A4_REGION: Es la región que ejecuta el bloque de reserva de máquina A4 reservado. Por ejemplo, us-central1.
  • A4_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 realizas este instructivo más de una vez, elige un nombre de implementación único cada vez.

Cambia al proyecto aprobado por A4

Ejecuta el siguiente comando para asegurarte de que estás en el Google Cloud proyecto 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 modelo y sus módulos, Terraform crea un archivo de estado que asigna tu modelo a tus recursos en la nube. Para mantener un registro confiable de tu infraestructura, es una práctica recomendada almacenar tus archivos de estado de Terraform en una ubicación remota habilitada para la versión, 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 ejecutando los siguientes comandos en 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 nuevo de Cloud Storage, que debe cumplir con los requisitos de nombres de buckets.
  • A4_RESERVATION_PROJECT_ID: Es el Google Cloud ID del proyecto al que se le otorgó el bloque de reserva del tipo de máquina A4.
  • BUCKET_LOCATION: Es la Google Cloud región en la que se creará tu bucket de Cloud Storage, como us-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 Cloud para 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 binario compilado previamente.

  1. Ve a la página de versiones de Cluster Toolkit en GitHub.

  2. Descarga el paquete que coincida con tu plataforma y arquitectura. Por ejemplo, si usas Cloud Shell, descarga gcluster_bundle_linux_amd64.zip.

  3. En tu terminal, extrae los archivos del paquete en un directorio gcluster-bundle nuevo:

    unzip BUNDLE_FILENAME -d gcluster-bundle

    Reemplaza BUNDLE_FILENAME por el nombre del paquete que descargaste.

  4. Ve al directorio gcluster-bundle:

    cd gcluster-bundle
  5. Crea el archivo binario gcluster:

    chmod +x gcluster
  6. Para verificar la instalación, ejecuta el siguiente comando:

    ./gcluster --version

    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

  1. En el directorio de Cluster Toolkit, crea el archivo YAML de implementación de Slurm.

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Pega 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: 1
    
  3. Para 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 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml archivo de modelo.

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 Google Cloud consola para ver tu clúster.

  1. Ve a la página Compute Engine > Instancias de VM en la Google Cloud consola.

    Ir a Instancias de VM

  2. Busca el nodo de acceso (a4high-login-001 o uno similar).

  3. Haz clic en SSH para conectarte.

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.

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 de 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

  1. Antes de ejecutar el comando destroy, navega a la raíz del directorio de Cluster Toolkit. De forma predeterminada, DEPLOYMENT_FOLDER se encuentra en la raíz del directorio de Cluster Toolkit.

  2. Para destruir el clúster, ejecuta lo siguiente:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Reemplaza DEPLOYMENT_FOLDER por el nombre de la carpeta de implementación. Por lo general, es el mismo que DEPLOYMENT_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 vuelve a ejecutar el comando de aprovisionamiento del clúster de Slurm con el nuevo archivo de implementación.

¿Qué sigue?