GPU-VMs im Bulk erstellen


Mithilfe des Bulk-Erstellungsprozesses können Sie eine Gruppe von virtuellen Maschinen (VMs) erstellen, die an Grafikprozessoren (GPUs) angeschlossen sind. Bei der Bulk-Erstellung erhalten Sie eine Vorabvalidierung, bei der die Anfrage schnell fehlschlägt, wenn sie nicht umsetzbar ist. Wenn Sie außerdem das Regions-Flag verwenden, wählt die Bulk-Erstellungs-API automatisch die Zone aus, die über die Kapazität verfügt, um die Anfrage zu erfüllen.

Weitere Informationen zur Bulk-Erstellung finden Sie unter Informationen zur Bulk-Erstellung von VMs. Weitere Informationen zum Erstellen von VMs mit angehängten GPUs finden Sie unter Instanz mit angehängten GPUs erstellen.

Hinweise

  • Informationen zu Einschränkungen und zusätzlichen erforderlichen Schritten zum Erstellen von Instanzen mit angehängten GPUs, z. B. zum Auswählen eines Betriebssystem-Images und zum Prüfen des GPU-Kontingents, finden Sie unter Instanz mit angehängten GPUs erstellen.
  • Informationen zu den Einschränkungen für die Bulk-Erstellung finden Sie unter Informationen zur Bulk-Erstellung von VMs.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:

    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

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

        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.

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie für die Erstellung von VMs benötigen, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) für das Projekt zu gewähren. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen von VMs erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind zum Erstellen von VMs erforderlich:

  • compute.instances.create für das Projekt
  • So erstellen Sie die VM mit einem benutzerdefinierten Image: compute.images.useReadOnly für das Image
  • Um die VM mit einem Snapshot zu erstellen: compute.snapshots.useReadOnly für den Snapshot
  • So verwenden Sie eine Instanzvorlage zum Erstellen der VM: compute.instanceTemplates.useReadOnly für die Instanzvorlage
  • So weisen Sie der VM ein Legacy-Netzwerk zu: compute.networks.use für das Projekt
  • Um eine statische IP-Adresse für die VM festzulegen: compute.addresses.use für das Projekt
  • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein Legacy-Netzwerk verwenden: compute.networks.useExternalIp für das Projekt
  • So geben Sie ein Subnetz für Ihre VM an: compute.subnetworks.use für das Projekt oder für das ausgewählte Subnetz
  • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein VPC-Netzwerk verwenden: compute.subnetworks.useExternalIp für das Projekt oder für das ausgewählte Subnetz
  • Um Metadaten der VM-Instanz für die VM festzulegen: compute.instances.setMetadata für das Projekt
  • Zum Festlegen von Tags für die VM: compute.instances.setTags auf der VM
  • So legen Sie Labels für die VM fest: compute.instances.setLabels auf der VM
  • So legen Sie ein Dienstkonto für die VM fest: compute.instances.setServiceAccount auf der VM
  • Um ein neues Laufwerk für die VM zu erstellen: compute.disks.create für das Projekt
  • So hängen Sie ein vorhandenes Laufwerk im Lese- oder Lese-/Schreibmodus an: compute.disks.use für das Laufwerk
  • So hängen Sie ein vorhandenes Laufwerk im Lesemodus an: compute.disks.useReadOnly für das Laufwerk

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Übersicht

Wenn Sie VMs mit angehängten GPUs mithilfe der Bulk-Erstellungsmethode erstellen, können Sie VMs in einer Region (z. B. us-central1) oder in einer bestimmten Zone (z. B. us-central1-a) erstellen.

Wenn Sie eine Region angeben, platziert Compute Engine die VMs in einer beliebigen Zone innerhalb der Region, die GPUs unterstützt.

Maschinentypen

Die beschleunigungsoptimierte Maschinenfamilie umfasst mehrere Maschinentypen.

Jedem beschleunigungsoptimierten Maschinentyp ist ein bestimmtes NVIDIA-GPU-Modell angehängt.

  • Bei beschleunigungsoptimierten A4-Maschinentypen sind NVIDIA B200-GPUs angehängt.
  • An beschleunigungsoptimierte A3-Maschinentypen sind NVIDIA H100-GPUs mit 80 GB oder NVIDIA H200-GPUs mit 141 GB angehängt. Diese sind in den folgenden Varianten verfügbar:
    • A3 Ultra: An diese Maschinentypen sind H200-GPUs mit 141 GB angehängt.
    • A3 Mega: An diese Maschinentypen sind H100-GPUs mit 80 GB angehängt.
    • A3 High: An diese Maschinentypen sind H100-GPUs mit 80 GB angehängt.
    • A3 Edge: An diese Maschinentypen sind H100-GPUs mit 80 GB angehängt.
  • An beschleunigungsoptimierte A2-Maschinentypen sind NVIDIA A100-GPUs angehängt. Diese sind in den folgenden Varianten verfügbar:
    • A2 Ultra: An diese Maschinentypen sind A100-GPUs mit 80 GB angehängt.
    • A2 Standard: An diese Maschinentypen sind A100-GPUs mit 40 GB angehängt.
  • An beschleunigungsoptimierte G2-Maschinentypen sind NVIDIA L4-GPUs angehängt.

