Créer des VM GPU de manière groupée


Vous pouvez créer un groupe de machines virtuelles (VM) auxquelles sont associés des processeurs graphiques (GPU) à l'aide du processus de création groupée. Avec le processus de création groupée, vous bénéficiez d'une validation préalable, où la requête échoue rapidement si elle n'est pas réalisable. De plus, si vous utilisez l'indicateur de région, l'API de création groupée choisit automatiquement la zone capable de répondre à la requête.

Pour en savoir plus sur la création groupée, consultez la section À propos de la création groupée de VM. Pour en savoir plus sur la création de VM avec des GPU associés, consultez la section Présentation de la création d'une instance avec des GPU associés.

Avant de commencer

  • Pour découvrir les limites et les étapes préalables supplémentaires à la création d'instances avec des GPU associés, telles que la sélection d'une image de l'OS et la vérification du quota de GPU, consultez la section Présentation de la création d'une instance avec des GPU associés.
  • Pour connaître les limites de la création groupée, consultez la section À propos de la création groupée de VM.
  • 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 Google Cloud services et aux API. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. 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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Rôles requis

Pour obtenir les autorisations nécessaires à la création de VM, demandez à votre administrateur de vous attribuer 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 page Gérer l'accès aux projets, aux dossiers et aux organisations.

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

Autorisations requises

Les autorisations suivantes sont requises pour créer des VM :

  • compute.instances.create sur le projet
  • Pour créer la VM à l'aide d'une image personnalisée : compute.images.useReadOnly sur l'image
  • Pour créer la VM à l'aide d'un instantané : compute.snapshots.useReadOnly sur l'instantané
  • Pour créer la VM à l'aide d'un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance
  • Pour attribuer un ancien réseau à la VM : compute.networks.use sur le projet
  • Pour spécifier une adresse IP statique pour la VM : compute.addresses.use sur le projet
  • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau : compute.networks.useExternalIp sur le projet
  • Pour spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
  • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
  • Pour définir les métadonnées d'instance de VM pour la VM : compute.instances.setMetadata sur le projet
  • Pour définir des tags pour la VM : compute.instances.setTags sur la VM
  • Pour définir des libellés pour la VM : compute.instances.setLabels sur la VM
  • Pour définir un compte de service à utiliser avec la VM : compute.instances.setServiceAccount sur la VM
  • Pour créer un disque pour la VM : compute.disks.create sur le projet
  • Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture : compute.disks.use sur le disque
  • Pour associer un disque existant en mode lecture seule : compute.disks.useReadOnly sur le disque

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

Présentation

Lorsque vous créez des VM avec des GPU associés à l'aide de la méthode de création groupée, vous pouvez choisir de les créer dans une région (par exemple, us-central1) ou dans une zone spécifique (us-central1-a).

Si vous choisissez de spécifier une région, Compute Engine place les VM dans n'importe quelle zone de la région compatible avec les GPU.

Types de machine

La famille de machines optimisées pour les accélérateurs contient plusieurs types de machines.

Chaque type de machine optimisé pour les accélérateurs est associé à un modèle spécifique de GPU NVIDIA.

Créer des groupes de VM A3, A2 et G2

Cette section explique comment créer des instances groupées pour les séries de machines A3 High, A3 Mega, A3 Edge, A2 et G2 à l'aide de la Google Cloud CLI ou de REST.

gcloud

Pour créer un groupe de VM, utilisez la commande gcloud compute instances bulk create. Pour en savoir plus sur les paramètres et l'utilisation de cette commande, consultez la section Créer des VM de manière groupée.

Les options facultatives suivantes sont affichées dans l'exemple de commande :

  • --provisioning-model=SPOT est une option facultative qui configure vos VM en tant que VM Spot. Si votre charge de travail est tolérante aux pannes et peut résister à une éventuelle préemption de VM, envisagez d'utiliser des VM Spot pour réduire le coût de vos VM et des GPU associés. Pour en savoir plus, consultez la section GPU sur des VM Spot. Pour les VM Spot, les options de redémarrage automatique et de maintenance de l'hôte sont désactivées.

  • L'option --accelerator pour spécifier un poste de travail virtuel. Les postes de travail virtuels (vWS) NVIDIA RTX ne sont compatibles qu'avec les VM G2.

