GPU-Unterstützung für Dienste

Auf dieser Seite wird die GPU-Konfiguration für Ihre Cloud Run-Dienste beschrieben. GPUs eignen sich gut für KI-Inferenz-Arbeitslasten wie Large Language Models (LLMs) oder andere rechenintensive Nicht-KI-Anwendungsfälle wie Videotranscodierung und 3D-Rendering. Google stellt NVIDIA L4-GPUs mit 24 GB GPU-Arbeitsspeicher (VRAM) bereit, der vom Instanzarbeitsspeicher getrennt ist.

GPUs in Cloud Run werden vollständig verwaltet. Es sind keine zusätzlichen Treiber oder Bibliotheken erforderlich. Die GPU-Funktion bietet On-Demand-Verfügbarkeit ohne erforderliche Reservierungen, ähnlich wie bei On-Demand-CPUs und On-Demand-Arbeitsspeicher in Cloud Run. Instanzen eines Cloud Run-Dienstes, der für die Verwendung von GPUs konfiguriert wurde, können zur Kostensenkung auf null skaliert werden, wenn sie nicht verwendet werden.

Cloud Run-Instanzen mit einer angehängten L4-GPU mit vorinstallierten Treibern starten in etwa 5 Sekunden. Danach können die in Ihrem Container ausgeführten Prozesse die GPU verwenden.

Sie können eine GPU pro Cloud Run-Instanz konfigurieren. Wenn Sie Sidecar-Container verwenden, beachten Sie, dass die GPU nur an einen Container angehängt werden kann.

Unterstützte Regionen

  • asia-southeast1 (Singapur)
  • asia-south1 (Mumbai) . Diese Region ist nur auf Einladung verfügbar. Wenden Sie sich an Ihr Google-Konten-Team, wenn Sie an dieser Region interessiert sind.
  • europe-west1 (Belgien) Blattsymbol Niedriger CO2-Ausstoß
  • europe-west4 (Niederlande) Blattsymbol Niedriger CO2-Ausstoß
  • us-central1 (Iowa) Blattsymbol Niedriger CO2-Ausstoß
  • us-east4 (Northern Virginia)

Unterstützte GPU-Typen

Sie können eine L4-GPU pro Cloud Run-Instanz verwenden. Auf einer L4-GPU sind die folgenden Treiber vorinstalliert:

  • Die aktuelle NVIDIA-Treiberversion: 535.216.03 (CUDA 12.2)

Auswirkungen auf die Kosten

Weitere Informationen zu GPU-Preisen finden Sie unter Cloud Run – Preise. Beachten Sie die folgenden Anforderungen und Hinweise:

  • Es fallen keine Gebühren pro Anfrage an. Sie müssen die instanzbasierte Abrechnung verwenden, um die GPU-Funktion zu nutzen. Mindestinstanzen werden auch im Inaktivitätsstatus zum vollen Preis berechnet.
  • Es gibt einen Kostenunterschied zwischen zonaler GPU-Redundanz und nicht zonaler Redundanz. Weitere Informationen zu GPU-Preisen finden Sie unter Cloud Run – Preise.
  • Sie müssen mindestens 4 CPUs und 16 GiB Arbeitsspeicher verwenden.
  • Die GPU wird für die gesamte Dauer des Instanzlebenszyklus abgerechnet.

Optionen für die zonale GPU-Redundanz

Standardmäßig stellt Cloud Run Ihren Dienst in mehreren Zonen innerhalb einer Region bereit. Diese Architektur bietet eine inhärente Stabilität: Wenn es in einer Zone zu einem Ausfall kommt, leitet Cloud Run den Traffic automatisch von der betroffenen Zone zu fehlerfreien Zonen in derselben Region um.

Wenn Sie mit GPU-Ressourcen arbeiten, sollten Sie die spezifischen Kapazitätsbeschränkungen von GPU-Ressourcen beachten. Bei einem Zonenausfall hängt der Standard-Failover-Mechanismus für GPU-Arbeitslasten davon ab, dass in den verbleibenden fehlerfreien Zonen genügend ungenutzte GPU-Kapazität verfügbar ist. Aufgrund der begrenzten Verfügbarkeit von GPUs ist diese Kapazität möglicherweise nicht immer verfügbar.