Gruppen von A3-, A2- und G2-VMs erstellen

In diesem Abschnitt wird beschrieben, wie Sie mit der Google Cloud CLI oder der REST API Instanzen im Bulk-Verfahren für die Maschinenreihen A3 High, A3 Mega, A3 Edge, A2 und G2 erstellen.

gcloud

Verwenden Sie zum Erstellen einer Gruppe von VMs den Befehl gcloud compute instances bulk create. Weitere Informationen zu den Parametern und zur Verwendung dieses Befehls finden Sie unter VMs im Bulk erstellen.

Die folgenden optionalen Flags werden im Beispielbefehl gezeigt:

  • --provisioning-model=SPOT ist ein optionales Flag, das Ihre VMs als Spot-VMs konfiguriert. Wenn Ihre Arbeitslast fehlertolerant ist und einer möglichen vorzeitigen VM-Beendigung standhält, können Sie Spot-VMs verwenden, um die Kosten für Ihre VMs und die angeschlossenen GPUs zu senken. Weitere Informationen finden Sie unter GPUs auf Spot-VMs. Bei Spot-VMs sind die Flags für die Optionen „Automatischer Neustart“ und „Hostwartung“ deaktiviert.

  • Das Flag --accelerator, um eine virtuelle Workstation anzugeben. Virtuelle NVIDIA RTX-Workstations (vWS) werden nur für G2-VMs unterstützt.

Beispiel

In diesem Beispiel werden zwei VMs mit angehängten GPUs mit den folgenden Spezifikationen erstellt:

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]

Dabei gilt:

  • REGION: Die Region für die VMs. Diese Region muss das ausgewählte GPU-Modell unterstützen.
  • MACHINE_TYPE: Der ausgewählte Maschinentyp Wählen Sie eine der folgenden Optionen aus:

    • Ein A3-Maschinentyp.
    • Ein A2-Maschinentyp.
    • Ein G2-Maschinentyp. G2-Maschinentypen unterstützen auch benutzerdefinierten Arbeitsspeicher. Der Arbeitsspeicher muss ein Vielfaches von 1.024 MB sein und innerhalb des unterstützten Arbeitsspeicherbereichs liegen. Geben Sie beispielsweise --machine-type=g2-custom-4-19456 an, um eine VM mit 4 vCPUs und 19 GB Arbeitsspeicher zu erstellen.
  • IMAGE: Ein Betriebssystem-Image, das GPUs unterstützt.

    Wenn Sie das neueste Image in einer Image-Familie verwenden möchten, ersetzen Sie das Flag --image durch das Flag --image-family und legen Sie dessen Wert auf eine Image-Familie fest, die GPUs unterstützt. Beispiel: --image-family=rocky-linux-8-optimized-gcp.

    Sie können auch ein benutzerdefiniertes Image oder Deep Learning VM Images angeben.

  • IMAGE_PROJECT: Das Compute Engine-Image-Projekt, zu dem das Betriebssystem-Image gehört. Wenn Sie ein benutzerdefiniertes Image oder Deep Learning VM Images verwenden, geben Sie das Projekt an, zu dem diese Images gehören.

  • VWS_ACCELERATOR_COUNT ist die Anzahl der benötigten virtuellen GPUs.

Falls erfolgreich sieht die Ausgabe etwa so aus:

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

Verwenden Sie die Methode instances.bulkInsert mit den erforderlichen Parametern, um mehrere VMs in einer Zone zu erstellen. Weitere Informationen zu den Parametern und zur Verwendung dieses Befehls finden Sie unter VMs im Bulk erstellen.

Beispiel

