GPUs hinzufügen oder entfernen

Google Compute Engine stellt Grafikprozessoren (GPUs) zur Verfügung, 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.

Vorbereitung

Instanz mit einer GPU erstellen

Bevor Sie eine Instanz mit einer GPU erstellen, wählen Sie aus, welches Bootlaufwerk-Image für die Instanz verwendet werden soll, und achten Sie darauf, dass der entsprechende GPU-Treiber installiert ist.

Wenn Sie GPUs für maschinelles Lernen nutzen, können Sie ein Deep Learning VM-Image für Ihre Instanz verwenden. Deep Learning VM-Images haben vorinstallierte GPU-Treiber und enthalten Pakete wie TensorFlow und PyTorch. Sie können die Deep Learning VM-Images auch für allgemeine GPU-Arbeitslasten verwenden. Informationen zu den verfügbaren Images und den dort installierten Paketen finden Sie in der Deep Learning VM-Dokumentation.

Sie können auch ein beliebiges öffentliche Image oder ein benutzerdefiniertes Image verwenden. Manche Images erfordern aber unter Umständen einen speziellen Treiber oder einen Installationsvorgang, der in dieser Anleitung nicht behandelt wird. Sie müssen ermitteln, welche Treiber für Ihre Images geeignet sind.

Hinweise zur Installation von Treibern finden Sie unter GPU-Treiber installieren.

Wenn Sie eine Instanz mit einer oder mehreren GPUs erstellen, muss sie so eingestellt werden, dass sie während einer Hostwartung beendet wird. Instanzen mit GPUs können keine Livemigration ausführen, da sie bestimmten Hardwaregeräten zugewiesen sind. Weitere Informationen dazu finden Sie unter GPU-Einschränkungen.

Für das Erstellen einer Instanz mit einer oder mehreren GPUs können Sie die Google Cloud Platform Console, das gcloud-Befehlszeilentool oder die API verwenden.

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 Betriebssystemimages ein Image aus.
  11. Klicken Sie auf Auswählen, um Ihre Bootlaufwerksoptionen zu bestätigen.
  12. Optional können Sie ein Startskript einfügen, durch das beim Hochfahren der Instanz der GPU-Treiber installiert wird. Geben Sie im Abschnitt Automatisierung unter Startskript den Inhalt Ihres Startskripts ein. Beispielskripts hierzu finden Sie unter GPU-Treiber installieren.
  13. Konfigurieren Sie alle weiteren erforderlichen Instanzeinstellungen. Sie können beispielsweise die Einstellungen für die Präemptivität ä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.
  14. Klicken Sie unten auf der Seite auf Erstellen, um die Instanz zu erstellen.

gcloud

Mit dem Befehl regions describe prüfen Sie, ob Ihnen ein ausreichendes GPU-Kontingent in der Region zur Verfügung steht, in der Sie Instanzen mit GPUs erstellen möchten.

gcloud compute regions describe [REGION]

Dabei ist [REGION] die Region, für die Sie das GPU-Kontingent prüfen möchten.

Starten einer Instanz mit dem neuesten Image aus einer Imagefamilie:

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 \
    --metadata startup-script='[STARTUP_SCRIPT]' \
    [--preemptible]

Dabei gilt:

  • [INSTANCE_NAME] ist der Name der neuen Instanz.
  • [MACHINE_TYPE] ist der Maschinentyp, den Sie für die Instanz ausgewählt haben. Unter GPUs in Compute Engine finden Sie, welche Maschinentypen basierend auf der von Ihnen gewünschten Anzahl an GPUs verfügbar sind.
  • [ZONE] ist die Zone für diese Instanz.
  • [IMAGE_FAMILY] ist eine der verfügbaren Image-Familien.
  • [ACCELERATOR_COUNT] ist 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] ist das GPU-Modell, das Sie verwenden möchten. Verwenden Sie einen der folgenden Werte:

    • NVIDIA® Tesla® T4: nvidia-tesla-t4
    • NVIDIA® Tesla® T4 Virtuelle Workstation mit NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® Tesla® P4: nvidia-tesla-p4
    • NVIDIA® Tesla® P4 Virtuelle Workstation mit NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® Tesla® P100: nvidia-tesla-p100
    • NVIDIA® Tesla® P100 Virtuelle 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.

  • [IMAGE_PROJECT] ist das Image-Projekt, zu dem die Image-Familie gehört.

  • [STARTUP_SCRIPT] ist ein optionales Startskript, mit dem Sie den GPU-Treiber installieren können, während die Instanz hochfährt. Weitere Beispiele hierzu finden Sie unter GPU-Treiber installieren.

  • --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 beispielsweise den folgenden gcloud-Befehl verwenden, um eine Ubuntu 16.04-Instanz mit einer NVIDIA® Tesla® K80-GPU und 2 vCPUs in der Zone us-east1-d zu starten. Durch die Metadaten von startup-script wird die Instanz angewiesen, das CUDA-Toolkit mit der empfohlenen Treiberversion zu installieren:

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 \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

