LLM-Inferenzen auf Cloud Run-GPUs mit vLLM ausführen

1. Einführung

Übersicht

Cloud Run ist eine Containerplattform auf Google Cloud, mit der Sie Ihren Code ganz einfach in einem Container ausführen können, ohne einen Cluster verwalten zu müssen.

Cloud Run bietet entweder eine L4- oder eine NVIDIA RTX PRO 6000 Blackwell-GPU. Pro Cloud Run-Instanz ist eine GPU verfügbar. Die automatische Skalierung von Cloud Run gilt weiterhin, einschließlich der Skalierung auf null Instanzen, wenn keine Anfragen vorhanden sind.

Ein Anwendungsfall für GPUs ist die Ausführung eigener offener Large Language Models (LLMs). In dieser Anleitung wird beschrieben, wie Sie einen Dienst bereitstellen, der ein LLM ausführt.

In diesem Codelab wird beschrieben, wie Sie offene Gemma 4-Modelle in Cloud Run bereitstellen. Dazu verwenden Sie einen vorgefertigten Container mit der vLLM-Inferenzbibliothek.

Lerninhalte

  • Verwendung von GPUs in Cloud Run
  • Bereitstellung des Gemma 4 2B-Modells von Google, das für Anweisungen optimiert wurde, in Cloud Run mit vLLM als Inferenz-Engine

2. Einrichtung und Anforderungen

Voraussetzungen

3. APIs aktivieren und Umgebungsvariablen festlegen

APIs aktivieren

Bevor Sie mit diesem Codelab beginnen können, müssen Sie mehrere APIs aktivieren. Für dieses Codelab müssen Sie die folgenden APIs verwenden. Sie können diese APIs aktivieren, indem Sie den folgenden Befehl ausführen:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    artifactregistry.googleapis.com

Umgebungsvariablen festlegen

Konfigurieren Sie unten Ihre Projekt-ID.

export PROJECT_ID=<YOUR_PROJECT_ID>

export REGION=europe-west4
export SERVICE_NAME=gemma4-cr-codelab
export SERVICE_ACCOUNT_NAME=gemma4-cr-sa
export SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

4. Dienstkonto erstellen

Dieses Dienstkonto wird als Identität des Cloud Run-Dienstes verwendet.

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="Cloud Run gemma 4 SA"

5. Dienst bereitstellen

Verwenden Sie den folgenden gcloud CLI-Befehl mit den empfohlenen Einstellungen, um Gemma-Modelle in Cloud Run bereitzustellen:

CONTAINER_ARGS=(
    "serve"
    "google/gemma-4-E2B-it"
    "--enable-chunked-prefill"
    "--enable-prefix-caching"
    "--generation-config=auto"
    "--enable-auto-tool-choice"
    "--tool-call-parser=gemma4"
    "--reasoning-parser=gemma4"
    "--dtype=bfloat16"
    "--max-num-seqs=64"
    "--gpu-memory-utilization=0.95"
    "--tensor-parallel-size=1"
    "--port=8080"
    "--host=0.0.0.0"
)
gcloud beta run deploy $SERVICE_NAME \
    --image "us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:gemma4" \
    --project $PROJECT_ID \
    --region $REGION \
    --execution-environment gen2 \
    --no-allow-unauthenticated \
    --cpu 20 \
    --memory 80Gi \
    --gpu 1 \
    --gpu-type nvidia-rtx-pro-6000 \
    --no-gpu-zonal-redundancy \
    --no-cpu-throttling \
    --max-instances 3 \
    --concurrency 64 \
    --timeout 600 \
    --service-account $SERVICE_ACCOUNT_ADDRESS \
    --startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
    --command "vllm" \
    --args=$(IFS=','; echo "${CONTAINER_ARGS[*]}")

6. Dienst testen

Nach der Bereitstellung können Sie entweder den Cloud Run-Entwicklungsproxy verwenden, der automatisch ein ID-Token für Sie hinzufügt, oder die Dienst-URL direkt mit „curl“ aufrufen.

Cloud Run-Entwicklungsproxy verwenden

Starten Sie zuerst den Proxy.

gcloud run services proxy $SERVICE_NAME \
  --project $PROJECT \
  --region $REGION \
  --port=9090

Führen Sie den folgenden Befehl aus, um eine Anfrage in einem separaten Terminaltab zu senden, während der Proxy ausgeführt wird. Der Proxy wird auf „localhost:9090“ ausgeführt.

curl http://localhost:9090/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-E2B-it",
    "messages": [{"role": "user", "content": "Why is the sky blue?"}],
    "chat_template_kwargs": {
         "enable_thinking": true
     },
     "skip_special_tokens": false
  }'

Die Ausgabe sollte in etwa so aussehen:

{
 "id": "chatcmpl-9cf1ab1450487047",
 "object": "chat.completion",
 "created": 1774904187,
 "model": "google/gemma-4-E2B-it",
 "choices": [
   {
     "index": 0,
     "message": {
       "role": "assistant",
       "content": "The short answer is a phenomenon called **Rayleigh scattering**...",
       "function_call": null,
       "tool_calls": [],
       "reasoning": "*   Question: \"Why is the sky blue?\"\n..."
     },
     "finish_reason": "stop",
     "stop_reason": 106
   }
 ],
 "usage": {
   "prompt_tokens": 21,
   "total_tokens": 877,
   "completion_tokens": 856
 }
}

Dienst-URL direkt verwenden

Rufen Sie zuerst die URL für den bereitgestellten Dienst ab.

SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')

Dienst mit „curl“ aufrufen

curl $SERVICE_URL/v1/chat/completions \
  -H "Authorization: bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemma-4-E2B-it",
    "messages": [{"role": "user", "content": "Why is the sky blue?"}],
    "chat_template_kwargs": {
         "enable_thinking": true
     },
     "skip_special_tokens": false
  }'

7. Glückwunsch!

Herzlichen Glückwunsch zum Abschluss des Codelabs!

Wir empfehlen, die Dokumentation zu Cloud Run zu lesen.

Behandelte Themen

  • Verwendung von GPUs in Cloud Run
  • Bereitstellung des Gemma 4-Modells (2B) von Google in Cloud Run mit vLLM als Inferenz-Engine

8. Bereinigen

Um unbeabsichtigte Kosten zu vermeiden (z. B. wenn die Cloud Run-Dienste versehentlich häufiger aufgerufen werden als die monatliche Zuweisung für Cloud Run-Aufrufe im kostenlosen Kontingent), können Sie entweder Cloud Run oder das in Schritt 2 erstellte Projekt löschen.

Wenn Sie den Cloud Run-Dienst löschen möchten, rufen Sie in der Cloud Console unter https://console.cloud.google.com/run Cloud Run auf und löschen Sie den gemma4-cr-codelab Dienst. Möglicherweise möchten Sie auch das Dienstkonto gemma4-cr-codelab-sa löschen.

Wenn Sie das gesamte Projekt löschen möchten, rufen Sie https://console.cloud.google.com/cloud-resource-manager auf, wählen Sie das in Schritt 2 erstellte Projekt aus und klicken Sie auf „Löschen“. Wenn Sie das Projekt löschen, müssen Sie die Projekte in Ihrem Cloud SDK ändern. Sie können die Liste aller verfügbaren Projekte mit dem Befehl gcloud projects list aufrufen.