Cara menjalankan inferensi LLM di GPU Cloud Run dengan vLLM

1. Pengantar

Ringkasan

Cloud Run adalah platform container di Google Cloud yang memudahkan Anda menjalankan kode dalam container, tanpa mengharuskan Anda mengelola cluster.

Cloud Run menawarkan GPU L4 atau NVIDIA RTX PRO 6000 Blackwell. Ada satu GPU per instance Cloud Run, dan penskalaan otomatis Cloud Run masih berlaku, termasuk penskalaan hingga nol instance saat tidak ada permintaan.

Salah satu kasus penggunaan GPU adalah menjalankan model bahasa besar (LLM) terbuka Anda sendiri. Tutorial ini akan memandu Anda men-deploy layanan yang menjalankan LLM.

Codelab ini menjelaskan cara men-deploy model terbuka Gemma 4 di Cloud Run menggunakan container bawaan dengan library inferensi vLLM.

Yang akan Anda pelajari

  • Cara menggunakan GPU di Cloud Run.
  • Cara men-deploy model Gemma 4 2B yang disesuaikan dengan petunjuk Google di Cloud Run menggunakan vLLM sebagai mesin inferensi.

2. Penyiapan dan Persyaratan

Prasyarat

3. Mengaktifkan API dan Menetapkan Variabel Lingkungan

Mengaktifkan API

Sebelum dapat mulai menggunakan codelab ini, ada beberapa API yang perlu Anda aktifkan. Codelab ini mengharuskan penggunaan API berikut. Anda dapat mengaktifkan API tersebut dengan menjalankan perintah berikut:

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

Menetapkan Variabel Lingkungan

Konfigurasi ID project Anda di bawah.

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. Membuat akun layanan

Akun layanan ini digunakan sebagai identitas layanan Cloud Run.

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

5. Men-deploy layanan

Untuk men-deploy model Gemma di Cloud Run, gunakan perintah gcloud CLI berikut dengan setelan yang direkomendasikan:

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. Menguji layanan

Setelah di-deploy, Anda dapat menggunakan layanan proxy pengembangan Cloud Run yang otomatis menambahkan token ID untuk Anda atau Anda dapat melakukan curl pada URL layanan secara langsung.

Menggunakan layanan proxy pengembangan Cloud Run

Pertama, mulai proxy

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

Jalankan perintah berikut untuk mengirim permintaan di tab terminal terpisah, sehingga proxy tetap berjalan. Proxy berjalan di 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
  }'

Anda akan melihat output yang mirip dengan berikut ini:

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

Menggunakan URL layanan secara langsung

Pertama, ambil URL untuk layanan yang di-deploy.

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

Lakukan curl pada layanan

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

Selamat, Anda telah menyelesaikan codelab ini.

Sebaiknya tinjau dokumentasi Cloud Run

Yang telah kita bahas

  • Cara menggunakan GPU di Cloud Run.
  • Cara men-deploy model Gemma 4 (2B) Google di Cloud Run menggunakan vLLM sebagai mesin inferensi.

8. Pembersihan

Untuk menghindari biaya yang tidak disengaja, (misalnya, jika layanan Cloud Run tidak sengaja dipanggil lebih banyak dari alokasi pemanggilan Cloud Run bulanan Anda di paket gratis), Anda dapat menghapus Cloud Run atau menghapus project yang Anda buat di Langkah 2.

Untuk menghapus layanan Cloud Run, buka Konsol Cloud Cloud Run di https://console.cloud.google.com/run dan hapus layanan gemma4-cr-codelab. Anda mungkin juga ingin menghapus akun layanan gemma4-cr-codelab-sa.

Jika Anda memilih untuk menghapus seluruh project, Anda dapat membuka https://console.cloud.google.com/cloud-resource-manager, memilih project yang Anda buat di Langkah 2, dan memilih Hapus. Jika Anda menghapus project, Anda harus mengubah project di Cloud SDK. Anda dapat melihat daftar semua project yang tersedia dengan menjalankan gcloud projects list.