Dieser Befehl startet zum Beispiel die Instanz, aber es wird einige Minuten dauern, bis CUDA und der Treiber fertig installiert sind.

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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes

Dabei gilt:

  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [ZONE] ist die Zone, deren verfügbare GPU-Typen Sie auflisten möchten.

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

POST https://www.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/n1-highmem-2",
  "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]
  },
  "metadata":
  {
    "items":
    [
      {
        "key": "startup-script",
        "value": "[STARTUP_SCRIPT]"
      }
    ]
  }
}

Dabei gilt:

  • [INSTANCE_NAME] ist der Name der Instanz.
  • [PROJECT_ID] ist Ihre Projekt-ID.
  • [ZONE] ist die Zone für diese Instanz.
  • [MACHINE_TYPE] ist 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_PROJECT] ist das Image-Projekt, zu dem das Image gehört.
  • [IMAGE_FAMILY] ist das Image des Bootlaufwerks für Ihre Instanz. Geben Sie eine Image-Familie aus der Liste der verfügbaren öffentlichen Images an.
  • [DISK_SIZE] ist die Größe Ihres Bootlaufwerks in GB.
  • [NETWORK] ist das VPC-Netzwerk, das Sie für diese Instanz verwenden möchten. Geben Sie default an, um Ihr Standardnetzwerk auszuwählen.
  • [ACCELERATOR_COUNT] ist 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] ist das GPU-Modell, das Sie verwenden möchten. Unter GPUs in Compute Engine finden Sie eine Liste der verfügbaren GPU-Modelle.
  • [STARTUP_SCRIPT] ist ein optionales Startskript, mit dem Sie den GPU-Treiber installieren können, während die Instanz hochfährt. Weitere Beispiele hierzu finden Sie unter GPU-Treiber installieren.
  • "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.

Wenn Sie ein Startskript verwendet haben, um den GPU-Gerätetreiber automatisch zu installieren, prüfen Sie, ob der GPU-Treiber korrekt installiert wurde.

Wenn Sie kein Startskript zum Installieren des GPU-Treibers während der Erstellung der Instanz verwenden, dann installieren Sie den GPU-Treiber manuell so auf Ihrer Instanz, dass Ihr System das Gerät verwenden kann.

GPUs auf vorhandenen Instanzen hinzufügen oder entfernen

Sie können auf Ihren vorhandenen Instanzen GPUs hinzufügen oder entfernen, Sie müssen dazu aber zuerst die Instanz anhalten und ihre Host-Wartungseinstellung so ändern, dass sie herunterfährt, statt eine Livemigration durchzuführen. Instanzen mit GPUs können keine Livemigration 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. Vom Bootlaufwerk-Image, mit dem Sie diese Instanz erstellt haben, hängt ab, 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.

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

Console

