Wnioskowanie LLM na GPU w Cloud Run z użyciem vLLM

1. Wprowadzenie

Przegląd

Cloud Run to platforma kontenerowa w Google Cloud, która ułatwia uruchamianie kodu w kontenerze bez konieczności zarządzania klastrem.

Cloud Run oferuje procesory graficzne L4 lub NVIDIA RTX PRO 6000 Blackwell. Na każdą instancję Cloud Run przypada 1 procesor GPU, a autoskalowanie Cloud Run nadal obowiązuje, w tym skalowanie w dół do zera instancji, gdy nie ma żądań.

Jednym z przypadków użycia procesorów graficznych jest uruchamianie własnych otwartych dużych modeli językowych (LLM). Z tego samouczka dowiesz się, jak wdrożyć usługę, która uruchamia LLM.

W tym ćwiczeniu z programowania dowiesz się, jak wdrożyć otwarte modele Gemma 4 w Cloud Run przy użyciu gotowego kontenera z biblioteką wnioskowania vLLM.

Czego się nauczysz

  • Jak korzystać z GPU w Cloud Run.
  • Jak wdrożyć w Cloud Run model Gemma 4 2B od Google dostosowany do instrukcji, używając vLLM jako silnika wnioskowania.

2. Konfiguracja i wymagania

Wymagania wstępne

3. Włączanie interfejsów API i ustawianie zmiennych środowiskowych

Włącz interfejsy API

Zanim zaczniesz korzystać z tego samouczka, musisz włączyć kilka interfejsów API. W tym ćwiczeniu musisz użyć tych interfejsów API: Możesz włączyć te interfejsy API, uruchamiając to polecenie:

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

Ustawianie zmiennych środowiskowych

Skonfiguruj poniżej identyfikator projektu.

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. Tworzenie konta usługi

To konto usługi jest używane jako tożsamość usługi Cloud Run.

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

5. Wdrażanie usługi

Aby wdrożyć modele Gemma w Cloud Run, użyj tego polecenia interfejsu wiersza poleceń gcloud z zalecanymi ustawieniami:

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. Testowanie usługi

Po wdrożeniu możesz użyć usługi serwera proxy deweloperskiego Cloud Run, która automatycznie dodaje token tożsamości, lub bezpośrednio wywołać adres URL usługi.

Korzystanie z usługi serwera proxy Cloud Run Dev

Najpierw uruchom serwer proxy.

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

Aby wysłać żądanie w osobnej karcie terminala, pozostaw serwer proxy uruchomiony. Serwer proxy działa na localhost:9090.

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
  }'

Zostaną wyświetlone dane wyjściowe podobne do tych:

{
 "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
 }
}

Bezpośrednie używanie adresu URL usługi

Najpierw pobierz adres URL wdrożonej usługi.

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

Wywołanie usługi

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. Gratulacje!

Gratulujemy ukończenia ćwiczenia!

Zalecamy zapoznanie się z dokumentacją Cloud Run.

Omówione zagadnienia

  • Jak korzystać z GPU w Cloud Run.
  • Jak wdrożyć model Gemma 4 (2B) od Google w Cloud Run przy użyciu vLLM jako silnika wnioskowania.

8. Czyszczenie danych

Aby uniknąć przypadkowych opłat (np. jeśli usługi Cloud Run zostaną przypadkowo wywołane więcej razy niż miesięczna liczba wywołań Cloud Run w bezpłatnej wersji), możesz usunąć Cloud Run lub projekt utworzony w kroku 2.

Aby usunąć usługę Cloud Run, otwórz konsolę Cloud Run w Cloud Console na stronie https://console.cloud.google.com/run i usuń usługę gemma4-cr-codelab. Możesz też usunąć gemma4-cr-codelab-sa konto usługi.

Jeśli zdecydujesz się usunąć cały projekt, otwórz stronę https://console.cloud.google.com/cloud-resource-manager, wybierz projekt utworzony w kroku 2 i kliknij Usuń. Jeśli usuniesz projekt, musisz zmienić projekty w Cloud SDK. Listę wszystkich dostępnych projektów możesz wyświetlić, uruchamiając polecenie gcloud projects list.