Créer un MIG qui ajoute des VM avec GPU en même temps

Ce document explique comment créer un groupe d'instances géré (MIG) pour ajouter des instances de machine virtuelle (VM) avec GPU en une seule fois.

Le MIG utilise le mode groupé de sa règle de taille cible pour ajouter toutes les VM à la fois. Il utilise également le modèle de provisionnement à démarrage flexible pour améliorer la disponibilité des ressources. Pour en savoir plus sur le modèle de provisionnement Démarrage flexible, consultez À propos des modèles de provisionnement.

Une autre méthode pour ajouter simultanément des VM avec GPU dans un MIG consiste à créer des demandes de redimensionnement. Pour déterminer si le mode groupé ou la requête de redimensionnement sont plus adaptés à votre charge de travail, consultez la comparaison entre le mode groupé et la requête de redimensionnement.

Si votre charge de travail n'exige pas que le MIG crée des VM en même temps, mais que vous souhaitez tout de même améliorer la disponibilité des ressources, utilisez le modèle de provisionnement à démarrage flexible, comme décrit dans Créer un MIG avec des VM à démarrage flexible.

Avant de commencer

Limites

Les limites suivantes s'appliquent :

Créer un MIG et ajouter des VM avec GPU en même temps

Pour créer des VM avec GPU simultanément, procédez comme suit :

  1. Créez un modèle d'instance, qui est nécessaire pour créer un MIG. Le MIG utilise ensuite ce modèle pour créer chaque VM du groupe. Dans le modèle, spécifiez les configurations pour le modèle de provisionnement de démarrage flexible.

    Pour en savoir plus sur les modèles d'instance, consultez À propos des modèles d'instance.

  2. Créez un MIG pour le provisionnement groupé de VM. Lors de la création du MIG, activez la fonctionnalité de provisionnement groupé dans le MIG en définissant le mode de la règle de taille cible sur BULK. En mode BULK, le MIG tente de créer toutes les VM à la fois pour atteindre la taille cible que vous avez définie.

Créer un modèle d'instance

Créez un modèle d'instance qui spécifie une série de machines GPU. Utilisez ensuite le modèle pour créer un MIG.

Remarque : Si vous souhaitez exécuter des charges de travail de data science ou de machine learning, envisagez d'utiliser une instance Deep Learning VM Image lorsque vous créez un modèle d'instance. Deep Learning VM Image est un ensemble d'images de VM préinstallées, fourni avec des frameworks de machine learning et des outils essentiels. Pour en savoir plus sur ces images, consultez la section Choisir une image de la documentation sur Deep Learning VM Image.

Console

  1. Accédez à la page Modèles d'instance.

    Accéder à la page Modèles d'instances

  2. Cliquez sur Créer un modèle d'instance. La page Créer un modèle d'instance s'ouvre.

  3. Dans le champ Nom, saisissez un nom pour le modèle d'instance.

  4. Dans la section Configuration de la machine, procédez comme suit :

    1. Cliquez sur l'onglet GPU.

    2. Dans la liste Type de GPU, sélectionnez le type de GPU.

    3. Dans la liste Nombre de GPU, sélectionnez le nombre de GPU.

    4. Dans la section Type de machine, sélectionnez un type de machine.

  5. Dans la section Modèle de provisionnement, procédez comme suit :

    1. Dans la liste Modèle de provisionnement de VM, sélectionnez Démarrage flexible.

    2. Pour définir une durée d'exécution pour les VM créées à partir du modèle d'instance, saisissez le nombre d'heures dans le champ Saisir le nombre d'heures. La valeur doit être comprise entre une heure (1) et sept jours (168).

  6. Facultatif : pour modifier le type ou l'image de disque de démarrage par défaut, cliquez sur Modifier dans la section Disque de démarrage. Suivez ensuite les instructions pour modifier le disque de démarrage.

  7. Cliquez sur Créer.

gcloud

Créez un modèle d'instance à l'aide de la commande instance-templates create :

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE_FAMILY : famille d'images. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez Bonnes pratiques concernant les familles d'images.

  • REGION : région dans laquelle créer le modèle d'instance.

  • MACHINE_TYPE : type de machine GPU. Si vous spécifiez un type de machine N1, incluez l'option --accelerator pour spécifier le nombre et le type de GPU à associer à vos VM.

  • RUN_DURATION : durée d'exécution des VM demandées. Vous devez formater la valeur en nombre de jours, d'heures, de minutes ou de secondes, suivis respectivement de d, h, m ou s. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour un jour, deux heures, trois minutes et quatre secondes. Cette valeur doit être comprise entre 10 minutes et 7 jours.

REST

