Crea un clúster de HPC de Slurm habilitado para RDMA 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 usa acceso directo a memoria remoto (RDMA) con tipos de máquinas H4D. Usas gcloud CLI y 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 de 200 Gbps habilitadas para RDMA. 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.

Descripción general del instructivo

En este instructivo, se describen los pasos para configurar un clúster de Slurm optimizado para HPC con tipos de máquinas H4D y RDMA. 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:

  1. Configura tu Google Cloud proyecto con los permisos y las variables de entorno necesarios.
  2. Configura un bucket 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 con un modelo.
  7. Conéctate al clúster de Slurm.

Antes de comenzar

  1. Solicita un bloque de capacidad reservada para dos instancias H4D con 192 CPU virtuales cada una.
  2. Verifica que tengas suficiente cuota de Filestore para aprovisionar el clúster de Slurm. Necesitas un mínimo de 5,120 GiB de capacidad zonal, específicamente con un nivel de servicio de Filestore de SSD básico.

    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

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 (SSD básico) por región: 5,120 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: Dos instancias H4D creadas con el tipo de máquina h4d-highmem-192, h4d-standard-192 o h4d-highmem-192-lssd.
    • Volúmenes de Hyperdisk Balanced: 50 GiB para cada instancia de H4D

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. Para iniciar Cloud Shell, haz lo siguiente:

  1. Ve a la consola de Google Cloud .

    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.

Configure 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 tus instancias H4D reservadas.

  • Configura un bucket de Cloud Storage para almacenar los 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

Reemplaza lo siguiente:

  • H4D_RESERVATION_PROJECT_ID: Es el ID del proyecto Google Cloudal que se le otorgó el bloque de reserva del tipo de máquina H4D.
  • H4D_RESERVATION_NAME: Es el nombre del bloque de reserva de VM que se encuentra en tu proyecto. Por ejemplo, h4d-highmem-exr
  • H4D_DEPLOYMENT_NAME: Es un nombre único para la implementación del clúster de Slurm. Por ejemplo, h4d-hpc-slurm-cluster-deployment
  • H4D_REGION: Es la región que ejecuta el bloque de reserva de máquina H4D reservado. Por ejemplo, us-central1
  • H4D_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
  • H4D_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 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}

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=${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

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 Cloud para simplificar el proceso de implementación de cargas de trabajo enGoogle Cloud.

Sigue estos pasos para configurar Cluster Toolkit.

Clona 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/

Compila el objeto binario de Cluster Toolkit

  1. En Cloud Shell, ejecuta el siguiente comando para compilar el objeto binario de Cluster Toolkit a partir del código fuente:

    make
  2. Para verificar el servicio, ejecuta el siguiente comando:

    Para implementar un clúster de Slurm optimizado para HPC que use instancias H4D, debes usar la versión v1.47.0 o 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

  1. En el directorio de 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, 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 modelo de H4D Cluster Toolkit.

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 consola de Google Cloud 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 acceso, que podría tener un nombre como example-deployment-login-123.

  3. Haz clic en SSH para conectarte.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

Borra el clúster de Slurm

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

Inhabilitar la protección contra la eliminación

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

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

Reemplaza lo siguiente:

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

Para encontrar el INSTANCE_NAME, puedes ejecutar el comando 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 el tipo de máquina H4D que se usó 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 ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
    

Cuando se complete la destrucción del clúster, 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?