Um GPUs in Ihrer Instanz hinzuzufügen oder daraus zu entfernen, beenden Sie die Instanz und bearbeiten Sie die Konfiguration der Instanz.

  1. Prüfen Sie, ob alle kritischen Anwendungen auf der Instanz angehalten wurden. Sie müssen die Instanz beenden, bevor Sie eine GPU hinzufügen können.

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

    Zur Seite "VM-Instanzen"

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

  4. Klicken Sie oben auf der Seite mit den Instanzdetails auf Beenden, um die Instanz zu beenden.

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

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

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

  8. Klicken Sie auf GPUs, um die Liste verfügbarer GPUs aufzurufen.

  9. Wählen Sie die Anzahl der GPUs und das GPU-Modell aus, das Sie der Instanz hinzufügen möchten. Sie können die Anzahl der GPUs auch auf Keine festlegen, dann werden vorhandene GPUs aus der Instanz entfernt.

  10. Wenn Sie einer Instanz GPUs hinzugefügt haben, setzen Sie die Einstellung für die Hostwartung auf Beenden. Wenn Sie GPUs aus der Instanz entfernt haben, können Sie optional die Einstellung für die Hostwartung auf VM-Instanz migrieren zurücksetzen.

  11. Klicken Sie unten auf der Seite auf Speichern, um die Änderungen zu übernehmen.

  12. Nach dem Speichern der Instanzeinstellungen klicken Sie oben auf der Seite mit den Instanzdetails 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://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/stop
    

    Dabei gilt:

    • [INSTANCE_NAME] ist der Name der Instanz, der Sie GPUs hinzufügen möchten.
    • [ZONE] ist 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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes
    

    Dabei gilt:

    • [PROJECT_ID] ist Ihre Projekt-ID.
    • [ZONE] ist 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://www.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] ist der Name der Instanz.
    • [PROJECT_ID] ist Ihre Projekt-ID.
    • [ZONE] ist die Zone für diese Instanz.
    • [ACCELERATOR_COUNT] ist die Anzahl der GPUs, die Sie für Ihre Instanz wünschen. Unter GPUs in Compute Engine finden Sie eine Liste der GPU-Limits, basierend auf dem Maschinentyp Ihrer Instanz.
    • [ACCELERATOR_TYPE] ist das GPU-Modell, das Sie verwenden möchten. Unter GPUs in Compute Engine finden Sie eine Liste der verfügbaren GPU-Modelle.
  5. Erstellen Sie einen POST-Befehl, um die Zeitplanoptionen für die Instanz festzulegen. Wenn Sie GPUs einer Instanz hinzufügen, müssen Sie "onHostMaintenance": "TERMINATE" angeben. Wenn Sie GPUs aus einer Instanz entfernen, können Sie optional "onHostMaintenance": "MIGRATE" angeben.

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/setScheduling
    
    {
     "onHostMaintenance": "[MAINTENANCE_TYPE]",
     "automaticRestart": true
    }
    

    Dabei gilt:

    • [INSTANCE_NAME] ist der Name der Instanz, der Sie GPUs hinzufügen möchten.
    • [ZONE] ist die Zone, in der sich die Instanz befindet.
    • [MAINTENANCE_TYPE] ist die Aktion, die Ihre Instanz ausführen soll, wenn eine Hostwartung erforderlich ist. Geben Sie TERMINATE an, wenn Sie Ihrer Instanz GPUs hinzufügen. Alternativ können Sie auch "onHostMaintenance": "MIGRATE" angeben, wenn Sie alle GPUs aus der Instanz entfernt haben und wenn Sie möchten, dass die Instanz bei Ereignissen der Hostwartung die Migration fortsetzt.
  6. Starten Sie die Instanz:

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/start
    

    Dabei gilt:

    • [INSTANCE_NAME] ist der Name der Instanz, der Sie GPUs hinzufügen möchten.
    • [ZONE] ist 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.

Gruppen von GPU-Instanzen mit Instanzvorlagen erstellen

Mit Instanzvorlagen können Sie verwaltete Instanzgruppen erstellen und dabei jeder Instanz GPUs hinzufügen. Verwaltete Instanzgruppen verwenden die Vorlage, um mehrere identische Instanzen zu erstellen. Sie können die Anzahl der Instanzen in der Gruppe entsprechend Ihrer Arbeitslast skalieren.

Schritte zum Erstellen einer Instanzvorlage finden Sie unter Instanzvorlagen erstellen.

Wenn Sie die Instanzvorlage mit der Console (EN) erstellen, passen Sie den Maschinentyp an und wählen Sie den Typ sowie die Anzahl der GPUs aus, die Sie der Instanzvorlage hinzufügen möchten.

Wenn Sie das gcloud-Befehlszeilentool verwenden, nutzen Sie auch die Flags --accelerators und --maintenance-policy TERMINATE. Sie können dabei optional das Flag --metadata startup-script und ein Startskript angeben, damit der GPU-Treiber beim Hochfahren der Instanz installiert wird. Beispielskripts für GPU-Instanzen finden Sie unter Installieren von GPU-Treibern.

Im folgenden Beispiel wird eine Instanzvorlage mit 2 vCPUs, einem Bootlaufwerk mit 250 GB und Ubuntu 16.04, einer NVIDIA® Tesla® K80-GPU und einem Startskript erstellt. Durch das Startskript wird das CUDA-Toolkit mit der empfohlenen Treiberversion installiert.

gcloud beta compute instance-templates create gpu-template \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

Verwenden Sie die neue Vorlage, um eine Instanzgruppe zu erstellen. Jedes Mal, wenn Sie der Gruppe eine Instanz hinzufügen, wird die Instanz mit den Einstellungen in der Instanzvorlage hochgefahren.

