GPUs hinzufügen oder entfernen

Compute Engine bietet GPUs, die Sie Ihren VM-Instanzen hinzufügen können. Sie können diese GPUs nutzen, um bestimmte Arbeitslasten wie maschinelles Lernen und Datenverarbeitung auf Ihren Instanzen zu beschleunigen.

Um zu erfahren, was Sie mit GPUs machen können und welche GPU-Hardware es gibt, lesen Sie GPUs in Compute Engine.

Hinweise

Instanz mit einer GPU erstellen

Wenn Sie eine Instanz mit einer oder mehreren GPUs erstellen, müssen Sie festlegen, dass die Instanz bei einer Hostwartung beendet wird. Instanzen mit GPUs können keine Live-Migration ausführen, da sie bestimmten Hardwaregeräten zugewiesen sind. Weitere Informationen dazu finden Sie unter "GPU-Einschränkungen".

Erstellen Sie mit der Google Cloud Console, dem gcloud-Befehlszeilentool oder der Compute Engine API eine Instanz mit einer oder mehreren GPUs.

Console

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen.
  3. Wählen Sie eine Zone, in der GPUs verfügbar sind. Siehe dazu die Liste der verfügbaren Zonen mit GPUs.
  4. Wählen Sie im Abschnitt Maschinenkonfiguration den Maschinentyp aus, den Sie für diese Instanz verwenden möchten. Alternativ dazu können Sie auch entsprechende Einstellungen für einen benutzerdefinierten Maschinentyp festlegen.
  5. Klicken Sie im Abschnitt Maschinenkonfiguration auf CPU-Plattform und GPU. Es werden dann erweiterte Optionen für Maschinentypen und verfügbare GPUs angezeigt.
  6. Klicken Sie auf GPUs, um die Liste verfügbarer GPUs aufzurufen.
  7. Geben Sie den GPU-Typ und die Anzahl der benötigten GPUs an.
  8. Passen Sie bei Bedarf den Maschinentyp Ihren gewünschten GPU-Einstellungen entsprechend an. Wenn Sie diese Einstellungen unverändert lassen, verwendet die Instanz den vordefinierten Maschinentyp, den Sie vor dem Öffnen des Anpassungsbildschirms für den Maschinentyp angegeben haben.
  9. Klicken Sie im Abschnitt Bootlaufwerk auf Ändern, um Ihr Bootlaufwerk zu konfigurieren.
  10. Wählen Sie auf dem Tab Öffentliche Images ein Betriebssystem und eine Version aus.
  11. Klicken Sie auf Speichern, um Ihre Bootlaufwerksoptionen zu bestätigen.
  12. Konfigurieren Sie alle weiteren erforderlichen Instanzeinstellungen. Sie können beispielsweise die Einstellungen für die Abrufbarkeit ändern, um Ihre Instanz als Instanz auf Abruf zu konfigurieren. Dadurch senken Sie die Kosten für die Instanz und die angeschlossenen GPUs. Weitere Informationen finden Sie unter GPUs in Instanzen auf Abruf.
  13. Klicken Sie unten auf der Seite auf Erstellen, um die Instanz zu erstellen.

gcloud

Verwenden Sie den Befehl regions describe, um sicherzustellen, dass Sie ein ausreichendes GPU-Kontingent in der Region haben, in der Sie Instanzen mit GPUs erstellen möchten. Ersetzen Sie region durch die Region, für die Sie das GPU-Kontingent prüfen möchten.

gcloud compute regions describe region

Verwenden Sie zum Erstellen und Starten einer Instanz denBefehl gcloud compute instances create mit den folgenden Flags:

gcloud compute instances create instance-name \
    --machine-type machine-type --zone zone \
    --accelerator type=accelerator-type,count=accelerator-count \
    --image-family image-family --image-project image-project \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

