Créer un cluster Slurm optimisé pour l'IA avec un type de machine 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 le calcul intensif d'IA 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 optimisé pour l'IA à partir d'un modèle.


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 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. Réservez un bloc de capacité pour une machine a4-highgpu-8g. Ces machines sont requises pour ce tutoriel.
  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 vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour déployer un cluster Slurm, demandez à votre administrateur d'accorder les rôles IAM suivants au compte de service Compute Engine par défaut :

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

Votre administrateur peut également attribuer au compte de service Compute Engine par défaut les autorisations requises à l'aide de 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 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 à votre machine a4-highgpu-8g réservée.

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

Variables de capacité de réservation

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

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 approuvé pour le type de machine A4

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 le type de machine A4.

gcloud config set project ${A4_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=${A4_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 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.

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 de machines A4 optimisées pour les accélérateurs, vous devez utiliser la version v1.51.1 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 ${A4_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: 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. Pour détruire le cluster, exécutez la commande suivante :

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

Étapes suivantes