Exemple

Cet exemple crée deux VM auxquelles sont associés des GPU en utilisant les spécifications suivantes :

gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --region=REGION \
    --count=2 \
    --machine-type=MACHINE_TYPE \
    --boot-disk-size=200 \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT \
    --on-host-maintenance=TERMINATE \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Remplacez les éléments suivants :

  • REGION : région des VM. Cette zone doit être compatible avec le modèle de GPU sélectionné.
  • MACHINE_TYPE : type de machine que vous avez sélectionné. Sélectionnez l'une des options suivantes :

    • Un type de machine A3.
    • Un type de machine A2.
    • Un type de machine G2. Les types de machines G2 sont également compatibles avec la mémoire personnalisée. La mémoire doit être un multiple de 1 024 Mo et être comprise dans la plage de mémoire compatible. Par exemple, pour créer une VM avec 4 processeurs virtuels et 19 Go de mémoire, spécifiez --machine-type=g2-custom-4-19456.
  • IMAGE : image de système d'exploitation compatible avec les GPU.

    Si vous souhaitez utiliser l'image la plus récente dans une famille d'images, remplacez l'option --image par l'option --image-family et définissez sa valeur sur une famille d'images compatible avec les GPU. Par exemple, --image-family=rocky-linux-8-optimized-gcp.

    Vous pouvez également spécifier une image personnalisée ou une instance Deep Learning VM Image.

  • IMAGE_PROJECT : projet d'image Compute Engine auquel l'image de l'OS appartient. Si vous utilisez une image personnalisée ou une instance Deep Learning VM Image, spécifiez le projet auquel ces images appartiennent.

  • VWS_ACCELERATOR_COUNT : nombre de GPU virtuels dont vous avez besoin.

Si l'opération réussit, le résultat est semblable à ceci :

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

Utilisez la méthode instances.bulkInsert avec les paramètres requis pour créer plusieurs VM dans une zone. Pour en savoir plus sur les paramètres et l'utilisation de cette commande, consultez la section Créer des VM de manière groupée.

Exemple

Cet exemple crée deux VM auxquelles sont associés des GPU en utilisant les spécifications suivantes :

  • Noms des VM : my-test-vm-1, my-test-vm-2
  • Chaque VM est associée à deux GPU, spécifiés à l'aide du type de machine optimisé pour les accélérateurs approprié.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
    {
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":MACHINE_TYPE,
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":SOURCE_IMAGE_URI
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        ["automaticRestart":true]
      }
    }
    }
    

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • REGION : région des VM. Cette zone doit être compatible avec le modèle de GPU sélectionné.
  • MACHINE_TYPE : type de machine que vous avez sélectionné. Sélectionnez l'une des options suivantes :

    • Un type de machine A2.
    • Un type de machine G2. Les types de machines G2 sont également compatibles avec la mémoire personnalisée. La mémoire doit être un multiple de 1 024 Mo et être comprise dans la plage de mémoire compatible. Par exemple, pour créer une VM avec 4 processeurs virtuels et 19 Go de mémoire, spécifiez --machine-type=g2-custom-4-19456.
  • SOURCE_IMAGE_URI : URI de l'image ou de la famille d'images spécifique que vous souhaitez utiliser.

    Exemple :

    • Image spécifique : "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • Famille d'images : "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"

    Lorsque vous spécifiez une famille d'images, Compute Engine crée une VM à partir de l'image de l'OS non obsolète la plus récente dans cette famille. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.

