Crear un clúster de HPC Slurm con RDMA habilitado con instancias H4D

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 tipos de máquinas H4D. Para configurar el clúster, usa 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 de 200 Gbps con RDMA. 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.

.

Información general sobre el tutorial

En este tutorial se describen los pasos para configurar un clúster de Slurm optimizado para HPC con tipos de máquinas H4D con RDMA. En concreto, debes configurar un clúster con máquinas virtuales de Compute Engine, crear un bucket de Cloud Storage para almacenar los módulos de Terraform necesarios y configurar una instancia de Filestore para aprovisionar tu clúster de Slurm. Para completar los pasos de este tutorial, debes seguir este proceso:

  1. Configura tu Google Cloud proyecto con los permisos y las variables de entorno necesarios.
  2. Configura un segmento de Cloud Storage.
  3. Configura Cluster Toolkit.
  4. Cambia al directorio de Cluster Toolkit.
  5. Crea un archivo YAML de implementación de Slurm.
  6. Aprovisiona un clúster de Slurm mediante un blueprint.
  7. Conéctate al clúster de Slurm.

Antes de empezar

  1. Solicita un bloque de capacidad reservada para dos instancias H4D con 192 vCPUs cada una.
  2. Comprueba que tengas suficiente cuota de Filestore para aprovisionar el clúster de Slurm. Necesitas un mínimo de 5120 GiB de capacidad zonal,concretamente con un nivel de servicio SSD básico de Filestore.

    Para consultar tu cuota de Filestore, ve a 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 que la facturación esté habilitada en tu Google Cloud proyecto.

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

    Habilitar las APIs

Costes

El coste de completar este tutorial varía en función de cada sección que completes, como la configuración del tutorial o la ejecución de trabajos. Puedes calcular el coste con la calculadora de precios.

  • Para estimar el coste de configuración de este tutorial, utiliza las siguientes especificaciones:

    • Capacidad de Filestore (SSD básico) por región: 5120 GiB.
    • Disco persistente estándar: 50 GB pd-standard para el nodo de inicio de sesión de Slurm.
    • Discos persistentes de rendimiento (SSD): 50 GB pd-ssd para el controlador de Slurm.
    • Instancia de VM: dos instancias H4D creadas con el tipo de máquina h4d-highmem-192, h4d-standard-192 o h4d-highmem-192-lssd.
    • Volúmenes Hyperdisk Balanced: 50 GiB por cada instancia H4D.

Abrir Cloud Shell

En este tutorial, usarás Cloud Shell, un entorno de shell para gestionar recursos alojados en Google Cloud.

Cloud Shell tiene preinstalada la CLI de Google Cloud, que proporciona la interfaz de línea de comandos principal de Google Cloud. Para iniciar Cloud Shell, sigue estos pasos:

  1. Ve a la Google Cloud consola.

    Google Cloud console

  2. En la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: Icono de Cloud Shell

Se iniciará una sesión de Cloud Shell y se mostrará en ella un mensaje de la línea de comandos. Esta shell se usa para ejecutar comandos de gcloud y Cluster Toolkit.

Establece variables de entorno:

En Cloud Shell, define las siguientes variables de entorno que se usarán en el resto del tutorial. Estas variables de entorno definen valores de marcador de posición para las siguientes tareas:

  • Configura tu proyecto con los valores pertinentes para acceder a tus instancias H4D reservadas.

  • Configura un segmento de Cloud Storage para almacenar módulos de Cluster Toolkit.

Variables de capacidad de reserva

export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID
export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME
export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME
export H4D_REGION=H4D_REGION
export H4D_ZONE=H4D_ZONE
export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME

Haz los cambios siguientes:

  • H4D_RESERVATION_PROJECT_ID: el Google CloudID de proyecto al que se le ha concedido el bloque de reserva del tipo de máquina H4D.
  • H4D_RESERVATION_NAME: el nombre del bloque de reserva de la máquina virtual, que se encuentra en tu proyecto. Por ejemplo, h4d-highmem-exr.
  • H4D_DEPLOYMENT_NAME: nombre único de la implementación del clúster de Slurm. Por ejemplo, h4d-hpc-slurm-cluster-deployment.
  • H4D_REGION: la región en la que se ejecuta el bloque de reserva de máquina H4D reservado. Por ejemplo, us-central1.
  • H4D_ZONE: la zona que contiene las máquinas reservadas. Esta cadena debe contener la región y la zona. Por ejemplo, us-central1-a.
  • H4D_DEPLOYMENT_FILE_NAME: nombre único del archivo YAML del blueprint de Slurm. Si sigues este tutorial más de una vez, elige un nombre de implementación único cada vez.

Variables de capacidad de almacenamiento

Crea las variables de entorno de tu segmento de Cloud Storage.

Cluster Toolkit usa planos para definir y desplegar clústeres de máquinas virtuales. Un plano define uno o varios módulos de Terraform para aprovisionar infraestructura de Cloud. Este contenedor se usa para almacenar estos planos.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

