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. La création groupée permet d'obtenir une validation franche, c'est-à-dire que la requête échoue rapidement si elle n'est pas réalisable. De plus, si vous utilisez le flag de région, l'API de création groupée choisit automatiquement la zone qui a la capacité pour répondre à la demande.

Pour en savoir plus sur la création groupée, consultez À 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 Présentation de la création d'une instance avec des GPU associés.

Avant de commencer

  • Pour connaître les limites et les étapes préalables supplémentaires à la création d'instances avec des GPU associés (comme la sélection d'une image de l'OS et la vérification du quota de GPU), consultez Présentation de la création d'une instance avec des GPU associés.
  • Pour connaître les limitations de la création groupée, consultez À propos de la création groupée de VM.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet 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 en sélectionnant l'une des options suivantes :

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

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    2. Set a default region and zone.

    REST

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

      Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    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 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 spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
  • 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 réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
  • Pour attribuer un ancien réseau à la VM : compute.networks.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 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 étiquettes pour la VM : compute.instances.setLabels sur la VM
  • Pour définir un compte de service que devra utiliser 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 créer des VM dans une région (telle que 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 qui prend en charge 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ée pour les accélérateurs est associé à un modèle spécifique de GPU NVIDIA pour assurer la prise en charge du type de charge de travail recommandé.

Charges de travail d'IA et de ML Graphiques et visualisation
Les types de machines de série A optimisées pour les accélérateurs sont conçus pour les charges de travail de calcul hautes performances (HPC), d'intelligence artificielle (IA) et de machine learning (ML).

Pour ces types de machines, le modèle de GPU est automatiquement associé à l'instance.

Les types de machines de série G optimisées pour les accélérateurs sont conçus pour les charges de travail de simulation NVIDIA Omniverse, les applications exigeantes en ressources graphiques, le transcodage vidéo et les bureaux virtuels. Ces types de machines sont compatibles avec les postes de travail virtuels (vWS) NVIDIA RTX.

Pour ces types de machines, le modèle de GPU est automatiquement associé à l'instance.

  • A4X (superchips NVIDIA GB200)
    (nvidia-gb200)
  • A4 (NVIDIA B200)
    (nvidia-b200)
  • A3 Ultra (NVIDIA H200)
    (nvidia-h200-141gb)
  • A3 Mega (NVIDIA H100)
    (nvidia-h100-mega-80gb)
  • A3 High (NVIDIA H100)
    (nvidia-h100-80gb)
  • A3 Edge (NVIDIA H100)
    (nvidia-h100-80gb)
  • A2 Ultra (NVIDIA A100 80 Go)
    (nvidia-a100-80gb)
  • A2 Standard (NVIDIA A100)
    (nvidia-a100-40gb)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (nvidia-l4)
    (nvidia-l4-vws)

Créer des groupes de VM A4X, A4 et A3 Ultra

Pour créer des instances de manière groupée pour les séries de machines A4X, A4 et A3 Ultra, consultez Présentation des options de déploiement dans la documentation d'AI Hypercomputer.

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

Cette section explique comment créer des instances de manière groupée pour les familles de machines A3 High, A3 Mega, A3 Edge, A2 Standard, A2 Ultra, G4 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 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 :

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

Remplacez les éléments suivants :

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

Flags facultatifs

Pour configurer davantage votre instance afin de répondre aux besoins de votre charge de travail ou de votre système d'exploitation, incluez un ou plusieurs des flags suivants lorsque vous exécutez la commande gcloud compute instances bulk create.

Fonctionnalité Description
Modèle de provisionnement Définit le modèle d'approvisionnement de l'instance. Spécifiez SPOT ou FLEX_START. FLEX_START n'est pas compatible avec les instances G4. Si vous ne spécifiez pas de modèle, le modèle standard est utilisé. Pour en savoir plus, consultez Modèles de provisionnement des instances Compute Engine.
--provisioning-model=PROVISIONING_MODEL
Poste de travail virtuel Spécifie un poste de travail virtuel (vWS) NVIDIA RTX pour les charges de travail graphiques. Cette fonctionnalité n'est disponible que pour les instances G4 et G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Remplacez les éléments suivants :

  • Pour VWS_ACCELERATOR_TYPE, choisissez l'une des options suivantes :
    • Pour les instances G4, spécifiez nvidia-rtx-pro-6000-vws.
    • Pour les instances G2, spécifiez nvidia-l4-vws.
  • Pour VWS_ACCELERATOR_COUNT, spécifiez le nombre de GPU virtuels dont vous avez besoin.
SSD local Associe un ou plusieurs disques SSD locaux à votre instance. Un disque SSD peut être utilisé en tant qu'espace de travail rapide ou pour envoyer des données aux GPU tout en évitant les goulots d'étranglement d'E/S.
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
Pour connaître le nombre maximal de disques SSD locaux que vous pouvez associer par instance de VM, consultez Limites des disques SSD locaux.
Interface réseau Associe plusieurs interfaces réseau à votre instance. Pour les instances g4-standard-384, vous pouvez associer jusqu'à deux interfaces réseau. Vous pouvez utiliser ce flag pour créer une instance avec deux interfaces réseau (2 x 200 Gbit/s). Chaque interface réseau doit se trouver dans un réseau VPC unique.

   --network-interface=network=VPC_NAME_1,subnet=SUBNET_NAME_1,nic-type=GVNIC \
   --network-interface=network=VPC_NAME_2,subnet=SUBNET_NAME_2,nic-type=GVNIC
   

Seuls les types de machines g4-standard-384 prennent en charge les doubles interfaces réseau.

Remplacez les éléments suivants :

  • VPC_NAME : nom de votre réseau VPC
  • SUBNET_NAME : nom du sous-réseau faisant partie du réseau VPC spécifié

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 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 et my-test-vm-2.
  • Chaque VM est associée à deux GPU, spécifiés à l'aide du type de machine optimisée 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 :

  • SOURCE_IMAGE_URI : URI de l'image ou 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 Bonnes pratiques concernant les familles d'images.

Flags facultatifs

Pour configurer davantage votre instance afin de répondre aux besoins de votre charge de travail ou de votre système d'exploitation, incluez un ou plusieurs des flags suivants lorsque vous exécutez la méthode instances.bulkInsert.

Fonctionnalité Description
Modèle de provisionnement Pour réduire vos coûts, vous pouvez spécifier un autre modèle de provisionnement en ajoutant le champ "provisioningModel": "PROVISIONING_MODEL" à l'objet scheduling de votre requête. Si vous spécifiez de créer des VM Spot, les champs onHostMaintenance et automaticRestart sont ignorés. Pour en savoir plus, consultez Modèles de provisionnement des instances Compute Engine.
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

Remplacez PROVISIONING_MODEL par l'un des éléments suivants :

  • STANDARD : (par défaut) une instance standard.
  • SPOT : une VM Spot.
  • FLEX_START : une VM à démarrage flexible. Les VM à démarrage flexible s'exécutent pendant sept jours maximum et peuvent vous aider à acquérir des ressources très demandées, comme des GPU, à un prix réduit. Ce modèle de provisionnement n'est pas pris en charge sur les instances G4.
Poste de travail virtuel Spécifie un poste de travail virtuel (vWS) NVIDIA RTX pour les charges de travail graphiques. Cette fonctionnalité n'est disponible que pour les instances G4 et G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Remplacez les éléments suivants :

  • Pour VWS_ACCELERATOR_TYPE, choisissez l'une des options suivantes :
    • Pour les instances G4, spécifiez nvidia-rtx-pro-6000-vws.
    • Pour les instances G2, spécifiez nvidia-l4-vws.
  • Pour VWS_ACCELERATOR_COUNT, spécifiez le nombre de GPU virtuels dont vous avez besoin.
SSD local Associe un ou plusieurs disques SSD locaux à votre instance. Un disque SSD peut être utilisé en tant qu'espace de travail rapide ou pour envoyer des données aux GPU tout en évitant les goulots d'étranglement d'E/S.
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
Pour connaître le nombre maximal de disques SSD locaux que vous pouvez associer par instance de VM, consultez Limites des disques SSD locaux.
Interface réseau Associe plusieurs interfaces réseau à votre instance. Pour les instances g4-standard-384, vous pouvez associer jusqu'à deux interfaces réseau. Cela crée une instance avec deux interfaces réseau (2 x 200 Gbit/s). Chaque interface réseau doit se trouver dans un réseau VPC unique.

   "networkInterfaces":
   [
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_1",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_1",
       "nicType": "GVNIC"
     },
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_2",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_2",
       "nicType": "GVNIC"
     }
   ]
  

Seuls les types de machines g4-standard-384 prennent en charge les doubles interfaces réseau.

Remplacez les éléments suivants :

  • VPC_NAME : nom de votre réseau VPC
  • SUBNET_NAME : nom du sous-réseau faisant partie du réseau VPC spécifié

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

Vous créez un groupe de VM avec GPU associés à l'aide de la 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 instance.

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 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 et my-test-vm-2.
  • VM créées dans n'importe quelle zone de us-central1 prenant en charge les GPU.
  • Chaque VM est associée à deux GPU T4, spécifiés à l'aide des flags de type et de nombre d'accélérateurs.
  • Des pilotes GPU sont installés sur chaque VM.
  • Chaque VM utilise l'image 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 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 et my-test-vm-2.
  • VM créées dans n'importe quelle zone de us-central1 prenant en charge les GPU.
  • Chaque VM est associée à deux GPU T4, spécifiés à l'aide des flags de type et de nombre d'accélérateurs.
  • Des pilotes GPU sont installés sur chaque VM.
  • Chaque VM utilise l'image Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10.

Remplacez PROJECT_ID par l'ID de votre projet.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/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"
          }
        ]
      }
  }
 }

Étapes suivantes