Créer un cluster HPC Slurm compatible RDMA avec des instances H4D

Cette page explique comment créer un cluster Slurm de calcul hautes performances (HPC, High Performance Computing) qui utilise l'accès direct à la mémoire à distance (RDMA, Remote Direct Memory Access) avec les types de machines H4D. Vous utilisez la CLI gcloud et Cluster Toolkit pour configurer le cluster.

La série de machines H4D est spécialement conçue pour répondre aux besoins des charges de travail HPC exigeantes. H4D propose des instances avec une évolutivité améliorée des charges de travail grâce à une mise en réseau RDMA à 200 Gbit/s. Pour en savoir plus sur les types de machines optimisés pour le calcul H4D sur Google Cloud, consultez Série de machines H4D.

Présentation du tutoriel

Ce tutoriel décrit les étapes à suivre pour configurer un cluster Slurm optimisé pour le HPC à l'aide de types de machines H4D avec RDMA. Plus précisément, vous configurez un cluster avec des machines virtuelles Compute Engine, créez un bucket Cloud Storage pour stocker les modules Terraform nécessaires et configurez une instance Filestore pour provisionner votre cluster Slurm. Pour suivre les étapes de ce tutoriel, vous devez procéder comme suit :

  1. configurer votre projet Google Cloud avec les autorisations et les variables d'environnement requises ;
  2. Configurez un bucket Cloud Storage.
  3. configurer Cluster Toolkit ;
  4. accéder au répertoire Cluster Toolkit ;
  5. créer un fichier YAML pour le déploiement Slurm ;
  6. provisionner un cluster Slurm à l'aide d'un plan ;
  7. vous connecter au cluster Slurm.

Avant de commencer

  1. Demandez un bloc de capacité réservée pour deux instances H4D avec 192 vCPU chacune.
  2. Vérifiez que vous disposez d'un quota Filestore suffisant pour provisionner le cluster Slurm. Vous avez besoin d'une capacité zonale minimale de 5 120 Gio,avec un niveau de service Filestore SSD de base.

    Pour vérifier votre quota Filestore, consultez Quotas et limites du système dans la console Google Cloud et filtrez le tableau pour n'afficher que les ressources Filestore.

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud .

  4. Activez les API Compute Engine, Filestore, Cloud Storage, Service Usage et Cloud Resource Manager :

    Activer les API

Coûts

Le coût de ce tutoriel varie en fonction de chaque section que vous terminez, comme la configuration du tutoriel ou l'exécution de jobs. Vous pouvez calculer les coûts à l'aide du simulateur de coût.

  • Pour estimer le coût de la configuration de ce tutoriel, utilisez les spécifications suivantes :

    • Capacité Filestore (SSD de base) par région : 5 120 Gio.
    • Disque persistant standard : pd-standard de 50 Go pour le nœud de connexion Slurm.
    • Disque persistant SSD hautes performances : pd-ssd de 50 Go pour le contrôleur Slurm.
    • Instance de VM : deux instances H4D créées avec le type de machine h4d-highmem-192, h4d-standard-192 ou h4d-highmem-192-lssd.
    • Volumes Hyperdisk Balanced : 50 Gio pour chaque instance H4D.

Lancer Cloud Shell

Dans ce tutoriel, vous utilisez Cloud Shell, un environnement shell permettant de gérer les ressources hébergées sur Google Cloud.

Cloud Shell est préinstallé avec Google Cloud CLI. gcloud CLI fournit l'interface de ligne de commande principale pour Google Cloud. Pour lancer Cloud Shell :

  1. Accédez à la console Google Cloud .

    Google Cloud console

  2. Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell : Icône Cloud Shell

Une session Cloud Shell démarre et affiche une invite de ligne de commande. Ce shell vous permet d'exécuter les commandes gcloud et Cluster Toolkit.

Définir des variables d'environnement

Dans Cloud Shell, définissez les variables d'environnement suivantes que vous utiliserez dans la suite du tutoriel. Ces variables d'environnement définissent des valeurs d'espace réservé pour les tâches suivantes :

  • Configure votre projet avec les valeurs appropriées pour accéder à vos instances H4D réservées.

  • Configure un bucket Cloud Storage pour stocker les modules Cluster Toolkit.

Variables de capacité de réservation

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

Remplacez les éléments suivants :

  • H4D_RESERVATION_PROJECT_ID : ID du projet Google Cloudauquel le bloc de réservation du type de machine H4D a été attribué.
  • H4D_RESERVATION_NAME : nom du bloc de réservation de VM, présent dans votre projet. Exemple :h4d-highmem-exr
  • H4D_DEPLOYMENT_NAME : nom unique du déploiement de votre cluster Slurm. Exemple : h4d-hpc-slurm-cluster-deployment.
  • H4D_REGION : région qui exécute le bloc de réservation de machine H4D. Exemple :us-central1
  • H4D_ZONE : zone contenant les machines réservées. Cette chaîne doit contenir à la fois la région et la zone. Exemple :us-central1-a
  • H4D_DEPLOYMENT_FILE_NAME : nom unique du fichier YAML de votre plan Slurm. Si vous suivez ce tutoriel plusieurs fois, choisissez un nom de déploiement unique à chaque fois.

Variables de capacité de stockage

Créez les variables d'environnement pour votre bucket Cloud Storage.

Cluster Toolkit utilise des plans pour définir et déployer des clusters de VM. Un plan définit un ou plusieurs modules Terraform permettant de provisionner l'infrastructure cloud. Ce bucket est utilisé pour stocker ces plans.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

