LLM-Inferenzen auf GPUs mit Gemma 4 und Ollama ausführen

Ziele

Gemma 4 ist die effizienteste Open-Weight-Modellfamilie von Google, die starke Schlussfolgerungs- und Agentenfunktionen bietet. Dank des langen Kontexts, der Multimodalität, der Schlussfolgerungsfähigkeit und der Tool-Aufrufe kann Gemma 4 komplexe Logik, mehrstufige Planung, Programmierung und Agenten-Workflows verarbeiten.

In dieser Anleitung wird gezeigt, wie Sie LLM-Inferenzen auf Cloud Run-GPUs mit Gemma und Ollama ausführen. Die Ziele sind:

  • Ollama mit dem Gemma 4 -Modell in einem GPU-fähigen Cloud Run-Dienst bereitstellen.
  • Prompts an den Ollama-Dienst über seinen privaten Endpunkt senden.

Eine alternative Möglichkeit zum Bereitstellen von offenen Gemma 4-Modellen in Cloud Run mit einem vLLM-Container finden Sie unter Gemma 4-Modelle in Cloud Run ausführen.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Verwenden Sie den Preisrechner.

Neuen Nutzern von Google Cloud steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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 role (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 role (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. Cloud Run API aktivieren

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen.

    API aktivieren

  7. Installieren und initialisieren Sie die gcloud CLI.
  8. Beantragen Sie unter „Cloud Run Admin API“ auf der Seite Kontingente und Systemlimits ein Total Nvidia RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region -Kontingent, um diese Anleitung abzuschließen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Anleitung benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Rollen zuweisen

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen
  2. Wählen Sie das Projekt aus.
  3. Klicken Sie auf „Zugriffsrechte erteilen.
  4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse, die zum Bereitstellen des Cloud Run-Dienstes verwendet wird.

  5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
  6. Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
  7. Klicken Sie auf Speichern.

gcloud

So weisen Sie Ihrem Konto die erforderlichen IAM-Rollen für Ihr Projekt zu:

     gcloud projects add-iam-policy-binding PROJECT_ID \
         --member=PRINCIPAL \
         --role=ROLE
     

Ersetzen Sie:

  • PROJECT_NUMBER durch Ihre Google Cloud Projekt nummer.
  • PROJECT_ID durch Ihre Google Cloud Projekt-ID.
  • PRINCIPAL durch das Konto, für das Sie die Bindung hinzufügen. Dies ist in der Regel die E-Mail-Adresse, die zum Bereitstellen des Cloud Run-Dienstes verwendet wird.
  • ROLE durch die Rolle, die Sie dem Bereitsteller Konto hinzufügen.

Ollama-Dienst für LLM-Inferenzen bereitstellen

Stellen Sie den Dienst in Cloud Run bereit:

gcloud beta run deploy SERVICE-NAME \
    --image "ollama/ollama:latest" \
    --project PROJECT_ID \
    --region REGION \
    --no-allow-unauthenticated \
    --cpu 20 \
    --memory 80Gi \
    --gpu 1 \
    --gpu-type nvidia-rtx-pro-6000 \
    --no-gpu-zonal-redundancy \
    --max-instances 1 \
    --concurrency 16 \
    --timeout 600 \
    --set-env-vars=OLLAMA_NUM_PARALLEL=16 \
    --set-env-vars=OLLAMA_HOST=0.0.0.0:8080 \
    --set-env-vars=OLLAMA_DEBUG=false \
    --set-env-vars=OLLAMA_KEEP_ALIVE=-1 \
    --startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
    --command "bash" \
    --args="-c,(sleep 15 && ollama pull MODEL_NAME) & ollama serve"

Ersetzen Sie:

  • SERVICE-NAME durch einen eindeutigen Namen für den Cloud Run-Dienst.
  • PROJECT durch Ihre Google Cloud Projekt-ID.
  • REGION durch eine Google Cloud Region, in der nvidia-rtx-pro-6000-GPUs für Cloud Run unterstützt werden, z. B. us-central1. Eine vollständige Liste der unterstützten Regionen für GPU-fähige Bereitstellungen finden Sie unter GPU-Konfiguration.

  • MODEL_NAME durch den vollständigen Namen einer Gemma 4-Variante.

    • Gemma 4 E2B: gemma4:e2b
    • Gemma 4 E4B: gemma4:e4b

Für Gemma 4 26B und 31B ist eine erweiterte Cloud Run- und vLLM-Konfiguration mit Direct VPC Egress und Run:ai Model Streamer erforderlich.

Beachten Sie die folgenden wichtigen Flags in diesem Befehl:

  • --concurrency 16 ist auf den Wert der Umgebungsvariablen OLLAMA_NUM_PARALLEL festgelegt.
  • --gpu 1 mit --gpu-type nvidia-rtx-pro-6000 weist jeder Cloud Run-Instanz im Dienst eine NVIDIA RTX PRO 6000 Blackwell-GPU zu.
  • --max-instances 1 gibt die maximale Anzahl von Instanzen an, auf die skaliert werden soll. Sie muss gleich oder niedriger als das Kontingent für die NVIDIA RTX Pro 6000-GPU Ihres Projekts (Total NVIDIA RTX Pro 6000 GPU allocation, in milli GPU, without zonal redundancy, per project per region) sein.
  • --no-allow-unauthenticated schränkt den nicht authentifizierten Zugriff auf den Dienst ein. Wenn Sie den Dienst privat nutzen, können Sie die integrierte Identity and Access Management (IAM)-Authentifizierung von Cloud Run für die Dienst-zu-Dienst-Kommunikation verwenden. Weitere Informationen finden Sie unter Zugriff mit IAM verwalten.
  • --no-cpu-throttling ist erforderlich, um die GPU zu aktivieren.
  • --no-gpu-zonal-redundancy legt Optionen für die zonale Redundanz fest, je nach Ihren Anforderungen an das zonale Failover und dem verfügbaren Kontingent. Weitere Informationen finden Sie unter Optionen für die zonale Redundanz von GPUs.

Einstellungen für die Nebenläufigkeit für optimale Leistung

In diesem Abschnitt finden Sie weitere Informationen zu den empfohlenen Einstellungen für die Nebenläufigkeit. Für eine optimale Anfragelatenz muss die Einstellung --concurrency der Umgebungsvariablen OLLAMA_NUM_PARALLEL von Ollama entsprechen.

  • Mit OLLAMA_NUM_PARALLEL wird festgelegt, wie viele Anfrageslots für jedes Modell verfügbar sind, um Inferenzanfragen gleichzeitig zu verarbeiten.
  • Mit --concurrency wird festgelegt, wie viele Anfragen Cloud Run gleichzeitig an eine Ollama-Instanz sendet.

Wenn --concurrency OLLAMA_NUM_PARALLEL überschreitet, kann Cloud Run mehr Anfragen an ein Modell in Ollama senden, als für die verfügbaren Anfrageslots vorgesehen sind. Dies führt zu einer Anfragewarteschlange in Ollama, was die Anfragelatenz für die anstehenden Anfragen erhöht. Außerdem führt es zu einem weniger reaktionsfähigen Autoscaling, da die anstehenden Anfragen nicht dazu führen, dass Cloud Run skaliert und neue Instanzen startet.

Ollama unterstützt auch die Bereitstellung mehrerer Modelle von einer GPU aus. Um Anfragen in der Ollama-Instanz zu vermeiden, legen Sie --concurrency auf OLLAMA_NUM_PARALLEL fest.

Wenn Sie OLLAMA_NUM_PARALLEL erhöhen, dauert die Verarbeitung paralleler Anfragen länger.

GPU-Auslastung optimieren

Für eine optimale GPU-Auslastung erhöhen Sie --concurrency, wobei der Wert unter dem Doppelten von OLLAMA_NUM_PARALLEL liegen muss. Dies führt zwar zu einer Anfragewarteschlange in Ollama, kann aber die Auslastung verbessern: Ollama-Instanzen können Anfragen aus ihrer Warteschlange sofort verarbeiten und die Warteschlangen helfen, Trafficspitzen abzufangen.

Bereitgestellten Ollama-Dienst mit curl testen

Nachdem Sie den Ollama-Dienst bereitgestellt haben, können Sie Anfragen an ihn senden. Wenn Sie jedoch eine Anfrage direkt senden, antwortet Cloud Run mit HTTP 401 Unauthorized. Das ist beabsichtigt, da eine LLM-Inferenz-API für andere Dienste gedacht ist, z. B. für eine Frontend-Anwendung. Weitere Informationen zur Dienst-zu-Dienst-Authentifizierung in Cloud Run finden Sie unter Dienst-zu-Dienst-Authentifizierung.

Wenn Sie Anfragen an den Ollama-Dienst senden möchten, fügen Sie den Anfragen einen Header mit einem gültigen OIDC-Token hinzu, z. B. mit dem Cloud Run-Entwicklerproxy:

  1. Starten Sie den Proxy und wählen Sie Y aus, wenn Sie aufgefordert werden, die Komponente cloud-run-proxy zu installieren:

    gcloud run services proxy SERVICE-NAME \
       --project PROJECT_ID \
       --region REGION \
       --port=9090
  2. Senden Sie in einem separaten Terminaltab eine Anfrage an den Proxy und lassen Sie den Proxy laufen. Der Proxy wird auf localhost:9090 ausgeführt:

    curl http://localhost:9090/api/generate -d '{
       "model": "MODEL_NAME",
       "prompt": "Why is the sky blue?",
       "stream": false
    }' | jq -r '.response'

    Dieser Befehl sollte eine Streamingausgabe ähnlich der folgenden liefern:

    This is one of the most beautiful and fundamental questions in physics! The reason the sky appears blue is due to a phenomenon called **Rayleigh Scattering**.
    ...
    

Bereinigen

Damit Ihrem Google Cloud Konto keine zusätzlichen Kosten entstehen, löschen Sie alle Ressourcen , die Sie mit dieser Anleitung bereitgestellt haben.

Projekt löschen

Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen , löschen Sie die für die Anleitung erstellten Ressourcen.

Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.

So löschen Sie das Projekt:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Anleitungsressourcen löschen

  1. Löschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben. Für Cloud Run-Dienste fallen erst Kosten an, wenn sie Anfragen erhalten.

    Führen Sie den folgenden Befehl aus, um Ihren Cloud Run-Dienst zu löschen:

    gcloud run services delete SERVICE-NAME

    Ersetzen Sie SERVICE-NAME durch den Namen Ihres Dienstes.

    Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.

  2. Entfernen Sie die Konfiguration der Standardregion gcloud, die Sie während der Einrichtung für die Anleitung hinzugefügt haben:

     gcloud config unset run/region
    
  3. Entfernen Sie die Projektkonfiguration:

     gcloud config unset project
    

Nächste Schritte