In diesem Beispiel werden zwei VMs mit angehängten GPUs mit den folgenden Spezifikationen erstellt:

  • VM-Namen: my-test-vm-1, my-test-vm-2
  • An jede VM sind zwei GPUs angehängt, für die der entsprechende beschleunigungsoptimierte Maschinentyps angegeben wird.

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

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • REGION: Die Region für die VMs. Diese Region muss das ausgewählte GPU-Modell unterstützen.
  • MACHINE_TYPE: Der ausgewählte Maschinentyp Wählen Sie eine der folgenden Optionen aus:

    • Ein A2-Maschinentyp.
    • Ein G2-Maschinentyp. G2-Maschinentypen unterstützen auch benutzerdefinierten Arbeitsspeicher. Der Arbeitsspeicher muss ein Vielfaches von 1.024 MB sein und innerhalb des unterstützten Arbeitsspeicherbereichs liegen. Geben Sie beispielsweise --machine-type=g2-custom-4-19456 an, um eine VM mit 4 vCPUs und 19 GB Arbeitsspeicher zu erstellen.
  • SOURCE_IMAGE_URI: Der URI für das spezifische Image oder die Image-Familie, die Sie verwenden möchten.

    Beispiel:

    • Spezifisches Image: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • Image-Familie: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp".

    Wenn Sie eine Image-Familie angeben, erstellt Compute Engine eine VM aus dem neuesten nicht verworfenen Betriebssystem-Image in dieser Familie. Weitere Informationen zur Verwendung von Image-Familien finden Sie unter Best Practices für Image-Familien.

Zusätzliche Einstellungen:

  • Wenn Ihre Arbeitslast fehlertolerant ist und einer möglichen vorzeitigen VM-Beendigung standhält, können Sie Spot-VMs verwenden, um die Kosten für Ihre VMs und die angeschlossenen GPUs zu senken. Weitere Informationen finden Sie unter GPUs auf Spot-VMs. Wenn Sie eine Spot-VM verwenden möchten, fügen Sie der Anfrage die Option "provisioningModel": "SPOT hinzu. Bei Spot-VMs sind die Flags für den automatischen Neustart und die Hostwartung deaktiviert.

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Für G2-VMs werden virtuelle NVIDIA RTX-Workstations (vWS) unterstützt. Wenn Sie eine virtuelle Workstation angeben möchten, fügen Sie Ihrer Anfrage die Option guestAccelerators hinzu. Ersetzen Sie VWS_ACCELERATOR_COUNT durch die Anzahl der benötigten virtuellen GPUs.

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

Gruppen von N1-VMs für allgemeine Zwecke erstellen

Sie erstellen eine Gruppe von VMs mit angehängten GPUs über die Google Cloud CLI oder REST.

In diesem Abschnitt wird beschrieben, wie Sie VMs mit folgenden GPU-Typen erstellen:

NVIDIA-GPUs:

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

NVIDIA RTX Virtuelle Workstation (vWS) (ehemals NVIDIA GRID):

  • NVIDIA T4 Virtual Workstation: nvidia-tesla-t4-vws
  • NVIDIA P4 Virtual Workstation: nvidia-tesla-p4-vws
  • NVIDIA P100 Virtual Workstation: nvidia-tesla-p100-vws

    Für diese virtuellen Workstations wird Ihrer VM automatisch eine Lizenz für NVIDIA RTX Virtual Workstation (vWS) hinzugefügt.

gcloud

Verwenden Sie zum Erstellen einer Gruppe von VMs den Befehl gcloud compute instances bulk create. Weitere Informationen zu den Parametern und zur Verwendung dieses Befehls finden Sie unter VMs im Bulk erstellen.

Beispiel

Im folgenden Beispiel werden zwei VMs mit angehängten GPUs mit den folgenden Spezifikationen erstellt:

  • VM-Namen: my-test-vm-1, my-test-vm-2
  • VMs, die in einer beliebigen Zone in us-central1 erstellt wurden, die GPUs unterstützt
  • An jede VM sind zwei T4-GPUs angehängt. Diese werden mit dem Flag „Beschleunigertyp“ und „Beschleunigeranzahl“ angegeben
  • Auf jeder VM sind GPU-Treiber installiert
  • Jede VM verwendet das 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

Falls erfolgreich sieht die Ausgabe etwa so aus:

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

Verwenden Sie die Methode instances.bulkInsert mit den erforderlichen Parametern, um mehrere VMs in einer Zone zu erstellen. Weitere Informationen zu den Parametern und zur Verwendung dieses Befehls finden Sie unter VMs im Bulk erstellen.

Beispiel

Im folgenden Beispiel werden zwei VMs mit angehängten GPUs mit den folgenden Spezifikationen erstellt:

  • VM-Namen: my-test-vm-1, my-test-vm-2
  • VMs, die in einer beliebigen Zone in us-central1 erstellt wurden, die GPUs unterstützt
  • An jede VM sind zwei T4-GPUs angehängt. Diese werden mit dem Flag „Beschleunigertyp“ und „Beschleunigeranzahl“ angegeben
  • Auf jeder VM sind GPU-Treiber installiert
  • Jede VM verwendet das Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

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"
          }
        ]
      }
  }
 }

Nächste Schritte