Dabei gilt:

  • instance-name: Der Name der neuen Instanz.
  • machine-type: Der Maschinentyp, den Sie für die Instanz ausgewählt haben. Unter GPUs in Compute Engine können Sie sehen, welche Maschinentypen basierend auf der von Ihnen gewünschten Anzahl an GPUs verfügbar sind.
  • zone: Die Zone für die Instanz.
  • image-family: Eine Image-Familie, die GPUs unterstützt.
  • image-project: Das Image-Projekt, zu dem die Image-Familie gehört.
  • accelerator-count: Die Anzahl der GPUs, die Sie Ihrer Instanz hinzufügen möchten. Unter GPUs in Compute Engine finden Sie eine Liste der GPU-Limits, basierend auf dem Maschinentyp Ihrer Instanz.
  • accelerator-type: Das GPU-Modell, das Sie verwenden möchten. Verwenden Sie einen der folgenden Werte:

    • NVIDIA® Tesla® T4: nvidia-tesla-t4
    • NVIDIA® Tesla® T4 Virtual Workstation mit NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® Tesla® P4: nvidia-tesla-p4
    • NVIDIA® Tesla® P4 Virtual Workstation mit NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® Tesla® P100: nvidia-tesla-p100
    • NVIDIA® Tesla® P100 Virtual Workstation mit NVIDIA® GRID®: nvidia-tesla-p100-vws
    • NVIDIA® Tesla® V100: nvidia-tesla-v100
    • NVIDIA® Tesla® K80: nvidia-tesla-k80

    Unter GPUs in Compute Engine finden Sie eine Liste der verfügbaren GPU-Modelle.

  • --preemptible ist ein optionales Flag, das die Instanz als Instanz auf Abruf konfiguriert. Dadurch senken Sie die Kosten für die Instanz und die angeschlossenen GPUs. Weitere Informationen finden Sie unter GPUs in Instanzen auf Abruf.

Sie können zum Beispiel mit dem folgenden gcloud-Befehl eine Ubuntu 16.04-Instanz mit 1 NVIDIA Tesla K80-GPU und 2 vCPUs in der Zone us-east1-d starten.

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 --zone us-east1-d \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

Mit diesem Beispielbefehl wird die Instanz gestartet, aber CUDA und der Treiber müssen auf der Instanz vorinstalliert sein.

API

Identifizieren Sie den GPU-Typ, den Sie Ihrer Instanz hinzufügen möchten. Senden Sie eine GET-Anfrage, um die GPU-Typen aufzulisten, die Ihrem Projekt in einer bestimmten Zone zur Verfügung stehen.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes

Ersetzen Sie Folgendes:

  • project-id: die Projekt-ID
  • zone: Die Zone, aus der Sie die verfügbaren GPU-Typen auflisten möchten.

