GPUs für Cloud Run-Jobs konfigurieren

Auf dieser Seite wird die GPU-Konfiguration für Ihre Cloud Run-Jobs beschrieben. GPUs eignen sich gut für KI-Arbeitslasten wie das Trainieren von Large Language Models (LLMs) mit Ihren bevorzugten Frameworks, das Ausführen von Batch- oder Offline-Inferenz für LLMs und die Verarbeitung anderer rechenintensiver Aufgaben wie Videoverarbeitung und Grafikrendering als Hintergrundjobs. 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.

Cloud Run-Instanzen mit einer angehängten L4-GPU mit vorinstallierten Treibern starten in etwa 5 Sekunden. Danach können die Prozesse, die in Ihrem Container ausgeführt werden, 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:

  • Für GPUs für Jobs gilt die Preisgestaltung ohne zonale Redundanz (in der Vorschau).
  • Sie müssen mindestens 4 CPUs und 16 GiB Arbeitsspeicher verwenden.
  • Die GPU wird für die gesamte Dauer des Instanzlebenszyklus abgerechnet.

Nicht zonale GPU-Redundanz

Das Feature „Cloud Run-Jobs“ bietet Unterstützung für nicht zonale Redundanz (in der Vorschau) nur für GPU-fähige Instanzen. Wenn die nicht zonale Redundanz aktiviert ist, versucht Cloud Run, für GPU-fähige Jobs ein Failover durchzuführen. Cloud Run leitet die Ausführung von Jobs nur dann an andere Zonen weiter, wenn zu diesem Zeitpunkt genügend GPU-Kapazität verfügbar ist. Diese Option garantiert keine reservierte Kapazität für Failoverszenarien, führt aber zu niedrigeren Kosten pro GPU-Sekunde.

Weitere Informationen zum Aktivieren der nicht zonalen Redundanz finden Sie unter Cloud Run-Job mit GPU konfigurieren.

Kontingenterhöhung anfordern

Wenn Ihr Projekt kein GPU-Kontingent hat, stellen Sie einen Cloud Run-Dienst bereit, um automatisch ein Kontingent von 3 nvidia-l4-GPUs (zonale Redundanz deaktiviert) für diese Region zu erhalten. Diese automatische Zuweisung von Kontingenten hängt von der Verfügbarkeit ab, die von Ihrer CPU- und Arbeitsspeicherkapazität abhängt. Wenn Sie einen nicht verwendeten Dienst löschen, bleibt das zugewiesene Kontingent unverändert.

Wenn Sie zusätzliche Cloud Run-GPUs für Jobs benötigen, fordern Sie eine Kontingentaufstockung an.

Die maximale Anzahl von GPU-Job-Instanzen (Aufgaben), die parallel ausgeführt werden können, wird durch die folgenden Kontingente begrenzt:

Der Parallelitätswert muss kleiner als das GPU-Kontingent ohne zonale Redundanz oder das GPU-Instanzkontingent für Jobs ohne zonale Redundanz sein, je nachdem, welches Kontingent restriktiver ist.

Hinweise

