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 qui a la capacité de 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 limites 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 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 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 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 créer des VM dans une région (telle que us-central1) ou dans une zone spécifique (telle que 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 pour prendre en charge le type de charge de travail recommandé.

Charges de travail d'IA et de ML Graphiques et visualisation
Les types de machines de la série A optimisés 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 la série G optimisés pour les accélérateurs sont conçus pour les charges de travail telles que les charges de travail de simulation NVIDIA Omniverse, les applications gourmandes en ressources graphiques, le transcodage vidéo et les postes de travail 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 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 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 :

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. Indiquez 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. Les disques SSD locaux peuvent être utilisés en tant qu'espaces de travail rapides 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 cet indicateur 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
   

Les doubles interfaces réseau ne sont compatibles qu'avec les types de machines g4-standard-384.

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

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

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 indicateurs 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) instance standard.
  • SPOT : VM Spot.
  • FLEX_START : VM de 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 compatible avec 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. Les disques SSD locaux peuvent être utilisés en tant qu'espaces de travail rapides 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"
     }
   ]
  

Les doubles interfaces réseau ne sont compatibles qu'avec les types de machines g4-standard-384.

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 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 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 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 et de nombre d'accélérateurs.
  • Chaque VM dispose de pilotes GPU installés.
  • 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 et de nombre d'accélérateurs.
  • Chaque VM dispose de pilotes GPU installés.
  • 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/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"
          }
        ]
      }
  }
 }

Étape suivante