Wenn Sie eine regional verwaltete Instanzgruppe erstellen, müssen Sie Zonen auswählen, die das gewünschte GPU-Modell unterstützen. Eine Liste der GPU-Modelle und verfügbaren Zonen finden Sie unter GPUs in Compute Engine. Im folgenden Beispiel wird eine regional verwaltete Instanzgruppe über zwei Zonen erstellt, die das nvidia-tesla-k80-Modell unterstützen.

gcloud beta compute instance-groups managed create example-rmig \
    --template gpu-template --base-instance-name example-instances \
    --size 30 --zones us-east1-c,us-east1-d

Hinweis: Verwenden Sie für die Auswahl bestimmter Zonen die Komponente gcloud beta, da sich das Feature zur Zonenauswahl derzeit in der Betaphase befindet.

Weitere Informationen zum Verwalten und Skalieren von Instanzgruppen finden Sie unter Verwaltete Instanzgruppen erstellen.

GPU-Treiber installieren

Nachdem Sie eine Instanz mit einer oder mehreren GPUs erstellt haben, benötigt Ihr System Gerätetreiber, damit Ihre Anwendungen auf das Gerät zugreifen können. Diese Übersicht erläutert die Möglichkeiten zur Installation von NVIDIA-eigenen Treibern für Instanzen mit öffentlichen Images.

Zum Installieren von GPU-Treibern können Sie eine der folgenden Optionen wählen:

GPU-Treiber mithilfe von Skripts installieren

Für jede CUDA-Version ist mindestens eine GPU-Treiberversion oder eine neuere Version erforderlich. Informationen zum Überprüfen des für Ihre CUDA-Version erforderlichen Mindesttreibers finden Sie unter CUDA Toolkit und kompatible Treiberversionen.

NVIDIA-GPUs, die auf Google Compute Engine ausgeführt werden, müssen die folgenden Treiberversionen verwenden:

  • Linux-Instanzen:

    • NVIDIA-Treiber 410.79 oder höher
  • Windows Server-Instanzen:

    • NVIDIA-Treiber 426.00 oder höher

Bei den meisten Treiberinstallationen können Sie diese Treiber abrufen, indem Sie das NVIDIA CUDA-Toolkit installieren.

Bei einigen Images können Sie Skripts verwenden, um den Installationsvorgang des Treibers zu vereinfachen. Sie können diese Skripts entweder als Startskripts auf Ihren Instanzen festlegen oder auf Ihre Instanzen kopieren und als Nutzer mit sudo-Rechten über das Terminal ausführen.

Sie müssen das Skript so vorbereiten, dass es mit dem ausgewählten Bootlaufwerk-Image zusammenarbeitet. Wenn Sie ein benutzerdefiniertes Bootlaufwerk-Image für Ihre Instanzen importieren, dann müssen Sie das Startskript eventuell anpassen, damit es ordnungsgemäß mit diesem benutzerdefinierten Image zusammenarbeitet.

Bei Windows Server-Instanzen und SLES 12-Instanzen, bei denen Sie den Installationsvorgang des Treibers nicht automatisieren können, installieren Sie den Treiber manuell.

Die folgenden Beispiele sind Startskripts, die CUDA und die zugehörigen Treiber für NVIDIA®-GPUs auf öffentlichen Images installieren. Wenn die von Ihnen verwendete Software eine bestimmte Version von CUDA erfordert, ändern Sie das Skript so, dass die von Ihnen benötigte Version von CUDA heruntergeladen wird.

Informationen zum Support von CUDA und zu Schritten zum Ändern Ihrer CUDA-Installation finden Sie in der CUDA Toolkit-Dokumentation (in englischer Sprache).

Sie können durch Überprüfung der Logs oder mit der seriellen Konsole feststellen, ob ein Startskript ausgeführt wurde.

CentOS

Diese Beispielskripts prüfen, ob eine CUDA-Installation vorhanden ist, und installieren dann das vollständige CUDA 10-Paket und den zugehörigen proprietären Treiber.

CentOS 7 – CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

Instanzen mit CentOS 7-Images müssen unter Umständen neu gestartet werden, nachdem die Treiber und die CUDA-Pakete durch das Skript installiert wurden. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

CentOS 6 – CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

Instanzen mit CentOS 6-Images müssen unter Umständen neu gestartet werden, nachdem die Treiber und die CUDA-Pakete durch das Skript installiert wurden. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL

Diese Beispielskripts prüfen, ob eine CUDA-Installation vorhanden ist, und installieren dann das vollständige CUDA 10-Paket und den zugehörigen proprietären Treiber.

RHEL 7 – CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