Um die Verfügbarkeit Ihrer GPU-beschleunigten Dienste bei zonalen Ausfällen zu erhöhen, können Sie die zonale Redundanz speziell für GPUs konfigurieren:

  • Zonale Redundanz aktiviert (Standard): Cloud Run reserviert GPU-Kapazität für Ihren Dienst in mehreren Zonen. Dadurch wird die Wahrscheinlichkeit, dass Ihr Dienst den von einer betroffenen Zone umgeleiteten Traffic erfolgreich verarbeiten kann, erheblich erhöht. Dies bietet eine höhere Zuverlässigkeit bei zonalen Ausfällen, jedoch zu zusätzlichen Kosten pro GPU-Sekunde.

  • Zonale Redundanz deaktiviert: Cloud Run versucht, für GPU-Arbeitslasten auf Best-Effort-Basis ein Failover durchzuführen. Der Traffic wird nur dann an andere Zonen weitergeleitet, wenn zu diesem Zeitpunkt genügend GPU-Kapazität verfügbar ist. Diese Option garantiert keine reservierte Kapazität für Failover-Szenarien, führt aber zu niedrigeren Kosten pro GPU-Sekunde.

SLA

Die SLA für Cloud Run mit GPU hängt davon ab, ob für den Dienst die Option für zonale oder nicht zonale Redundanz verwendet wird. Weitere Informationen finden Sie auf der SLA-Seite.

Kontingenterhöhung anfordern

Projekten, in denen Cloud Run-nvidia-l4-GPUs in einer Region zum ersten Mal verwendet werden, wird automatisch ein GPU-Kontingent von 3 (zonale Redundanz deaktiviert) gewährt, wenn die erste Bereitstellung erstellt wird. Wenn Sie zusätzliche Cloud Run-GPUs benötigen, müssen Sie eine Kontingenterhöhung für Ihren Cloud Run-Dienst anfordern. Über die Links in den folgenden Schaltflächen können Sie das benötigte Kontingent anfordern.

Kontingent erforderlich Kontingentlink
GPU mit deaktivierter zonaler Redundanz (niedrigerer Preis) GPU-Kontingent ohne zonale Redundanz anfordern
GPU mit aktivierter zonaler Redundanz (höherer Preis) GPU-Kontingent mit zonaler Redundanz anfordern

Weitere Informationen zum Anfordern von Kontingenterhöhungen finden Sie unter Kontingent erhöhen.

Hinweise

