Créer un cluster Slurm autogéré avec une VM A4

Cette page explique comment créer et déployer rapidement un cluster Slurm optimisé pour l'IA à l'aide de types de machines A4 optimisés pour les accélérateurs avec la gcloud CLI et Cluster Toolkit.

Les types de machines A4 optimisées pour les accélérateurs sont associés à des GPU NVIDIA B200. Ils sont spécifiquement conçus pour les calculs d'IA intensifs afin d'aider votre cluster Slurm à gérer efficacement l'entraînement et l'inférence de modèles à grande échelle. Pour en savoir plus sur les types de machines optimisés pour les accélérateurs A4 sur Google Cloud, consultez Types de machines GPU.

Vous pouvez également utiliser Cluster Director pour créer un cluster Slurm basé sur A4. Cluster Director est un service géré qui simplifie et automatise le déploiement de clusters, ce qui réduit les coûts opérationnels. Pour en savoir plus, consultez Créer un cluster Slurm entièrement géré avec deux VM A4.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud , cliquez sur Visite guidée :

Visite guidée


Présentation du tutoriel

Ce tutoriel décrit les étapes à suivre pour configurer un cluster Slurm optimisé pour l'IA à l'aide de types de machines A4 optimisés pour les accélérateurs. Plus précisément, vous allez configurer un cluster avec des machines virtuelles Compute Engine, créer un bucket Cloud Storage pour stocker les modules Terraform nécessaires, et configurer une instance Filestore pour provisionner votre cluster Slurm. La procédure à suivre pour réaliser ce tutoriel comporte plusieurs étapes :

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

Avant de commencer

  1. Réservez un bloc de capacité pour une machine a4-highgpu-8g.
  2. Assurez-vous de disposer d'un quota Filestore suffisant pour provisionner le cluster Slurm. Vous avez besoin d'une capacité zonale (également appelée SSD grande capacité) minimale de 10 240 Gio.

    Pour vérifier votre quota Filestore, consultez Quotas et limites du système dans la console Google Cloud et filtrez la table 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

Rôles requis

Pour obtenir les autorisations nécessaires pour déployer un cluster Slurm, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

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 (standard) par région : 10 240 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 : 1 a4-highgpu-8g

Lancer Cloud Shell

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

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

  1. Accédez à la console Google Cloud .

    ConsoleGoogle Cloud

  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 les variables de capacité de réservation de machines

Dans Cloud Shell, définissez les variables d'environnement de capacité de réservation suivantes. Ces variables d'environnement définissent des valeurs d'espace réservé pour configurer votre projet afin d'accéder à votre machine a4-highgpu-8g réservée.

export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID
export A4_RESERVATION_NAME=A4_RESERVATION_NAME
export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME
export A4_REGION=A4_REGION
export A4_ZONE=A4_ZONE
export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME

Remplacez les éléments suivants :

  • A4_RESERVATION_PROJECT_ID : ID du projet Google Cloudauquel le bloc de réservation du type de machine A4 a été attribué.
  • A4_RESERVATION_NAME : nom de la réservation de GPU utilisée dans votre projet. Exemple :a4high-exr
  • A4_DEPLOYMENT_NAME : nom unique du déploiement de votre cluster Slurm. Exemple :my-slurm-cluster-deployment
  • A4_REGION : région qui exécute le bloc de réservation de machine A4. Exemple :us-central1
  • A4_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.
  • A4_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.

Accéder au projet approuvé pour le type de machine A4

Passez au projet Google Cloud qui contient le bloc de réservation approuvé pour le type de machine A4 :

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

Créer un bucket Cloud Storage

Lorsque vous déployez un plan et ses modules, Terraform crée un fichier d'état qui mappe votre plan à vos ressources dans le cloud. Pour conserver un enregistrement fiable de votre infrastructure, il est recommandé de stocker vos fichiers d'état Terraform dans un emplacement distant compatible avec la gestion des versions, tel qu'un bucket Cloud Storage pour lequel la gestion des versions est activée.