Instanzen mit RHEL 7-Images müssen möglicherweise neu gestartet werden, nachdem die Treiber und die CUDA-Pakete durch das Skript installiert wurden. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL 6 – CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi

Instanzen mit RHEL 6-Images müssen unter Umständen neu gestartet werden, nachdem die Treiber und die CUDA-Pakete durch das Skript installiert wurden. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

Sie können über die serielle Konsole überprüfen, ob das Skript fertiggestellt ist.

SLES

SLES 15 – CUDA 10:

Dieses Beispielskript prüft, ob ein Installationsprogramm für CUDA existiert, und installiert dann das komplette CUDA 10-Paket und den zugehörigen proprietären Treiber.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles15-10.0.130-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-10-0
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  zypper install -ny cuda-10-0
fi

SLES 12 Service Pack 3 - CUDA 9.1:

Dieses Beispielskript prüft, ob ein Installationsprogramm für CUDA existiert, und installiert dann das komplette CUDA 9.1-Paket und den zugehörigen proprietären Treiber.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-9-1; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles123-9.1.85-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-9-1
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-9-1; then
  zypper install -ny cuda-9-1
fi

SLES: 12

In anderen SLES 12-Instanzen installieren Sie den Treiber manuell.

Ubuntu

Ubuntu 18.04 – Cuda 10:

Dieses Beispielskript prüft, ob ein Installationsprogramm für CUDA existiert, und installiert dann das komplette CUDA 10-Paket und den zugehörigen proprietären Treiber.

 #!/bin/bash
 echo "Checking for CUDA and installing."
 # Check for CUDA and try to install.
 if ! dpkg-query -W cuda-10-0; then
   curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   dpkg -i ./cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
   apt-get update
   apt-get install cuda-10-0 -y
 fi

Ubuntu 17.04 und 17.10 – CUDA 9:

Dieses Beispielskript prüft, ob ein Installationsprogramm für CUDA existiert, und installiert dann das komplette CUDA 9-Paket und den zugehörigen proprietären Treiber.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-9-0; then
  # The 17.04 installer works with 17.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-9-0 -y
fi

Ubuntu 16.04 LTS – CUDA 10:

Dieses Beispielskript prüft, ob ein Installationsprogramm für CUDA existiert, und installiert dann das komplette CUDA 10-Paket und den zugehörigen proprietären Treiber.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-10-0; then
  # The 16.04 installer works with 16.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-10-0 -y
fi

Windows Server

In der Windows Server-Instanz müssen Sie den Treiber manuell installieren.

Nachdem Ihr Skript beendet ist, können Sie verifizieren, ob der GPU-Treiber installiert worden ist.

GPU-Treiber manuell installieren

Wenn Sie kein Skript zum Installieren des Treibers für Ihre GPUs verwenden können, dann können Sie den Treiber selbst manuell installieren. Sie sind selbst für die Auswahl des Installationsprogramms und der Treiberversion verantwortlich, die sich am besten für Ihre Anwendung eignen. Verwenden Sie diese Installationsmethode, wenn Sie einen speziellen Treiber benötigen oder den Treiber auf einem benutzerdefinierten Image oder auf einem öffentlichen Image installieren müssen, das nicht mit einem der Installationsskripts funktioniert.

Sie können diese Methode anwenden, um Treiber in Instanzen mit den gängigsten öffentlichen Images manuell zu installieren. Für benutzerdefinierte Images müssen Sie eventuell die Methode modifizieren, damit sie in Ihrer individuellen Umgebung funktioniert.

CentOS

  1. Stellen Sie eine Verbindung zu der Instanz her, auf der Sie den Treiber installieren möchten.

  2. Installieren Sie Kernelheader und Entwicklungspakete.

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. Wählen Sie ein Treiber-Repository aus und fügen Sie es Ihrer Instanz hinzu. Laden Sie beispielsweise mit curl das CUDA-Toolkit herunter und fügen Sie das Repository Ihrem System mit dem Befehl rpm hinzu:

    • CentOS 7

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • CentOS 6

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. Installieren Sie das Repository epel-release. Dieses Repository enthält die DKMS-Pakete, die zum Installieren der NVIDIA-Treiber auf CentOS erforderlich sind.

    sudo yum install epel-release
    
  5. Leeren Sie den Yum-Cache:

    sudo yum clean all
    
  6. Installieren Sie CUDA 10, das auch den NVIDIA-Treiber enthält.

    sudo yum install cuda-10-0
    
  7. Bei Instanzen mit CentOS-Images müssen Sie die Instanz unter Umständen neu starten, nachdem Sie die Treiber und die CUDA-Pakete installiert haben. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    