Haz los cambios siguientes:

  • GOOGLE_CLOUD_BUCKET_NAME: el nombre que quieras usar para tu segmento de Cloud Storage y que cumpla los requisitos de nombres de segmentos.
  • GOOGLE_CLOUD_BUCKET_LOCATION - any Google Cloud region of your choice, where the bucket will be hosted. Por ejemplo, us-central1.

Cambia al proyecto con el bloque de capacidad H4D reservado.

Ejecuta el siguiente comando para asegurarte de que estás en el proyecto Google Cloud que tiene el bloque de reserva aprobado para las instancias H4D.

gcloud config set project ${H4D_RESERVATION_PROJECT_ID}

Crea un segmento de Cloud Storage

Crea el segmento para almacenar tus módulos de Terraform. En Cloud Shell, con tus variables de entorno, ejecuta el siguiente comando:

Una práctica recomendada al trabajar con Terraform es almacenar el estado de forma remota en un archivo con control de versiones. En Google Cloud, puedes crear un segmento de Cloud Storage con el control de versiones habilitado.

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${H4D_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

Configurar Cluster Toolkit

Para crear un clúster de Slurm en un proyecto, puedes usar Cluster Toolkit para gestionar la implementación y el aprovisionamiento del clúster. Google Cloud Cluster Toolkit es un software de código abierto que ofrece Google Cloud para simplificar el proceso de desplegar cargas de trabajo enGoogle Cloud.

Sigue estos pasos para configurar Cluster Toolkit.

Clonar el repositorio de GitHub de Cluster Toolkit

  1. En Cloud Shell, clona el repositorio de GitHub:

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. Ve al directorio de trabajo principal:

    cd cluster-toolkit/

Compilar el archivo binario de Cluster Toolkit

  1. En Cloud Shell, compila el archivo binario de Cluster Toolkit a partir del código fuente ejecutando el siguiente comando:

    make
  2. Para verificar la compilación, ejecuta el siguiente comando:

    Para desplegar un clúster de Slurm optimizado para HPC que use instancias H4D, debes usar la versión v1.47.0 o una posterior de Cluster Toolkit.

    ./gcluster --version

    Una vez que hayas compilado el archivo binario, podrás desplegar clústeres para ejecutar tus trabajos o cargas de trabajo.

Crear un archivo de implementación

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

    nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Pega el siguiente contenido en el archivo YAML.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: H4D_DEPLOYMENT_FILE_NAME
      project_id: H4D_RESERVATION_PROJECT_ID
      region: H4D_REGION
      zone: H4D_ZONE
      
      
    
  3. Para guardar el archivo y salir, pulsa Ctrl+O > Intro > Ctrl+X.

Aprovisionar 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 modelo de Cluster Toolkit H4D.

En Cloud Shell, inicia la creación del clúster.

./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.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 consola deGoogle Cloud .

    Ir a instancias de VM

  2. Busca el nodo de inicio de sesión, que puede tener un nombre como example-deployment-login-123.

  3. Haz clic en SSH para conectarte.

Limpieza

Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

Eliminar el clúster de Slurm

Te recomendamos que limpies tus recursos cuando ya no los necesites.

Inhabilitar protección frente a la eliminación

Para inhabilitar la protección contra la eliminación al actualizar una instancia, usa un comando similar al siguiente:

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

Sustituye:

  • INSTANCE_NAME: el nombre de la instancia que quieras editar. Por ejemplo, my-genomics-instance.

Para encontrar el INSTANCE_NAME, puedes ejecutar el comando gcloud filestore instances list. Este comando muestra todas las instancias de Filestore de tu Google Cloud proyecto actual, incluidos sus nombres, ubicaciones (zonas), niveles, capacidad y estado.

Después de ejecutar el comando, busca la instancia de Filestore que coincida con el tipo de máquina H4D que se ha usado en este tutorial.

Destruir el clúster de Slurm

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

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

    ./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
    

Cuando se haya completado la destrucción del clúster, verás un mensaje similar al siguiente:

Destroy complete! Resources: xx destroyed.

Eliminar el segmento de almacenamiento

Elimina el segmento de Cloud Storage después de asegurarte de que el comando anterior ha finalizado sin errores:

gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}

Solución de problemas

  • Error: Cloud Shell no puede aprovisionar el clúster porque no queda espacio de almacenamiento.

    Es posible que veas este error si usas Cloud Shell con frecuencia y te has quedado sin espacio de almacenamiento.

    Para solucionar este problema, consulta Inhabilitar o restablecer Cloud Shell.

  • Error: Ya existe un clúster o un nombre de plano.

    Es posible que veas este error si usas un proyecto que ya ha usado los nombres de archivo exactos que se utilizan en este tutorial. Por ejemplo, si otra persona de tu organización ha completado este tutorial.

    Para solucionar este problema, vuelve a completar el tutorial y elige un nombre único para el archivo de implementación. Después, vuelve a ejecutar el comando provision the Slurm cluster (aprovisionar el clúster de Slurm) con el nuevo archivo de implementación.

Siguientes pasos