Créer des demandes de redimensionnement dans un MIG


Ce document explique comment créer des requêtes de redimensionnement dans un groupe d'instances géré (MIG) d'instances de machines virtuelles (VM) auxquelles des GPU sont associés.

Avant de commencer

  • Examinez le fonctionnement des demandes de redimensionnement.
  • Pour vous assurer que vous disposez d'un quota de GPU suffisant pour les ressources que vous demandez, vérifiez votre quota de GPU.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Rôles requis

Pour obtenir les autorisations nécessaires pour créer des demandes de redimensionnement dans un MIG, demandez à votre administrateur de vous accorder le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour créer des demandes de redimensionnement dans un MIG. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour créer des demandes de redimensionnement dans un groupe d'instances géré :

  • Pour créer un modèle d'instance : compute.instanceTemplates.create sur le projet.
  • Pour créer un MIG zonal : compute.instanceGroupManagers.create sur le projet.
  • Pour créer des demandes de redimensionnement dans un MIG : compute.instanceGroupManagers.update sur le projet.

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

Préparer un MIG à des requêtes de redimensionnement

Pour créer des demandes de redimensionnement dans un MIG, vous devez configurer un modèle d'instance et le MIG comme décrit dans les sections suivantes.

Créer un modèle d'instance

Si vous souhaitez créer des demandes de redimensionnement dans un MIG, celui-ci doit utiliser un modèle d'instance avec les configurations suivantes :

Console

Pour créer un modèle d'instance configuré pour créer des demandes de redimensionnement dans un MIG, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Modèles d'instances.

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

  2. Cliquez sur Créer un modèle d'instance.

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

  4. Dans la section Emplacement, sélectionnez l'une des options suivantes :

    • Pour créer un modèle d'instance global, sélectionnez Global (par défaut).

    • Pour créer un modèle d'instance régional, sélectionnez Régional, puis sélectionnez la région dans laquelle vous souhaitez créer le modèle d'instance.

  5. 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. Facultatif : si votre modèle de GPU est compatible avec les postes de travail virtuels NVIDIA RTX (vWS) pour les charges de travail graphiques et que vous prévoyez d'exécuter des charges de travail graphiques lourdes, sélectionnez l'option Activer le poste de travail virtuel (NVIDIA GRID).

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

  6. 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. Développez la section Options avancées et procédez comme suit :

    1. Développez la section Gestion.

    2. Dans la liste Réservations, sélectionnez Ne pas utiliser.

  8. Cliquez sur Créer.

gcloud

Pour créer un modèle d'instance configuré pour créer des demandes de redimensionnement dans un MIG, exécutez la commande instance-templates create avec les options suivantes :

  • L'option --maintenance-policy définie sur TERMINATE

  • L'option --reservation-affinity définie sur none

Par exemple, exécutez la commande suivante :

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Remplacez les éléments suivants :

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • 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 ou IMAGE_FAMILY : spécifiez l'un des éléments suivants :

    • IMAGE : version spécifique de l'image de l'OS. Exemple : debian-10-buster-v20200309.

    • 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-10, la dernière version de la famille d'images Debian 10 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 compatible avec les 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.

REST

Pour créer un modèle d'instance configuré pour créer des demandes de redimensionnement au sein d'un groupe d'instances géré, envoyez une requête POST à la méthode instanceTemplates.insert. Dans le corps de la requête, procédez comme suit :

  • Définissez le champ scheduling.onHostMaintenance sur TERMINATE.

  • Définissez le champ reservationAffinity.consumeReservationType sur NO_RESERVATION.

Par exemple, envoyez une requête POST comme suit :

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

Remplacez les éléments suivants :

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

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance à créer.

  • 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 ou IMAGE_FAMILY : spécifiez l'un des éléments suivants :

    • IMAGE : version spécifique de l'image de l'OS. Exemple : debian-10-buster-v20200309.

    • 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-10, la dernière version de la famille d'images Debian 10 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 compatible avec les GPU. Si vous spécifiez un type de machine N1, incluez le champ guestAccelerators dans le corps de la requête pour spécifier le nombre et le type de GPU à associer à vos VM.

Pour en savoir plus sur la création d'un modèle d'instance, consultez la section Créer des modèles d'instance.

Créer ou mettre à jour un MIG

Après avoir créé le modèle d'instance comme décrit dans la section précédente, utilisez-le pour créer un MIG comme suit ou mettre à jour un MIG. Pour vous assurer que le MIG crée toutes les VM via des requêtes de redimensionnement, définissez la taille du MIG sur 0. En outre, vous devez effectuer les opérations suivantes pour préparer le MIG aux requêtes de redimensionnement :

