vLLM ile Cloud Run GPU'larında LLM çıkarımını çalıştırma

1. Giriş

Genel Bakış

Cloud Run, Google Cloud'da bulunan bir kapsayıcı platformudur. Küme yönetmenizi gerektirmeden kodunuzu kapsayıcıda çalıştırmanızı kolaylaştırır.

Cloud Run, L4 veya NVIDIA RTX PRO 6000 Blackwell GPU sunar. Cloud Run örneği başına bir GPU vardır ve Cloud Run otomatik ölçeklendirme özelliği, istek olmadığında sıfır örneğe ölçeklendirme de dahil olmak üzere geçerliliğini korur.

GPU'ların kullanım alanlarından biri, kendi açık büyük dil modellerinizi (LLM'ler) çalıştırmaktır. Bu eğitim, LLM çalıştıran bir hizmeti dağıtma konusunda size yol gösterir.

Bu codelab'de, vLLM çıkarım kitaplığı içeren önceden oluşturulmuş bir kapsayıcı kullanarak Cloud Run'da Gemma 4 açık modellerinin nasıl dağıtılacağı açıklanmaktadır.

Neler öğreneceksiniz?

  • Cloud Run'da GPU'ları kullanma
  • Google'ın Gemma 4 2B talimat için ayarlanmış modelini, çıkarım motoru olarak vLLM kullanarak Cloud Run'da dağıtma.

2. Kurulum ve Gereksinimler

Ön koşullar

3. API'leri etkinleştirme ve ortam değişkenlerini ayarlama

API'leri etkinleştir

Bu codelab'i kullanmaya başlamadan önce etkinleştirmeniz gereken birkaç API vardır. Bu codelab'de aşağıdaki API'lerin kullanılması gerekir. Bu API'leri aşağıdaki komutu çalıştırarak etkinleştirebilirsiniz:

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

Ortam değişkenlerini ayarlama

Proje kimliğinizi aşağıda yapılandırın.

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. Hizmet hesabı oluşturma

Bu hizmet hesabı, Cloud Run hizmet kimliği olarak kullanılır.

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

5. Hizmeti dağıtma

Gemma modellerini Cloud Run'da dağıtmak için aşağıdaki gcloud CLI komutunu önerilen ayarlarla birlikte kullanın:

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. Hizmeti test etme

Dağıtım tamamlandıktan sonra, sizin için otomatik olarak kimlik jetonu ekleyen Cloud Run geliştirme proxy hizmetini kullanabilir veya hizmet URL'sini doğrudan curl komutuyla çağırabilirsiniz.

Cloud Run geliştirme proxy hizmetini kullanma

Öncelikle proxy'yi başlatın.

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

Proxy'yi çalışır durumda bırakarak ayrı bir terminal sekmesinde istek göndermek için aşağıdaki komutu çalıştırın. Proxy, localhost:9090 üzerinde çalışır.

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

Şuna benzer bir çıkış alırsınız:

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

Hizmet URL'sini doğrudan kullanma

Öncelikle dağıtılan hizmetin URL'sini alın.

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

Hizmeti kıvırma

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

Codelab'i tamamladığınız için tebrikler.

Cloud Run belgelerini incelemenizi öneririz.

İşlediğimiz konular

  • Cloud Run'da GPU'ları kullanma
  • Çıkarım motoru olarak vLLM'yi kullanarak Google'ın Gemma 4 (2B) modelini Cloud Run'da dağıtma.

8. Temizleme

Yanlışlıkla ücretlendirilmemek için (örneğin, Cloud Run hizmetleri ücretsiz katmandaki aylık Cloud Run çağırma kotanızdan daha fazla sayıda çağrılırsa) Cloud Run'ı veya 2. adımda oluşturduğunuz projeyi silebilirsiniz.

Cloud Run hizmetini silmek için https://console.cloud.google.com/run adresinden Cloud Run Cloud Console'a gidin ve gemma4-cr-codelab hizmetini silin. gemma4-cr-codelab-sa hizmet hesabını da silmek isteyebilirsiniz.

Projenin tamamını silmeyi tercih ederseniz https://console.cloud.google.com/cloud-resource-manager adresine gidebilir, 2. adımda oluşturduğunuz projeyi seçip Sil'i tıklayabilirsiniz. Projeyi silerseniz Cloud SDK'nızda projeleri değiştirmeniz gerekir. gcloud projects list komutunu çalıştırarak kullanılabilir tüm projelerin listesini görüntüleyebilirsiniz.