In der folgenden Liste werden die Anforderungen und Einschränkungen für die 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  7. Informationen zur Leistungsoptimierung bei der Verwendung von Cloud Run-Jobs mit GPUs finden Sie unter Best Practices: Cloud Run-Jobs mit GPUs.
  8. Erforderliche Rollen

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Jobs zuzuweisen, um die zum Konfigurieren von Cloud Run-Jobs erforderlichen Berechtigungen zu erhalten:

    • Cloud Run-Entwickler (roles/run.developer) - Cloud Run-Job
    • 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-Job 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-Job mit GPU konfigurieren

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

    gcloud

    Wenn Sie keine zonenbasierte Redundanz aktivieren möchten, müssen Sie --no-gpu-zonal-redundancy angeben. Dies ist erforderlich, um GPUs mit Jobs zu verwenden.

    Verwenden Sie den Befehl gcloud beta run jobs create, um einen Job mit aktivierter GPU zu erstellen:

        gcloud beta run jobs create JOB_NAME \
          --image=IMAGE \
          --gpu=1 \
          --no-gpu-zonal-redundancy

    Ersetzen Sie:

    • JOB_NAME durch den Namen Ihres Cloud Run-Jobs.
    • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.

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

        gcloud beta run jobs update JOB_NAME \
          --image IMAGE_URL \
          --cpu CPU \
          --memory MEMORY \
          --gpu GPU_NUMBER \
          --gpu-type GPU_TYPE \
          --parallelism PARALLELISM \
          --no-gpu-zonal-redundancy

    Ersetzen Sie:

    • JOB_NAME durch den Namen Ihres Cloud Run-Jobs.
    • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job:latest.
    • CPU mit mindestens 4 CPUs für Ihren Job. Der empfohlene Wert ist 8.
    • MEMORY mit mindestens 16Gi (16 GiB). Der empfohlene Wert ist 32Gi.
    • 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).
    • PARALLELISM mit einem ganzzahligen Wert, der kleiner als der niedrigste Wert der anwendbaren Kontingentlimits ist, die Sie für Ihr Projekt zugewiesen haben.

    YAML

    Sie müssen die Annotation run.googleapis.com/gpu-zonal-redundancy-disabled: auf „true“ setzen. Dadurch wird die nicht zonale Redundanz aktiviert, die für GPUs für Jobs erforderlich ist.

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

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Aktualisieren Sie das Attribut nvidia.com/gpu, annotations: run.googleapis.com/launch-stage für die Einführungsphase und nodeSelector:
      run.googleapis.com/accelerator
      :

      apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        labels:
          cloud.googleapis.com/location: REGION
        annotations:
          run.googleapis.com/launch-stage: BETA
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/gpu-zonal-redundancy-disabled: 'true'
          spec:
            template:
              spec:
                containers:
                - image: IMAGE_URL
                  limits:
                    cpu: 'CPU'
                    memory: 'MEMORY'
                    nvidia.com/gpu: 'GPU_NUMBER'
                nodeSelector:
                  run.googleapis.com/accelerator: GPU_TYPE

      Ersetzen Sie:

      • JOB_NAME durch den Namen Ihres Cloud Run-Jobs.
      • IMAGE_URL: ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/job:latest
      • 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), da wir nur das Anhängen einer GPU pro Cloud Run-Instanz unterstützen.
      • GPU_TYPE durch den Wert nvidia-l4 (nvidia-L4 Kleinbuchstabe L, nicht numerischer Wert vierzehn).
    3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

      gcloud run jobs replace job.yaml

    GPU-Einstellungen aufrufen

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

    gcloud

    1. Verwenden Sie den folgenden Befehl:

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

    GPU entfernen

    Sie können GPUs mit der Google Cloud CLI oder YAML entfernen.

    gcloud

    Wenn Sie GPUs entfernen möchten, setzen Sie die Anzahl der GPUs mit dem Befehl gcloud beta run jobs update auf 0:

      gcloud beta run jobs update JOB_NAME --gpu 0
      

    Ersetzen Sie JOB_NAME durch den Namen Ihres Cloud Run-Jobs.

    YAML

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

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Löschen Sie die Zeilen nvidia.com/gpu:, run.googleapis.com/gpu-zonal-redundancy-disabled: 'true' und nodeSelector: run.googleapis.com/accelerator: nvidia-l4.

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

      gcloud run jobs replace job.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, 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 Parallelität

    Wenn Sie parallele Aufgaben in einer Jobausführung ausführen, legen Sie den Wert für parallelism auf einen Wert fest, der kleiner als der niedrigste Wert der anwendbaren Kontingentlimits ist, die Sie für Ihr Projekt zugewiesen haben. Standardmäßig ist das Kontingent für GPU-Jobinstanzen für parallel ausgeführte Aufgaben auf 5 festgelegt. Informationen zum Anfordern einer Kontingenterhöhung finden Sie unter Kontingent erhöhen. GPU-Aufgaben werden so schnell wie möglich gestartet. Der Höchstwert hängt davon ab, wie viel GPU-Kontingent Sie für das Projekt und die ausgewählte Region zugewiesen haben. Cloud Run-Bereitstellungen schlagen fehl, wenn Sie die Parallelität auf einen Wert über dem GPU-Kontingentlimit festlegen.

    Um das GPU-Kontingent zu berechnen, das von Ihrem Job pro Ausführung verwendet wird, multiplizieren Sie die Anzahl der GPUs pro Jobaufgabe mit dem Parallelitätswert. Wenn Sie beispielsweise ein GPU-Kontingent von 10 haben und Ihren Cloud Run-Job mit --gpu=1, --parallelism=10 bereitstellen, werden alle 10 GPU-Kontingente für Ihren Job verwendet. Wenn Sie die Bereitstellung mit --gpu=1, --parallelism=20 vornehmen, schlägt sie fehl.

    Weitere Informationen finden Sie unter Best Practices: Cloud Run-Jobs mit GPUs.