In der folgenden Liste werden die Anforderungen und Einschränkungen bei der Verwendung von GPUs in Cloud Run beschrieben:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Enable the API

  7. Erforderliches Kontingent anfordern
  8. Empfehlungen zum Erstellen Ihres Container-Images und zum Laden großer Modelle finden Sie unter Best Practices: KI-Inferenz in Cloud Run mit GPUs.
  9. Achten Sie darauf, dass Ihr Cloud Run-Dienst die folgenden Konfigurationen hat:
  10. Erforderliche Rollen

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Dienste zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren und Bereitstellen von Cloud Run-Diensten benötigen:

    • Cloud Run-Entwickler (roles/run.developer) - der Cloud Run-Dienst
    • Dienstkontonutzer (roles/iam.serviceAccountUser) - die Dienstidentität

    Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mitGoogle Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

    Cloud Run-Dienst mit GPU konfigurieren

    Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

    Sie können die Google Cloud Console, die Google Cloud CLI oder YAML verwenden, um GPUs zu konfigurieren.

    Console

    1. Rufen Sie in der Google Cloud Console Cloud Run auf:

      Zu Cloud Run

    2. Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

    4. Klicken Sie auf den Tab Container.

      Bild

      • Konfigurieren Sie CPU, Arbeitsspeicher, Nebenläufigkeit, Ausführungsumgebung und Startprüfung gemäß den Empfehlungen unter Vorbereitung.
      • Aktivieren Sie das GPU-Kästchen und wählen Sie dann im Menü GPU-Typ den GPU-Typ und im Menü Anzahl der GPUs die Anzahl der GPUs aus.
      • Für neue Dienste ist die zonale Redundanz standardmäßig aktiviert. Wenn Sie die aktuelle Einstellung ändern möchten, klicken Sie das Kästchen „GPU“ an, um die Optionen für GPU-Redundanz aufzurufen.
        • Wählen Sie Keine zonale Redundanz aus, um die zonale Redundanz zu deaktivieren.
        • Wählen Sie Zonale Redundanz aus, um die zonale Redundanz zu aktivieren.
    5. Klicken Sie auf Erstellen oder Bereitstellen.

    gcloud

    Verwenden Sie den Befehl gcloud run deploy, um einen Dienst mit aktivierter GPU zu erstellen:

      gcloud run deploy SERVICE \
        --image IMAGE_URL \
        --gpu 1

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

    Verwenden Sie den Befehl gcloud run services update, um die GPU-Konfiguration für einen Dienst zu aktualisieren:

      gcloud run services update SERVICE \
        --image IMAGE_URL \
        --cpu CPU \
        --memory MEMORY \
        --no-cpu-throttling \
        --gpu GPU_NUMBER \
        --gpu-type GPU_TYPE \
        --max-instances MAX_INSTANCE
        --GPU_ZONAL_REDUNDANCY
        

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CPU durch die Anzahl der CPUs. Sie müssen mindestens 4 CPUs angeben.
    • MEMORY durch die Menge an Arbeitsspeicher. Sie müssen mindestens 16Gi (16 GiB) angeben.
    • GPU_NUMBER durch den Wert 1 (eins). Wenn dieser Wert nicht angegeben ist, aber ein GPU_TYPE vorhanden ist, ist der Standardwert 1.
    • GPU_TYPE durch den GPU-Typ. Wenn dieser Wert nicht angegeben ist, aber eine GPU_NUMBER vorhanden ist, ist der Standardwert nvidia-l4 (nvidia L4 Kleinbuchstabe L, nicht numerischer Wert vierzehn).
    • MAX_INSTANCE durch die maximale Anzahl von Instanzen. Diese Zahl darf das für Ihr Projekt zugewiesene GPU-Kontingent nicht überschreiten.
    • GPU_ZONAL_REDUNDANCY mit no-gpu-zonal-redundancy, um die zonale Redundanz zu deaktivieren, oder gpu-zonal-redundancy, um die zonale Redundanz zu aktivieren.

    YAML

    1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Aktualisieren Sie das Attribut nvidia.com/gpu: und nodeSelector:
      run.googleapis.com/accelerator:
      :

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
              run.googleapis.com/cpu-throttling: 'false'
              run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY'
          spec:
            containers:
            - image: IMAGE_URL
              ports:
              - containerPort: CONTAINER_PORT
                name: http1
              resources:
                limits:
                  cpu: 'CPU'
                  memory: 'MEMORY'
                  nvidia.com/gpu: '1'
              # Optional: use a longer startup probe to allow long starting containers
              startupProbe:
                failureThreshold: 1800
                periodSeconds: 1
                tcpSocket:
                  port: CONTAINER_PORT
                timeoutSeconds: 1
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

      Ersetzen Sie:

      • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
      • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
      • Ersetzen Sie CONTAINER_PORT durch den für Ihren Dienst festgelegten Containerport.
      • CPU durch die Anzahl der CPUs. Sie müssen mindestens 4 CPUs angeben.
      • MEMORY durch die Menge an Arbeitsspeicher. Sie müssen mindestens 16Gi (16 GiB) angeben.
      • GPU_TYPE durch den Wert nvidia-l4 (nvidia-L4 Kleinbuchstabe L, nicht numerischer Wert vierzehn).
      • MAX_INSTANCE durch die maximale Anzahl von Instanzen. Diese Zahl darf das für Ihr Projekt zugewiesene GPU-Kontingent nicht überschreiten.
      • Ersetzen Sie GPU_ZONAL_REDUNDANCY durch false, um die zonale GPU-Redundanz zu aktivieren, oder durch true, um sie zu deaktivieren.
    3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

      gcloud run services replace service.yaml

    Terraform

    Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

    Fügen Sie einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "SERVICE"
      location = "europe-west1"
    
      template {
        gpu_zonal_redundancy_disabled = "GPU_ZONAL_REDUNDANCY"
        containers {
          image = "IMAGE_URL"
          resources {
            limits = {
              "cpu" = "CPU"
              "memory" = "MEMORY"
              "nvidia.com/gpu" = "1"
            }
          }
        }
        node_selector {
          accelerator = "GPU_TYPE"
        }
      }
    }
    

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
    • Ersetzen Sie GPU_ZONAL_REDUNDANCY durch false, um die zonale GPU-Redundanz zu aktivieren, oder durch true, um sie zu deaktivieren.
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CPU durch die Anzahl der CPUs. Sie müssen mindestens 4 CPUs angeben.
    • MEMORY durch die Menge an Arbeitsspeicher. Sie müssen mindestens 16Gi (16 GiB) angeben.
    • GPU_TYPE durch den Wert nvidia-l4 (nvidia-L4 Kleinbuchstabe L, nicht numerischer Wert vierzehn).

    GPU-Einstellungen aufrufen

    So rufen Sie die aktuellen GPU-Einstellungen für Ihren Cloud Run-Dienst auf:

    Console

    1. Rufen Sie in der Google Cloud Console Cloud Run auf:

      Zu Cloud Run

    2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

    3. Klicken Sie auf den Tab Überarbeitungen.

    4. Im Detailbereich auf der rechten Seite ist die GPU-Einstellung auf dem Tab Container aufgelistet.

    gcloud

    1. Verwenden Sie den folgenden Befehl:

      gcloud run services describe SERVICE
    2. Suchen Sie in der zurückgegebenen Konfiguration nach der GPU-Einstellung.

    GPU entfernen

    Sie können GPUs über die Google Cloud Console, die Google Cloud CLI oder YAML entfernen.

    Console

    1. Rufen Sie in der Google Cloud Console Cloud Run auf:

      Zu Cloud Run

    2. Wählen Sie im Menü Dienste aus und klicken Sie auf Container bereitstellen, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

    3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

    4. Klicken Sie auf den Tab Container.

      Bild

      • Entfernen Sie das Häkchen aus dem Kästchen für die GPU.
    5. Klicken Sie auf Erstellen oder Bereitstellen.

    gcloud

    Wenn Sie GPUs entfernen möchten, legen Sie die Anzahl der GPUs mit dem Befehl gcloud run services update auf 0 fest:

      gcloud run services update SERVICE --gpu 0
      

    Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run-Dienstes.

    YAML

    1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

      gcloud run services describe SERVICE --format export > service.yaml
    2. Löschen Sie die Zeilen nvidia.com/gpu: und nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

    3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

      gcloud run services replace service.yaml

    Bibliotheken

    Standardmäßig werden alle NVIDIA L4-Treiberbibliotheken unter /usr/local/nvidia/lib64 bereitgestellt. Cloud Run hängt diesen Pfad automatisch an die Umgebungsvariable LD_LIBRARY_PATH (d.h. ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) des Containers mit der GPU an. Dadurch kann der dynamische Linker die NVIDIA-Treiberbibliotheken finden. Der Linker sucht und löst Pfade in der Reihenfolge auf, die Sie in der Umgebungsvariablen LD_LIBRARY_PATH angeben. Alle Werte, die Sie in dieser Variablen angeben, haben Vorrang vor dem Standardpfad für Cloud Run-Treiberbibliotheken /usr/local/nvidia/lib64.

    Wenn Sie eine CUDA-Version höher als 12.2 verwenden möchten, ist es am einfachsten, von einem neueren NVIDIA-Basis-Image abzuhängen, auf dem bereits Pakete für die Aufwärtskompatibilität installiert sind. Eine weitere Möglichkeit besteht darin, die NVIDIA-Pakete für die Aufwärtskompatibilität manuell zu installieren und sie zu LD_LIBRARY_PATH hinzuzufügen. Sehen Sie sich die Kompatibilitätsmatrix von NVIDIA an, um zu ermitteln, welche CUDA-Versionen mit der bereitgestellten NVIDIA-Treiberversion (535.216.03) aufwärtskompatibel sind.

    GPUs und maximale Anzahl von Instanzen

    Die Anzahl der Instanzen mit GPUs ist auf zwei Arten begrenzt:

    • Die Einstellung Maximale Anzahl von Instanzen begrenzt die Anzahl der Instanzen pro Dienst. Dieser Wert darf nicht höher sein als das GPU-Kontingent pro Projekt und Region.
    • Das Kontingent für GPUs, das pro Projekt und Region zulässig ist. Dadurch wird die Anzahl der Instanzen über verschiedene Dienste hinweg in derselben Region begrenzt.