Créer un cluster HPC Slurm compatible RDMA avec des instances H4D
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 :
- configurer votre projet Google Cloud avec les autorisations et les variables d'environnement requises ;
- Configurez un bucket Cloud Storage.
- configurer Cluster Toolkit ;
- accéder au répertoire Cluster Toolkit ;
- créer un fichier YAML pour le déploiement Slurm ;
- provisionner un cluster Slurm à l'aide d'un plan ;
- vous connecter au cluster Slurm.
Avant de commencer
- Demandez un bloc de capacité réservée pour deux instances H4D avec 192 vCPU chacune.
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.
- Pour obtenir des instructions détaillées sur la vérification des quotas Filestore, consultez Afficher le quota spécifique à l'API.
- Si vous ne disposez pas d'un quota suffisant, demandez une augmentation de quota.
Assurez-vous que la facturation est activée pour votre projet Google Cloud .
Activez les API Compute Engine, Filestore, Cloud Storage, Service Usage et Cloud Resource Manager :
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
ouh4d-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 :
Accédez à la console Google Cloud .
Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer 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
Dans Cloud Shell, clonez le dépôt GitHub.
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
Accédez au répertoire de travail principal :
cd cluster-toolkit/
Créer le binaire Cluster Toolkit
Dans Cloud Shell, compilez le binaire Cluster Toolkit à partir de la source en exécutant la commande suivante :
make
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
Dans le répertoire Cluster Toolkit, créez le fichier YAML de votre déploiement Slurm.
nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
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
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.
Accédez à la page Compute Engine > Instances de VM dans la consoleGoogle Cloud .
Recherchez le nœud de connexion, qui peut avoir un nom tel que
example-deployment-login-123
.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
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.
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
- Tâches Slurm avancées :
- Découvrez comment redéployer le cluster Slurm.
- Découvrez comment tester les performances du réseau sur le cluster Slurm.
- Découvrez comment gérer les événements hôtes :
- Afficher la topologie des VM
- Surveiller les VM dans votre cluster Slurm
- Signaler un hôte défectueux