Crear un clúster de Slurm H4D con funciones de gestión mejoradas

En esta página se describe cómo crear un clúster de Slurm de computación de alto rendimiento (HPC) que utilice el acceso directo a memoria remoto (RDMA) con máquinas virtuales H4D y funciones de gestión de clústeres mejoradas. Para configurar el clúster, puedes usar la CLI de gcloud y Cluster Toolkit.

La serie de máquinas H4D se ha diseñado 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 gracias a la red RDMA de Cloud con un rendimiento de 200 Gbps. Para obtener más información sobre los tipos de máquinas optimizadas para la computación H4D en Google Cloud, consulta la serie de máquinas H4D.

Antes de empezar

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

  1. Elige una opción de consumo: la opción que elijas determinará cómo quieres obtener y usar los recursos de vCPU.
  2. Obtener capacidad: obtenga capacidad para la opción de consumo seleccionada.
  3. Para obtener más información, consulta Elegir una opción de consumo y obtener 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 Cluster Toolkit v1.62.0 o una posterior.

    Para instalar Cluster Toolkit, consulta Configurar 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.

Configurar un segmento de almacenamiento

Los planos de clúster usan módulos de Terraform para aprovisionar la infraestructura de Cloud. Una práctica recomendada al trabajar con Terraform es almacenar el estado de forma remota en un archivo con versiones habilitadas. En Google Cloud, puedes crear un segmento de Cloud Storage con la gestión de versiones habilitada.

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

Haz los cambios siguientes:

Abre el directorio de Cluster Toolkit

Asegúrate de que estás en el directorio Cluster Toolkit ejecutando el siguiente comando:

cd cluster-toolkit

Para implementar este clúster, se necesita Cluster Toolkit v1.70.0 o una versión posterior. Para comprobar tu versión, puedes ejecutar el siguiente comando:

./gcluster --version

Crear un archivo de implementación

Crea un archivo de implementación para especificar el segmento de Cloud Storage, asignar nombres a tu red y subred, y definir variables de implementación como el ID de proyecto, la región y la zona.

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

Los parámetros que debe añadir al archivo de implementación dependen de la opción de consumo que utilice en su implementación. Selecciona la pestaña que corresponda a la opción de consumo que quieras usar.

Con reserva

Para crear el archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y añade 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

Haz los cambios siguientes:

  • BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado 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: tu ID de proyecto.
  • REGION: la región que tiene las máquinas reservadas.
  • ZONE: la zona en la que quieres aprovisionar el clúster. Si usas una opción de consumo basada en reservas, tu equipo de cuenta te proporcionó la información sobre la región y la zona cuando se proporcionó la capacidad.
  • NUMBER_OF_VMS: el número de VMs que quieres que tenga el clúster.
  • RESERVATION_NAME: el nombre de tu reserva.

Inicio flexible

Para crear el archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y añade 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

Haz los cambios siguientes:

  • BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado 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: tu ID de proyecto.
  • REGION: la región en la que quieres aprovisionar el clúster.
  • ZONE: la zona en la que quieres aprovisionar tu clúster.
  • NUMBER_OF_VMS: el número de VMs que quieres que tenga el clúster.

Esta implementación aprovisiona nodos de computación estáticos, lo que significa que el clúster tiene un número fijo de nodos en todo momento. Si quieres habilitar el escalado automático en 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 el archivo de implementación, usa un editor de texto para crear un archivo YAML llamado h4d-slurm-deployment.yaml y añade 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

Haz los cambios siguientes:

  • BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado 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: tu ID de proyecto.
  • REGION: la región en la que quieres aprovisionar el clúster.
  • ZONE: la zona en la que quieres aprovisionar tu clúster.
  • NUMBER_OF_VMS: el número de VMs que quieres que tenga el clúster.

Aprovisionar un clúster de Slurm H4D

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

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

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

Conectarse al clúster de Slurm

Para acceder a tu clúster, debes iniciar sesión en el nodo de inicio de sesión de Slurm. Para iniciar sesión, puedes usar la Google Cloud consola o la CLI de Google Cloud.

Consola

  1. Ve a la página Compute Engine > Instancias de VM.

    Ve a la página Instancias de VM.

  2. Busca el nodo de inicio de sesión. Debe tener un nombre con el patrón DEPLOYMENT_NAME +login-001.

  3. En la columna Conectar del nodo de inicio de sesión, haz clic en SSH.

gcloud

Para conectarte al nodo de inicio de sesión, sigue estos pasos:

  1. Identifica el nodo de inicio de sesión con el comando gcloud compute instances list.

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

    Si la salida muestra varios clústeres de Slurm, puedes identificar tu nodo de inicio de sesión por el DEPLOYMENT_NAME que hayas especificado.

  2. Usa el comando gcloud compute ssh para conectarte al nodo de inicio de sesión.

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

    Haz los cambios siguientes:

    • ZONE: la zona en la que se encuentran las VMs de tu clúster.
    • LOGIN_NODE: el nombre del nodo de inicio de sesión, que has identificado en el paso anterior.

Volver a desplegar el clúster de Slurm

Si necesitas aumentar el número de nodos de computación o añadir particiones a tu clúster, es posible que tengas que actualizar las configuraciones de tu clúster de Slurm volviendo a implementar.

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

  1. Conectarse al clúster

  2. Ejecuta el siguiente comando:

    ./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 cuando ya existe una imagen. Solo vuelve a implementar el clúster y su infraestructura.

Destruir el clúster de Slurm

Para quitar el clúster de Slurm y las instancias que contiene, sigue estos pasos:

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

  2. Antes de ejecutar el comando de destrucción, ve a la raíz del directorio Cluster Toolkit. De forma predeterminada, DEPLOYMENT_FOLDER se encuentra en la raíz del directorio Cluster Toolkit.

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

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Haz los cambios siguientes:

    • DEPLOYMENT_FOLDER: el nombre de la carpeta de implementación. Normalmente, es el mismo que DEPLOYMENT_NAME.

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

  Destroy complete! Resources: xx destroyed.

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

Siguientes pasos