RHEL

  1. Stellen Sie eine Verbindung zu der Instanz her, auf der Sie den Treiber installieren möchten.

  2. Installieren Sie Kernelheader und Entwicklungspakete.

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. Wählen Sie ein Treiber-Repository aus und fügen Sie es Ihrer Instanz hinzu. Laden Sie beispielsweise mit curl das CUDA-Toolkit herunter und fügen Sie das Repository Ihrem System mit dem Befehl rpm hinzu:

    • RHEL 7

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • RHEL 6

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. Installieren Sie das Repository epel-release. Dieses Repository enthält die DKMS-Pakete, die erforderlich sind, um die NVIDIA-Treiber zu installieren. Bei RHEL müssen Sie das .rpm für dieses Repository bei fedoraproject.org herunterladen und in Ihrem System einfügen.

    • RHEL 7

      curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
      sudo rpm -i epel-release-latest-7.noarch.rpm
      
    • RHEL 6

      curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
      
      sudo rpm -i epel-release-latest-6.noarch.rpm
      
  5. Leeren Sie den Yum-Cache:

    sudo yum clean all
    
  6. Installieren Sie CUDA 10, das auch den NVIDIA-Treiber enthält.

    sudo yum install cuda-10-0
    
  7. Bei Instanzen mit RHEL-Images müssen Sie die Instanz unter Umständen neu starten, nachdem Sie die Treiber und die CUDA-Pakete installiert haben. Starten Sie die Instanz neu, wenn das Skript beendet wurde und der Befehl nvidia-smi den folgenden Fehler zurückgibt:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    

SLES

  1. Stellen Sie eine Verbindung zu der Instanz her, auf der Sie den Treiber installieren möchten.

  2. Wählen Sie ein Treiber-Repository aus und fügen Sie es Ihrer Instanz hinzu. Laden Sie beispielsweise mit curl das CUDA-Toolkit herunter und fügen Sie das Repository Ihrem System mit dem Befehl rpm hinzu:

    • SLES 15

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
    • SLES 12 mit Service Pack 3

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
    • SLES 12 mit Service Pack 2

      curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles122/x86_64/cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
      sudo rpm -i cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
  3. Aktualisieren Sie Zypper:

    sudo zypper refresh
    
  4. Installieren Sie CUDA, das auch den NVIDIA-Treiber enthält.

    zypper install cuda
    

Ubuntu

  1. Stellen Sie eine Verbindung zu der Instanz her, auf der Sie den Treiber installieren möchten.

  2. Wählen Sie ein Treiber-Repository aus und fügen Sie es Ihrer Instanz hinzu. Laden Sie beispielsweise mit curl das CUDA-Toolkit herunter und fügen Sie das Repository Ihrem System mit dem Befehl dpkg hinzu. Verwenden Sie anschließend den Befehl apt-key, um den Download zu authentifizieren:

    • Ubuntu 18.04

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 17.04 und 17.10

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 16.04 und 16.10 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      
      sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      
  3. Aktualisieren Sie die Liste der Pakete:

    sudo apt-get update
    
  4. Installieren Sie CUDA, das auch den NVIDIA-Treiber enthält.

    • Ubuntu 16.04, 16.10 und 18.04

      sudo apt-get install cuda-10-0
      
    • Ubuntu 17.04 und 17.10

      sudo apt-get install cuda-9-0
      

Windows Server

  1. Stellen Sie eine Verbindung zu der Instanz her, auf der Sie den Treiber installieren möchten.

  2. Laden Sie eine .exe-Installationsdatei auf Ihre Instanz herunter, die den R426-Branch enthält: den NVIDIA-Treiber 426.00 oder höher. Für die meisten Windows Server-Instanzen können Sie eine der folgenden Optionen verwenden:

    In Windows Server 2019 können Sie beispielsweise ein PowerShell-Terminal als Administrator öffnen und mit dem Befehl wget das benötigte Treiberinstallationsprogramm herunterladen:

    PS C:\> wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe -O cuda_10.1.243_win10_network.exe
  3. Führen Sie das .exe-Installationsprogramm aus. Sie können zum Beispiel ein PowerShell-Terminal als Administrator öffnen und den folgenden Befehl ausführen.

    PS C:\> .\\cuda_10.1.243_win10_network.exe
    

Überprüfen Sie nach der Ausführung des Installationsprogramms, ob der GPU-Treiber installiert ist.

Installieren des GPU-Treibers bestätigen