Console

Pour créer un MIG zonal configuré pour créer des requêtes de redimensionnement, procédez comme suit :

  1. Dans la console Google Cloud, 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'affiche.

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

  4. Dans la liste Modèle d'instance, sélectionnez le modèle d'instance que vous avez créé à la section précédente. Si vous sélectionnez un modèle d'instance régional, la liste Région est définie sur la région du modèle d'instance.

  5. Le champ Nombre d'instances est désactivé par défaut. Après avoir supprimé l'autoscaling lors des étapes suivantes, saisissez 0.

  6. Dans la section Emplacement, procédez comme suit :

    1. Sélectionnez Zone unique (valeur par défaut).

    2. Sélectionnez la région et la zone du MIG.

  7. Dans la liste Mode autoscaling, cliquez sur Supprimer la configuration de l'autoscaling, puis sur Supprimer.

  8. Dans la liste Action par défaut en cas d'échec, sélectionnez Aucune action.

  9. Cliquez sur Créer.

gcloud

Pour créer un MIG zonal configuré pour créer des requêtes de redimensionnement, exécutez la commande beta instance-groups managed create avec l'option --default-action-on-vm-failure définie sur do_nothing.

gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE_NAME \
    --size=0 \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG à créer.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance que vous avez créé dans la section précédente.

  • ZONE : zone dans laquelle créer le MIG.

REST

Pour créer un MIG zonal configuré pour créer des requêtes de redimensionnement, envoyez une requête POST à la méthode beta.instanceGroupManagers.insert. Dans le corps de la requête, incluez le champ defaultActionOnFailure défini sur DO_NOTHING.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": 0,
  "instanceLifecyclePolicy": {
    "defaultActionOnFailure": "DO_NOTHING"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve le modèle d'instance que vous avez créé dans la section précédente.

  • ZONE : zone dans laquelle créer le MIG.

  • INSTANCE_TEMPLATE_NAME : nom du modèle d'instance que vous avez créé dans la section précédente.

  • INSTANCE_GROUP_NAME : nom du MIG à créer.

Créer une requête de redimensionnement dans un MIG

Avant de créer des demandes de redimensionnement, assurez-vous d'avoir préparé le MIG comme décrit dans la section précédente.

Une fois que vous avez créé une requête de redimensionnement et que toutes les ressources demandées sont disponibles, le MIG crée le nombre de VM demandé en une fois. Les VM s'exécutent jusqu'à ce que le MIG les supprime après la fin de la durée d'exécution spécifiée ou jusqu'à ce que vous les supprimiez.

gcloud

Pour créer une requête de redimensionnement dans un MIG, utilisez la commande beta instance-groups managed resize-requests create.

gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
    --resize-request=RESIZE_REQUEST_NAME \
    --resize-by=COUNT \
    --requested-run-duration=RUN_DURATION \
    --zone=ZONE

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom d'un MIG zonal existant configuré pour y créer des demandes de redimensionnement.

  • RESIZE_REQUEST_NAME : nom de la requête de redimensionnement, qui doit être unique dans le MIG spécifié. Sinon, la création de la demande de redimensionnement échoue.

  • COUNT : nombre de VM à ajouter simultanément au MIG.

  • RUN_DURATION : durée pendant laquelle vous souhaitez que les VM demandées s'exécutent avant que le MIG ne les supprime automatiquement. La valeur doit être mise en forme en tant que nombre de jours, d'heures, de minutes ou de secondes, suivi respectivement de d, h, m et s. Par exemple, spécifiez 30m pour 30 minutes ou 1d2h3m4s pour 1 jour, 2 heures, 3 minutes et 4 secondes. Cette valeur doit être comprise entre 10 minutes et 7 jours.

  • ZONE : zone où se trouve le MIG.

REST

Pour créer une requête de redimensionnement dans un MIG, envoyez une requête POST à la méthode beta.instanceGroupManagerResizeRequests.insert.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve le MIG spécifié.

  • ZONE : zone où se trouve le MIG.

  • INSTANCE_GROUP_NAME : nom d'un MIG zonal existant configuré pour y créer des demandes de redimensionnement.

  • RESIZE_REQUEST_NAME : nom de la requête de redimensionnement, qui doit être unique dans le MIG spécifié. Sinon, la création de la requête de redimensionnement échoue.

  • COUNT : nombre de VM à ajouter simultanément au MIG.

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

Étapes suivantes