Pour stocker votre fichier d'état, créez un bucket Cloud Storage avec la gestion des versions activée à partir de Cloud Shell :

gcloud storage buckets create gs://${BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${BUCKET_NAME} --versioning

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du nouveau bucket Cloud Storage, qui doit répondre aux exigences de dénomination des buckets.
  • A4_RESERVATION_PROJECT_ID : ID du projet Google Cloudauquel le bloc de réservation du type de machine A4 a été attribué.
  • BUCKET_LOCATION : région Google Clouddans laquelle créer votre bucket Cloud Storage, par exemple us-central1. Terraform stocke votre fichier d'état à cet emplacement.

Définir des variables de capacité de stockage

Dans Cloud Shell, créez les variables d'environnement pour le bucket que vous avez créé à l'étape précédente.

export BUCKET_NAME=BUCKET_NAME
export BUCKET_LOCATION=BUCKET_LOCATION

Remplacez les éléments suivants :

  • BUCKET_NAME : nom de votre bucket.
  • BUCKET_LOCATION : région dans laquelle se trouve votre bucket.

Configurer Cluster Toolkit

Pour créer un cluster Slurm dans un projet Google Cloud , vous pouvez utiliser Cluster Toolkit afin de gérer le déploiement et le provisionnement le cluster. Cluster Toolkit est un logiciel Open Source proposé par Google Cloudpermettant de simplifier le processus de déploiement des charges de travail sur Google Cloud.

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

Installer Cluster Toolkit

Pour installer Cluster Toolkit, téléchargez et extrayez le bundle binaire prédéfini. Les archives ZIP et TAR (.tgz) sont disponibles.

  1. Accédez à la page Versions de Cluster Toolkit sur GitHub.

  2. Téléchargez le bundle correspondant à votre plate-forme et à votre architecture. Par exemple, si vous utilisez Cloud Shell, téléchargez gcluster_bundle_linux_amd64.zip ou gcluster_bundle_linux_amd64.tar.gz.

  3. Dans votre terminal, extrayez les fichiers du bundle dans un nouveau répertoire cluster-toolkit :

    • Si vous avez téléchargé un bundle ZIP, extrayez les fichiers à l'aide de la commande unzip :

      unzip BUNDLE_FILENAME -d cluster-toolkit
    • Si vous avez téléchargé un bundle TAR, extrayez les fichiers à l'aide de la commande tar :

      mkdir -p cluster-toolkit
      tar -xzf BUNDLE_FILENAME -C cluster-toolkit

    Remplacez BUNDLE_FILENAME par le nom du bundle que vous avez téléchargé.

  4. Accédez au répertoire cluster-toolkit :

    cd cluster-toolkit
  5. Vérifiez l'installation :

    ./gcluster --version

    Après avoir installé 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 ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. Collez le contenu suivant dans le fichier YAML.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: BUCKET_NAME
    
    vars:
      deployment_name: A4_DEPLOYMENT_FILE_NAME
      project_id: A4_RESERVATION_PROJECT_ID
      region: A4_REGION
      zone: A4_ZONE
      a4h_reservation_name: A4_RESERVATION_NAME
      a4h_cluster_size: 1
    
  3. Pour enregistrer et fermez 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 fichier de plan examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml.

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

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.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 (a4high-login-001 ou similaire).

  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 :

Détruire le cluster Slurm

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

Par défaut, les plans A4 High activent la protection contre la suppression sur l'instance Filestore. Lorsque vous supprimez le cluster Slurm, vous devez désactiver la protection contre la suppression avant d'exécuter la commande de destruction.

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 par le nom de l'instance que vous souhaitez modifier. Exemple :my-genomics-instance

Pour obtenir INSTANCE_NAME, vous pouvez exécuter 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 à la machine a4-highgpu-8g exécutée 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. Détruisez le cluster :

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    Remplacez DEPLOYMENT_FOLDER par le nom du dossier de déploiement. Il est généralement identique à DEPLOYMENT_NAME.

Une fois la destruction 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://${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 de provisionnement du cluster Slurm avec le nouveau fichier de déploiement.

Étapes suivantes