Nachdem die Installation des Treibers abgeschlossen ist, verifizieren Sie, ob der Treiber ordnungsgemäß installiert und initialisiert worden ist.

Linux

Stellen Sie eine Verbindung zur Linux-Instanz her und prüfen Sie mit dem Befehl nvidia-smi, ob der Treiber korrekt ausgeführt wird:

nvidia-smi

Wed Jan  2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P8     7W /  75W |     62MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

Stellen Sie eine Verbindung zur Windows Server-Instanz her und prüfen Sie mit dem Tool nvidia-smi.exe, ob der Treiber korrekt ausgeführt wird:

PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe'

Mon Aug 26 18:09:03 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 426.00      Driver Version: 426.00       CUDA Version: 10.1      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            TCC  | 00000000:00:04.0 Off |                    0 |
| N/A   27C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Wenn der Treiber nicht funktioniert und Sie zum Installieren des Treibers ein Skript verwendet haben, prüfen Sie die Startskript-Logs, um sicherzustellen, dass das Skript beendet wurde und nicht während der Installation fehlgeschlagen ist.

GRID®-Treiber für virtuelle Workstations installieren

Eine vollständige Liste der NVIDIA-Treiber, die Sie in Compute Engine verwenden können, finden Sie in der Dokumentation zum Cloud Storage-Bucket für NVIDIA-Treiber.

Linux

  1. Laden Sie den GRID-Treiber mit dem folgenden Befehl herunter:

    curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
    
  2. Starten Sie das Installationsprogramm mit dem folgenden Befehl:

    sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
    
  3. Wählen Sie während der Installation die folgenden Optionen aus:

    • Wenn Sie aufgefordert werden, 32-Bit-Binärdateien zu installieren, wählen Sie Ja aus.
    • Wenn Sie aufgefordert werden, die Datei x.org zu ändern, wählen Sie Nein aus.

Windows Server

  1. Laden Sie je nach Windows Server-Version einen der folgenden NVIDIA GRID-Treiber herunter:

  2. Führen Sie das Installationsprogramm aus und entscheiden Sie sich für die Express-Installation.

  3. Starten Sie die VM nach Abschluss der Installation neu. Sie werden dann von Ihrer Sitzung getrennt.

  4. Stellen Sie mithilfe von RDP oder einem PCoIP-Client eine neue Verbindung zur Instanz her.

Prüfen, ob der GRID-Treiber installiert wurde

Linux

Führen Sie diesen Befehl aus:

nvidia-smi

Die Ausgabe sieht dann ungefähr so aus:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92                Driver Version: 410.92                     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   34C    P0    26W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

  1. Stellen Sie über RDP oder einen PCoIP-Client eine Verbindung zu Ihrer Windows-Instanz her.

  2. Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie NVIDIA Systemsteuerung aus.

  3. Wählen Sie in der NVIDIA Systemsteuerung im Hilfemenü die Option Systeminformationen aus. Hier werden die von der VM verwendete GPU und die Treiberversion angezeigt.

GPU-Leistung überwachen und optimieren

GPU-Leistung überwachen

Zur besseren Ressourcenauslastung können Sie die GPU-Nutzungsraten Ihrer Instanzen verfolgen. Wenn Sie die GPU-Nutzungsraten kennen, können Sie Arbeitsschritte wie das Einrichten verwalteter Instanzgruppen ausführen, um Ressourcen bedarfsorientiert automatisch zu skalieren.

Führen Sie die folgenden Schritte aus, um GPU-Messwerte mit Stackdriver zu prüfen:

  1. Richten Sie auf jeder VM-Instanz das Berichtsskript für GPU-Messwerte ein. Dieses Skript führt die folgenden Aufgaben aus:

    • Installiert den Berichts-Agent für GPU-Messwerte. Dieser Agent wird in regelmäßigen Abständen auf der Instanz ausgeführt, um GPU-Daten zu erfassen und dann an Stackdriver zu senden.
    • Erstellt das Messwertfeld custom/gpu_utilization in Stackdriver. In diesem Feld werden GPU-spezifische Daten gespeichert, die Sie in Stackdriver analysieren können.
  2. Sehen Sie sich Logs in Stackdriver an.