Paramètres supplémentaires :

  • Si votre charge de travail est tolérante aux pannes et peut résister à une éventuelle préemption de VM, envisagez d'utiliser des VM Spot pour réduire le coût de vos VM et des GPU associés. Pour en savoir plus, consultez GPU sur des VM Spot. Pour utiliser une VM Spot, ajoutez l'option "provisioningModel": "SPOT à votre requête. Pour les VM Spot, les options de redémarrage automatique et de maintenance de l'hôte sont désactivées.

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Pour les VM G2, les postes de travail virtuels NVIDIA RTX (vWS) sont compatibles. Pour spécifier un poste de travail virtuel, ajoutez l'option guestAccelerators à votre requête. Remplacez VWS_ACCELERATOR_COUNT par le nombre de GPU virtuels dont vous avez besoin.

    "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
       }
     ]
    

Créer des groupes de VM à usage général N1

Vous créez un groupe de VM optimisées pour les accélérateurs à l'aide de Google Cloud CLI ou de REST.

Cette section explique comment créer plusieurs VM à l'aide des types de GPU suivants.

GPU NVIDIA :

  • NVIDIA T4 : nvidia-tesla-t4
  • NVIDIA P4 : nvidia-tesla-p4
  • NVIDIA P100 : nvidia-tesla-p100
  • NVIDIA V100 : nvidia-tesla-v100

Poste de travail virtuel NVIDIA RTX (vWS) (anciennement NVIDIA GRID) :

  • Poste de travail virtuel NVIDIA T4 : nvidia-tesla-t4-vws
  • Poste de travail virtuel NVIDIA P4 : nvidia-tesla-p4-vws
  • Poste de travail virtuel NVIDIA P100 : nvidia-tesla-p100-vws

    Pour ces postes de travail virtuels, une licence de poste de travail virtuel NVIDIA RTX (vWS) est automatiquement ajoutée à votre VM.

gcloud

Pour créer un groupe de VM, utilisez la commande gcloud compute instances bulk create. Pour en savoir plus sur les paramètres et l'utilisation de cette commande, consultez la section Créer des VM de manière groupée.

Exemple

L'exemple suivant crée deux VM avec des GPU associés à l'aide des spécifications suivantes :

  • Noms des VM : my-test-vm-1, my-test-vm-2
  • VM créées dans n'importe quelle zone de us-central1 compatible avec les GPU
  • Chaque VM est associée à deux GPU T4, spécifiés à l'aide des indicateurs de type d'accélérateur et de nombre d'accélérateurs.
  • Des pilotes de GPU sont installés sur chaque VM.
  • Chaque VM utilise l'instance Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10.
gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --count=2 \
    --region=us-central1 \
    --machine-type=n1-standard-2 \
    --accelerator type=nvidia-tesla-t4,count=2 \
    --boot-disk-size=200 \
    --metadata="install-nvidia-driver=True" \
    --scopes="https://www.googleapis.com/auth/cloud-platform" \
    --image=pytorch-latest-gpu-v20211028-debian-10 \
    --image-project=deeplearning-platform-release \
    --on-host-maintenance=TERMINATE --restart-on-failure

Si l'opération réussit, le résultat est semblable à ceci :

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

Utilisez la méthode instances.bulkInsert avec les paramètres requis pour créer plusieurs VM dans une zone. Pour en savoir plus sur les paramètres et l'utilisation de cette commande, consultez la section Créer des VM de manière groupée.

Exemple

L'exemple suivant crée deux VM avec des GPU associés à l'aide des spécifications suivantes :

  • Noms des VM : my-test-vm-1, my-test-vm-2
  • VM créées dans n'importe quelle zone de us-central1 compatible avec les GPU
  • Chaque VM est associée à deux GPU T4, spécifiés à l'aide des indicateurs de type d'accélérateur et de nombre d'accélérateurs.
  • Des pilotes de GPU sont installés sur chaque VM.
  • Chaque VM utilise l'instance Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10.

en remplaçant PROJECT_ID par l'ID de votre projet :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/us-central1/instances/bulkInsert

{
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":"n1-standard-2",
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":"projects/deeplearning-platform-release/global/images/pytorch-latest-gpu-v20211028-debian-10"
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-t4"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        "automaticRestart":true
      },
      "metadata":{
        "items":[
          {
            "key":"install-nvidia-driver",
            "value":"True"
          }
        ]
      }
  }
 }

Étape suivante