Créez un modèle d'instance en envoyant une requête POST à la méthode instanceTemplates.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez créer le modèle d'instance.

  • REGION : région dans laquelle créer le modèle d'instance.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance.

  • IMAGE_PROJECT : projet contenant l'image, par exemple, debian-cloud. Pour en savoir plus sur les projets d'image compatibles, consultez la page Images publiques.

  • IMAGE : spécifiez l'une des options suivantes :

    • Une version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20240617.

    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cela permet de spécifier l'image d'OS non obsolète la plus récente. Par exemple, si vous spécifiez family/debian-12, la dernière version de la famille d'images Debian 12 est utilisée. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

  • MACHINE_TYPE : type de machine GPU. Si vous spécifiez un type de machine N1, incluez l'option guestAccelerators pour spécifier le nombre et le type de GPU à associer à vos VM.

  • RUN_DURATION : durée, en secondes, pendant laquelle vous souhaitez que les VM demandées s'exécutent avant que le MIG ne les supprime automatiquement. La valeur doit être comprise entre 600, soit 600 secondes (10 minutes), et 604800, soit 604 800 secondes (7 jours).

Une fois créé, vous pouvez consulter le modèle d'instance pour voir son ID et examiner les propriétés de l'instance.

Créer un MIG et ajouter des VM avec GPU en même temps

Créez un MIG comme décrit dans cette section. Lorsque vous activez le provisionnement groupé dans le MIG, vous devez désactiver les réparations.

Console

  1. Accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur Créer un groupe d'instances. La page Créer un groupe d'instances s'ouvre.

  3. Dans le champ Nom, saisissez un nom pour le MIG.

  4. Avant de sélectionner un modèle d'instance, vous devez désactiver les réparations et définir l'emplacement comme suit :

    1. Pour désactiver les réparations, procédez comme suit :
      1. Dans la section Cycle de vie des instances de VM, décochez la case Autoriser la réparation des VM dans une autre zone.
      2. Dans la liste Action par défaut en cas d'échec, sélectionnez Aucune action.
    2. Pour définir la section Emplacement, procédez comme suit :
      • Pour créer un MIG zonal, sélectionnez Zone unique.
      • Pour créer un MIG régional, sélectionnez Plusieurs zones. Dans Forme de distribution cible, sélectionnez Une des zones. Dans la boîte de dialogue qui s'affiche, sélectionnez Désactiver la redistribution des instances.
  5. Revenez au champ Modèle d'instance. Dans la liste Modèle d'instance, sélectionnez le modèle d'instance que vous avez créé dans la section précédente.

  6. Dans le champ Nombre d'instances, spécifiez le nombre d'instances que vous souhaitez créer simultanément.

  7. Cochez la case Obtenir toutes les VM à la fois à l'aide d'une règle de taille cible groupée.

  8. Cliquez sur Créer.

gcloud

Pour créer un MIG avec une capacité de provisionnement groupé, utilisez la commande instance-groups managed create.

  • Pour créer un MIG zonal, exécutez la commande suivante :

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
    
  • Pour créer un MIG régional, exécutez la commande suivante :

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zones=LIST_OF_ZONES \
    

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG.
  • SIZE : nombre de VM dans le MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID
  • ZONE : zone dans laquelle le MIG crée des VM.
  • LIST_OF_ZONES : liste des zones, séparées par une virgule, dans lesquelles le MIG régional crée des VM. Exemple : us-central1-a, us-central1-b, us-central1-c.

REST

Pour créer un MIG pour lequel la création groupée est activée, envoyez une requête POST comme suit. Dans le corps de la requête, définissez le champ targetSizePolicy.mode sur bulk.

Si le modèle d'instance que vous utilisez spécifie le modèle de provisionnement à démarrage flexible, vous devez désactiver les réparations dans le MIG en incluant le champ "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} dans les requêtes suivantes.

  • Pour créer un MIG zonal, envoyez une requête POST à la méthode instanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • Pour créer un MIG régional, envoyez une requête POST à la méthode regionInstanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • ZONE : zone dans laquelle le MIG crée des VM.
  • REGION : région dans laquelle le MIG crée des VM.
  • INSTANCE_GROUP_NAME : nom du MIG.
  • SIZE : nombre de VM dans le MIG.
  • INSTANCE_TEMPLATE_URL : URL du modèle d'instance que vous souhaitez utiliser pour créer des instances dans le MIG. L'URL peut contenir l'ID ou le nom du modèle d'instance. Spécifiez une des valeurs suivantes :
    • Pour un modèle d'instance régional : projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Pour un modèle d'instance global : INSTANCE_TEMPLATE_ID

Étapes suivantes