Stellen Sie in der API eine POST-Anfrage, um eine neue Instanz zu erstellen. Verwenden Sie den Parameter acceleratorType, um anzugeben, welchen GPU-Typ Sie verwenden möchten, und fügen Sie den Parameter acceleratorCount ein, um anzugeben, wie viele GPUs Sie hinzufügen möchten. Setzen Sie außerdem den Parameter onHostMaintenance auf TERMINATE.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances?key={YOUR_API_KEY}
{
  "machineType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/machineTypes/machine-type",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "disk-size",
        "sourceImage": "https://www.googleapis.com/compute/v1/projects/image-project/global/images/family/image-family"
      },
      "boot": true
    }
  ],
  "name": "instance-name",
  "networkInterfaces":
  [
    {
      "network": "https://www.googleapis.com/compute/v1/projects/project-id/global/networks/network"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": accelerator-count,
      "acceleratorType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

Dabei gilt:

  • instance-name: Der Name der Instanz.
  • project-id: Ihre Projekt-ID.
  • zone: Die Zone für die Instanz.
  • machine-type: Der Maschinentyp, den Sie für die Instanz ausgewählt haben. Unter GPUs in Compute Engine können Sie sehen, welche Maschinentypen basierend auf der von Ihnen gewünschten Anzahl an GPUs verfügbar sind.
  • image-family: Ein Bootlaufwerks-Image für Ihre Instanz. Geben Sie eine Image-Familie aus der Liste der verfügbaren öffentlichen Images an.
  • image-project: Das Image-Projekt, zu dem die Image-Familie gehört.
  • disk-size: Die Größe Ihres Bootlaufwerks in GB.
  • network: Das VPC-Netzwerk, das Sie für die Instanz verwenden möchten. Sie können default angeben, um Ihr Standardnetzwerk zu verwenden.
  • accelerator-count: Die Anzahl der GPUs, die Sie Ihrer Instanz hinzufügen möchten. Unter GPUs in Compute Engine finden Sie eine Liste der GPU-Limits, basierend auf dem Maschinentyp Ihrer Instanz.
  • accelerator-type: Das GPU-Modell, das Sie verwenden möchten. Unter GPUs in Compute Engine finden Sie eine Liste der verfügbaren GPU-Modelle.
  • "preemptible": true ist ein optionaler Parameter, der die Instanz als Instanz auf Abruf konfiguriert. Dadurch senken Sie die Kosten für die Instanz und die angeschlossenen GPUs. Weitere Informationen finden Sie unter GPUs in Instanzen auf Abruf.

Installieren Sie den GPU-Treiber auf Ihrer Instanz, damit Ihr System das Gerät verwenden kann.

GPUs auf vorhandenen Instanzen hinzufügen oder entfernen

Sie können Ihren vorhandenen Instanzen GPUs hinzufügen oder GPUs daraus entfernen. Dazu müssen Sie aber zuerst die Instanz beenden und ihre Host-Wartungseinstellung so ändern, dass sie nicht mehr live migriert wird. Instanzen mit GPUs können keine Live-Migration ausführen, da sie bestimmten Hardwaregeräten zugewiesen sind. Weitere Informationen dazu finden Sie unter "GPU-Einschränkungen".

Beachten Sie auch, dass Sie GPU-Treiber auf dieser Instanz installieren müssen, nachdem Sie eine GPU hinzugefügt haben. Das Bootlaufwerk-Image, das Sie zum Erstellen dieser Instanz verwendet haben, bestimmt, welche Treiber Sie benötigen. Sie müssen feststellen, welche Treiber für das Betriebssystem auf den nichtflüchtigen Bootlaufwerk-Images Ihrer Instanz geeignet sind. Weitere Einzelheiten finden Sie unter GPU-Treiber installieren.

Zum Hinzufügen von GPUs zu einer Instanz oder Entfernen von GPUs daraus können Sie die Google Cloud Console oder die API verwenden.

Console

Sie können GPUs zu Ihrer Instanz hinzufügen oder aus ihr entfernen, indem Sie die Instanz beenden und die Instanzkonfiguration bearbeiten.

  1. Prüfen Sie, ob alle kritischen Anwendungen auf der Instanz angehalten wurden.

  2. Rufen Sie die Seite VM-Instanzen auf, um sich die Liste der Instanzen anzusehen.

    Zur Seite "VM-Instanzen"

  3. Klicken Sie auf den Namen der Instanz, der Sie GPUs hinzufügen möchten. Die Seite VM-Instanzdetails wird geöffnet.

  4. Führen Sie auf der Seite VM-Instanzdetails die folgenden Schritte aus.

    1. Klicken Sie oben auf der Seite auf Beenden, um die Instanz zu beenden.

    2. Wenn die Instanz nicht mehr ausgeführt wird, klicken Sie auf Bearbeiten, um die Instanzattribute zu ändern.

    3. Handelt es sich bei der Instanz um einen Maschinentyp mit gemeinsam genutztem Kern, müssen Sie den Maschinentyp ändern und eine oder mehrere vCPUs angeben. Sie können Instanzen mit Maschinentypen mit gemeinsam genutztem Kern keine Beschleuniger hinzufügen.

    4. Klicken Sie im Abschnitt Maschinenkonfiguration auf CPU-Plattform und GPU. Es werden dann erweiterte Optionen für Maschinentypen und verfügbare GPUs angezeigt.

    5. Klicken Sie auf GPU hinzufügen. Wenn Sie bereits GPUs haben, werden diese anstelle des Abschnitts GPU hinzufügen angezeigt.

    6. Klicken Sie auf GPU-Typ, um die Liste der verfügbaren GPUs aufzurufen.

    7. Wählen Sie die Anzahl der GPUs und das GPU-Modell aus, das Sie der Instanz hinzufügen möchten. Alternativ können Sie eine GPU entfernen, indem Sie auf das X neben der vorhandenen GPU klicken.

    8. Lesen Sie den Abschnitt Bei Hostwartung.

      • Wenn Sie einer Instanz GPUs hinzugefügt haben, wird die Einstellung für die Hostwartung automatisch auf VM-Instanz beenden gesetzt. Siehe GPU-Hostwartungsereignisse verarbeiten.
      • Wenn Sie GPUs aus der Instanz entfernt haben, können Sie optional die Einstellung für die Hostwartung auf VM-Instanz migrieren zurücksetzen.
    9. Klicken Sie unten auf der Seite auf Speichern, um die Änderungen zu übernehmen.

    10. Nach dem Speichern der Instanzeinstellungen klicken Sie oben auf der Seite auf Starten, um die Instanz wieder hochzufahren.

API

Sie können GPUs zu Ihrer Instanz hinzufügen oder aus ihr entfernen, indem Sie die Instanz beenden und die Konfiguration der Instanz über die API ändern.

  1. Prüfen Sie, ob alle Ihre kritischen Anwendungen auf der Instanz angehalten wurden. Erstellen Sie dann einen POST-Befehl, um die Instanz zu beenden, damit sie auf ein Hostsystem verschoben werden kann, in dem GPUs verfügbar sind.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/stop
    

    Dabei gilt:

    • instance-name: Der Name der Instanz, die gestoppt werden soll. Das ist die Instanz, an die Sie GPUs anhängen möchten.
    • zone: Die Zone, in der sich die Instanz befindet.
  2. Identifizieren Sie den GPU-Typ, den Sie Ihrer Instanz hinzufügen möchten. Senden Sie eine GET-Anfrage, um die GPU-Typen aufzulisten, die Ihrem Projekt in einer bestimmten Zone zur Verfügung stehen.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes
    

    Ersetzen Sie Folgendes:

    • project-id: Ihre Projekt-ID.
    • zone: Die Zone, deren verfügbare GPU-Typen Sie auflisten möchten.
  3. Handelt es sich bei der Instanz um einen Maschinentyp mit gemeinsam genutztem Kern, müssen Sie den Maschinentyp ändern und eine oder mehrere vCPUs angeben. Sie können Instanzen mit Maschinentypen mit gemeinsam genutztem Kern keine Beschleuniger hinzufügen.

  4. Nachdem die Instanz beendet wurde, erstellen Sie eine POST-Anfrage, um Ihrer Instanz eine oder mehrere GPUs hinzuzufügen oder daraus zu entfernen.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setMachineResources
    
        {
         "guestAccelerators": [
          {
            "acceleratorCount": accelerator-count,
            "acceleratorType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
          }
         ]
        }
    

    Dabei gilt:

    • instance-name: Der Name der Instanz.
    • project-id: Ihre Projekt-ID.
    • zone: Die Zone für diese Instanz.
    • accelerator-count: Die Anzahl der GPUs, die Sie Ihrer Instanz anhängen möchten. Eine Liste der GPU-Limits je nach Maschinentyp Ihrer Instanz finden Sie unter GPUs in Compute Engine.
    • accelerator-type: Das GPU-Modell, das Sie verwenden möchten. Eine Liste der verfügbaren GPU-Modelle finden Sie unter GPUs in Compute Engine.
  5. Erstellen Sie einen POST-Befehl, um die Zeitplanoptionen für die Instanz festzulegen. Wenn Sie einer Instanz GPUs hinzufügen, müssen Sie "onHostMaintenance": "TERMINATE" angeben. Wenn Sie GPUs aus einer Instanz entfernen, können Sie optional "onHostMaintenance": "MIGRATE" angeben.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/setScheduling
    
    {
    "onHostMaintenance": "maintenance-type",
    "automaticRestart": true
    }
    

    Dabei gilt:

    • instance-name: Der Name der Instanz, der GPUs hinzugefügt werden sollen.
    • zone: Die Zone, in der sich die Instanz befindet.
    • maintenance-type: Die Aktion, die Ihre Instanz ausführen soll, wenn der Host gewartet werden muss. Geben Sie TERMINATE an, wenn Sie Ihrer Instanz GPUs hinzufügen. Alternativ können Sie "onHostMaintenance": "MIGRATE" angeben, wenn Sie alle GPUs aus Ihrer Instanz entfernt haben und die Instanz die Migration bei Hostwartungsereignissen wiederaufnehmen soll.
  6. Starten Sie die Instanz:

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/start
    

    Dabei gilt:

    • instance-name: Der Name der Instanz, der Sie GPUs hinzufügen möchten.
    • zone: Die Zone, in der sich die Instanz befindet.

Anschließend installieren Sie den GPU-Treiber auf der Instanz, damit Ihr System das Gerät verwenden kann.

Nächste Schritte