Berichtsskript für GPU-Messwerte einrichten

  1. Prüfen Sie auf allen VM-Instanzen, ob die folgenden Anforderungen erfüllt werden:

  2. Installieren Sie auf jeder VM-Instanz den GPU-Messwert-Agent. Gehen Sie dazu so vor:

    1. Laden Sie das Berichtsskript für GPU-Messwerte herunter:

      git clone https://github.com/GoogleCloudPlatform/tensorflow-inference-tensorrt5-t4-gpu.git
      
    2. Wechseln Sie in den Ordner metrics_reporting:

      cd tensorflow-inference-tensorrt5-t4-gpu/metrics_reporting
      
    3. Richten Sie die Installationsumgebung für den Messwert-Agent ein:

      pip install -r ./requirenments.txt
      
    4. Verschieben Sie das Messwert-Berichtsskript in Ihr Stammverzeichnis:

      sudo cp report_gpu_metrics.py /root/
      
    5. Aktivieren Sie den GPU-Messwert-Agent:

      cat <<-EOH > /lib/systemd/system/gpu_utilization_agent.service
      [Unit]
      Description=GPU Utilization Metric Agent
      [Service]
      Type=simple
      PIDFile=/run/gpu_agent.pid
      ExecStart=/bin/bash --login -c '/usr/bin/python /root/report_gpu_metrics.py'
      User=root
      Group=root
      WorkingDirectory=/
      Restart=always
      [Install]
      WantedBy=multi-user.target
      EOH
      
    6. Laden Sie den System-Daemon neu:

      systemctl daemon-reload
      
    7. Aktivieren Sie den GPU-Monitoringdienst:

      systemctl --no-reload --now enable /lib/systemd/system/gpu_utilization_agent.service
      

Messwerte in Stackdriver prüfen

  1. Rufen Sie die Metrics Explorer-Seite in Stackdriver auf.

  2. Suchen Sie gpu_utilization.

    Screenshot der Initiierung von Stackdriver

  3. Ihre GPU-Auslastung sollte der folgenden Ausgabe entsprechen:

    Screenshot von laufendem Stackdriver

  4. (Optional) Richten Sie Autoscaling mithilfe verwalteter Instanzgruppen ein. Für den Anfang können Sie den Abschnitt Mehrzonencluster einrichten in der Anleitung zu TensorFlow-Inferenzarbeitslasten lesen.

GPU-Leistung optimieren

Sie können die Leistung auf Instanzen mit NVIDIA® Tesla® K80-GPUs optimieren, indem Sie die Autoboost-Funktion deaktivieren. Führen Sie dazu den folgenden Befehl aus:

sudo nvidia-smi --auto-boost-default=DISABLED

All done.

Hostwartungen

Für GPU-Instanzen ist keine Live-Migration möglich. GPU-Instanzen müssen zur Hostwartung beendet werden, können aber automatisch neu gestartet werden. Diese Wartungen werden normalerweise einmal pro Monat durchgeführt, können bei Bedarf aber auch häufiger erfolgen.

Damit Unterbrechungen Ihrer Arbeitslasten während eines Wartungsereignisses minimiert werden, können Sie den Wartungsplan für Ihre Instanz überwachen und Ihre Arbeitslasten auf den Übergang beim Neustart des Systems vorbereiten.

Um vorab eine Warnung über Hostwartungen zu erhalten, überwachen Sie den Metadatenwert /computeMetadata/v1/instance/maintenance-event. Wenn die Anfrage an den Metadatenserver NONE ergibt, dann ist eine Beendigung der Instanz nicht geplant. Führen Sie in der Instanz beispielsweise folgenden Befehl aus:

curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

NONE

Wenn der Metadatenserver TERMINATE_ON_HOST_MAINTENANCE zurückgibt, ist die Beendigung Ihrer Instanz geplant. Compute Engine gibt GPU-Instanzen eine einstündige Vorankündigung, während normale Instanzen nur eine Vorankündigung von 60 Sekunden erhalten. Konfigurieren Sie Ihre Anwendung für die Umstellung durch das Wartungsereignis. Beispielsweise können Sie eine der folgenden Methoden verwenden:

  • Konfigurieren Sie Ihre Anwendung so, dass laufende Arbeiten vorübergehend in einen Google Cloud Storage-Bucket verschoben werden. Rufen Sie diese Daten dann nach dem Neustart der Instanz ab.

  • Schreiben Sie Daten in einen sekundären nichtflüchtigen Speicher. Nachdem die Instanz automatisch neu gestartet wurde, kann der nichtflüchtige Speicher wieder angehängt werden und Ihre Anwendung die Arbeit fortsetzen.

Sie können auch ohne Abfrage eine Benachrichtigung über Änderungen an diesem Metadatenwert erhalten. Beispiele dafür, wie Sie eine erweiterte Benachrichtigung über Hostwartungen ohne Abfrage erhalten können, finden Sie in Live-Migrationshinweise abrufen.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation