Crea un clúster de Slurm H4D con capacidades de administración mejoradas

En esta página, se describe cómo crear un clúster de Slurm de procesamiento de alto rendimiento (HPC) que usa acceso directo a memoria remoto (RDMA) con VMs H4D y capacidades mejoradas de administración de clústeres. Usas gcloud CLI y el Cluster Toolkit para configurar el clúster.

La serie de máquinas H4D está diseñada específicamente para satisfacer las necesidades de las cargas de trabajo de HPC exigentes. H4D ofrece instancias con una escalabilidad de cargas de trabajo mejorada a través de redes RDMA de Cloud con una capacidad de procesamiento de 200 Gbps. Para obtener más información sobre los tipos de máquinas optimizadas para procesamiento H4D en Google Cloud, consulta Serie de máquinas H4D.

Antes de comenzar

Antes de crear un clúster de Slurm, si aún no lo hiciste, completa los siguientes pasos:

  1. Elige una opción de consumo: La opción que elijas determinará cómo deseas obtener y usar los recursos de CPU virtuales.
  2. Obtener capacidad: Obtén capacidad para la opción de consumo seleccionada.
  3. Para obtener más información, consulta Elige una opción de consumo y obtén capacidad.

  4. Asegúrate de tener suficiente cuota de Filestore: Necesitas un mínimo de 10,240 GiB de capacidad zonal (también conocida como SSD de alta escala).
  5. Instala Cluster Toolkit: Para aprovisionar clústeres de Slurm, debes usar la versión v1.62.0 o posterior de Cluster Toolkit.

    Para instalar Cluster Toolkit, consulta Configura Cluster Toolkit.

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Configura un bucket de almacenamiento

Los planos del clúster usan módulos de Terraform para aprovisionar la infraestructura de Cloud. 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.

Para crear este bucket y habilitar el control de versiones desde la CLI, ejecuta los siguientes comandos:

gcloud storage buckets create gs://BUCKET_NAME \
    --project=PROJECT_ID \
    --default-storage-class=STANDARD --location=BUCKET_REGION \
    --uniform-bucket-level-access
gcloud storage buckets update gs://BUCKET_NAME --versioning

Reemplaza lo siguiente:

Abre el directorio de Cluster Toolkit

Ejecuta el siguiente comando para asegurarte de que estás en el directorio de Cluster Toolkit:

cd cluster-toolkit

Esta implementación de clúster requiere Cluster Toolkit v1.70.0 o una versión posterior. Para verificar tu versión, puedes ejecutar el siguiente comando:

./gcluster --version

Crea un archivo de implementación

Crea un archivo de implementación para especificar el bucket de Cloud Storage, establecer nombres para tu red y subred, y configurar variables de implementación, como el ID del proyecto, la región y la zona.

Para crear un archivo de implementación, sigue los pasos para el tipo de máquina H4D:

Los parámetros que debes agregar a tu archivo de implementación dependen de la opción de consumo que uses para tu implementación. Selecciona la pestaña que corresponda a la opción de consumo que quieras usar.

Con reserva

Para crear tu archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y agrega el siguiente contenido.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_reservation_name: RESERVATION_NAME

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste en la sección anterior.
  • DEPLOYMENT_NAME: Un nombre para tu implementación. Si creas varios clústeres, asegúrate de seleccionar un nombre único para cada uno.
  • PROJECT_ID: el ID de tu proyecto
  • REGION: Es la región que tiene las máquinas reservadas.
  • ZONE: Es la zona en la que deseas aprovisionar el clúster. Si usas una opción de consumo basada en reservas, tu equipo de cuentas te proporcionó la información de la región y la zona cuando se entregó la capacidad.
  • NUMBER_OF_VMS: Es la cantidad de VMs que deseas para el clúster.
  • RESERVATION_NAME: Es el nombre de tu reserva.

Inicio flexible

Para crear tu archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y agrega el siguiente contenido.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_dws_flex_enabled: true

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste en la sección anterior.
  • DEPLOYMENT_NAME: Un nombre para tu implementación. Si creas varios clústeres, asegúrate de seleccionar un nombre único para cada uno.
  • PROJECT_ID: el ID de tu proyecto
  • REGION: Es la región en la que deseas aprovisionar tu clúster.
  • ZONE: Es la zona en la que deseas aprovisionar tu clúster.
  • NUMBER_OF_VMS: Es la cantidad de VMs que deseas para el clúster.