Remplacez les éléments suivants :

  • GOOGLE_CLOUD_BUCKET_NAME : nom que vous souhaitez utiliser pour votre bucket Cloud Storage et qui respecte les exigences de dénomination des buckets.
  • GOOGLE_CLOUD_BUCKET_LOCATION : région Google Cloudde votre choix, où le bucket sera hébergé. Par exemple, us-central1.

Accéder au projet avec le bloc de capacité H4D réservé

Exécutez la commande suivante pour vous assurer que vous vous trouvez dans le projet Google Cloudqui contient le bloc de réservation approuvé pour les instances H4D.

gcloud config set project ${H4D_RESERVATION_PROJECT_ID}

Créer un bucket Cloud Storage

Créez le bucket pour stocker vos modules Terraform. Dans Cloud Shell, exécutez la commande suivante à l'aide de vos variables d'environnement :

Une bonne pratique consiste à stocker l'état à distance dans un fichier compatible avec la gestion des versions lorsque vous utilisez Terraform. Sur Google Cloud, vous pouvez créer un bucket Cloud Storage sur lequel la gestion des versions est activée.

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

Configurer Cluster Toolkit

Pour créer un cluster Slurm dans un projet Google Cloud , vous pouvez utiliser Cluster Toolkit afin de déployer et de provisionner le cluster. Cluster Toolkit est un logiciel Open Source proposé par Google Cloud permettant de simplifier le processus de déploiement des charges de travail surGoogle Cloud.

Suivez la procédure ci-dessous pour configurer Cluster Toolkit.

Cloner le dépôt GitHub Cluster Toolkit

  1. Dans Cloud Shell, clonez le dépôt GitHub.

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. Accédez au répertoire de travail principal :

    cd cluster-toolkit/

Créer le binaire Cluster Toolkit

  1. Dans Cloud Shell, compilez le binaire Cluster Toolkit à partir de la source en exécutant la commande suivante :

    make
  2. Pour examiner le build, exécutez la commande suivante :

    Pour déployer un cluster Slurm optimisé pour le HPC qui utilise des instances H4D, vous devez utiliser la version v1.47.0 ou ultérieure de Cluster Toolkit.

    ./gcluster --version

    Après avoir créé le binaire, vous êtes prêt à déployer des clusters pour exécuter vos jobs ou charges de travail.

Créer un fichier de déploiement

  1. Dans le répertoire Cluster Toolkit, créez le fichier YAML de votre déploiement Slurm.

    nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Collez le contenu suivant dans le fichier 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. Pour enregistrer et fermer le fichier, appuyez sur Ctrl+O > Entrée > Ctrl+X.

Provisionner le cluster Slurm

Pour provisionner le cluster Slurm, exécutez la commande de déploiement suivante. Cette commande provisionne le cluster Slurm avec le plan Cluster Toolkit pour les machines H4D.

Dans Cloud Shell, commencez à créer le cluster.

./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve

Se connecter au cluster

Une fois le déploiement effectué, connectez-vous à la console Google Cloud pour afficher votre cluster.

  1. Accédez à la page Compute Engine > Instances de VM dans la consoleGoogle Cloud .

    Accéder à la page Instances de VM

  2. Recherchez le nœud de connexion, qui peut avoir un nom tel que example-deployment-login-123.

  3. Cliquez sur SSH pour vous connecter.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , procédez comme suit :

Supprimer le cluster Slurm

Nous vous recommandons de nettoyer vos ressources lorsqu'elles ne sont plus nécessaires.

Désactiver la protection contre la suppression

Pour désactiver la protection contre la suppression lorsque vous mettez à jour une instance, utilisez une commande semblable à celle-ci :

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

Remplacez :

  • INSTANCE_NAME : nom de l'instance que vous souhaitez modifier. Exemple :my-genomics-instance

Pour obtenir INSTANCE_NAME, vous pouvez exécuter la commande gcloud filestore instances list. Cette commande liste toutes les instances Filestore de votre projet Google Cloud actuel, y compris leur nom, leur emplacement (zone), leur niveau, leur capacité et leur état.

Après avoir exécuté la commande, recherchez l'instance Filestore qui correspond au type de machine H4D utilisé dans ce tutoriel.

Détruire le cluster Slurm

  1. Avant d'exécuter la commande de destruction, accédez à la racine du répertoire Cluster Toolkit. Par défaut, DEPLOYMENT_FOLDER se trouve à la racine du répertoire Cluster Toolkit.

  2. Pour détruire le cluster, exécutez la commande suivante :

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

Une fois la destruction du cluster terminée, un message semblable à celui-ci s'affiche :

Destroy complete! Resources: xx destroyed.

Supprimer le bucket de stockage

Supprimez le bucket Cloud Storage après vous être assuré que la commande précédente s'est terminée sans erreur :

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

Dépannage

  • Erreur : Cloud Shell ne peut pas provisionner le cluster, car il ne reste plus d'espace de stockage.

    Ce message d'erreur peut s'afficher si vous utilisez souvent Cloud Shell et que vous n'avez plus d'espace de stockage.

    Pour résoudre ce problème, consultez Désactiver ou réinitialiser Cloud Shell.

  • Erreur : le nom du cluster ou du plan existe déjà.

    Ce message d'erreur peut s'afficher si vous vous servez d'un projet qui a déjà utilisé les noms de fichiers exacts exploités dans ce tutoriel. Par exemple, si un autre membre de votre organisation a suivi ce tutoriel de bout en bout.

    Pour résoudre ce problème, suivez à nouveau le tutoriel, choisissez un nom unique pour le fichier de déploiement, puis exécutez à nouveau la commande provisionner le cluster Slurm avec le nouveau fichier de déploiement.

Étapes suivantes