Esta implementación aprovisiona nodos de procesamiento estáticos, lo que significa que el clúster tiene una cantidad fija de nodos en todo momento. Si, en cambio, quieres habilitar el ajuste de escala automático de tu clúster, usa el archivo examples/h4d/hpc-slurm-h4d.yaml y edita los valores de node_count_static y node_count_dynamic_max para que coincidan con los siguientes:

      node_count_static: 0
      node_count_dynamic_max: $(vars.h4d_cluster_size)

Spot

Para crear tu archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y agrega el siguiente contenido.


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME

vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  h4d_cluster_size: NUMBER_OF_VMS
  h4d_enable_spot_vm: true

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste en la sección anterior.
  • DEPLOYMENT_NAME: Un nombre para tu implementación. Si creas varios clústeres, asegúrate de seleccionar un nombre único para cada uno.
  • PROJECT_ID: el ID de tu proyecto
  • REGION: Es la región en la que deseas aprovisionar tu clúster.
  • ZONE: Es la zona en la que deseas aprovisionar tu clúster.
  • NUMBER_OF_VMS: Es la cantidad de VMs que deseas para el clúster.

Aprovisiona un clúster de Slurm H4D

Cluster Toolkit aprovisiona el clúster según el archivo de implementación que creaste en el paso anterior y el plano del clúster predeterminado. Para obtener más información sobre el software que instala el blueprint, obtén más información sobre las imágenes personalizadas de Slurm.

Con Cloud Shell, desde el directorio en el que instalaste Cluster Toolkit y creaste el archivo de implementación, puedes aprovisionar el clúster con el siguiente comando, que usa el archivo de plano de H4D Slurm. Este paso tarda entre 20 y 30 minutos aproximadamente.

./gcluster deploy -d h4d-slurm-deployment.yaml examples/hpc-slurm-h4d/hpc-slurm-h4d.yaml --auto-approve

Conéctate al clúster de Slurm

Para acceder al clúster, debes acceder al nodo de acceso de Slurm. Para acceder, puedes usar la consola Google Cloud o Google Cloud CLI.

Console

  1. Vaya a la página Compute Engine > instancias de VM.

    Ir a la página Instancias de VM

  2. Ubica el nodo de acceso. Debe tener un nombre con el patrón DEPLOYMENT_NAME + login-001.

  3. En la columna Conectar del nodo de acceso, haz clic en SSH.

gcloud

Para conectarte al nodo de acceso, completa los siguientes pasos:

  1. Identifica el nodo de acceso con el comando gcloud compute instances list.

    gcloud compute instances list \
      --zones=ZONE \
      --filter="name ~ login" --format "value(name)"
    

    Si el resultado muestra varios clústeres de Slurm, puedes identificar tu nodo de acceso con el DEPLOYMENT_NAME que especificaste.

  2. Usa el comando gcloud compute ssh para conectarte al nodo de acceso.

    gcloud compute ssh LOGIN_NODE \
      --zone=ZONE --tunnel-through-iap
    

    Reemplaza lo siguiente:

    • ZONE: Es la zona en la que se encuentran las VMs de tu clúster.
    • LOGIN_NODE: Es el nombre del nodo de acceso que identificaste en el paso anterior.

Vuelve a implementar el clúster de Slurm

Si necesitas aumentar la cantidad de nodos de procesamiento o agregar particiones nuevas a tu clúster, es posible que debas actualizar la configuración de tu clúster de Slurm volviendo a implementarlo.

Para volver a implementar el clúster con una imagen existente, haz lo siguiente:

  1. Conéctate al clúster

  2. Ejecuta el comando siguiente:

    ./gcluster deploy -d h4d-slurm-deployment.yaml examples/h4d/h4d-slurm-deployment.yaml --only cluster-env,cluster --auto-approve -w
    

    Este comando solo se usa para volver a implementar clústeres en los que ya existe una imagen. Solo vuelve a implementar el clúster y su infraestructura.

Destruye el clúster de Slurm

Para quitar el clúster de Slurm y las instancias que contiene, completa los siguientes pasos:

  1. Desconéctate del clúster si aún no lo hiciste.

  2. 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.

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

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Reemplaza lo siguiente:

    • DEPLOYMENT_FOLDER: Es el nombre de la carpeta de implementación. Por lo general, es igual a DEPLOYMENT_NAME.

Cuando se complete la eliminación del clúster, deberías ver un mensaje similar al siguiente:

  Destroy complete! Resources: xx destroyed.

Para obtener información sobre cómo destruir la infraestructura de forma limpia y obtener instrucciones avanzadas para la implementación manual, consulta la carpeta de implementación ubicada en la raíz del directorio de Cluster Toolkit: DEPLOYMENT_FOLDER/instructions.txt

¿Qué sigue?