نحوه اجرای استنتاج LLM روی پردازنده‌های گرافیکی Cloud Run با vLLM

۱. مقدمه

نمای کلی

Cloud Run یک پلتفرم کانتینر در Google Cloud است که اجرای کد شما را در یک کانتینر، بدون نیاز به مدیریت یک کلاستر، ساده می‌کند.

Cloud Run یک پردازنده گرافیکی L4 یا NVIDIA RTX PRO 6000 Blackwell ارائه می‌دهد. به ازای هر نمونه Cloud Run یک پردازنده گرافیکی وجود دارد و مقیاس‌بندی خودکار Cloud Run همچنان اعمال می‌شود، از جمله کاهش مقیاس به صفر نمونه در صورت عدم درخواست.

یکی از کاربردهای پردازنده‌های گرافیکی (GPU) اجرای مدل‌های زبان بزرگ (LLM) متن‌باز خودتان است. این آموزش شما را در پیاده‌سازی سرویسی که یک LLM را اجرا می‌کند، راهنمایی می‌کند.

این آزمایشگاه کد، نحوه‌ی استقرار مدل‌های باز Gemma 4 را روی Cloud Run با استفاده از یک کانتینر از پیش ساخته شده با کتابخانه‌ی استنتاج vLLM شرح می‌دهد.

آنچه یاد خواهید گرفت

  • نحوه استفاده از پردازنده‌های گرافیکی (GPU) در Cloud Run
  • چگونه مدل تنظیم‌شده با دستورالعمل Gemma 4 2B گوگل را با استفاده از vLLM به عنوان موتور استنتاج، روی Cloud Run مستقر کنیم.

۲. تنظیمات و الزامات

پیش‌نیازها

۳. فعال کردن APIها و تنظیم متغیرهای محیطی

فعال کردن APIها

قبل از اینکه بتوانید از این codelab استفاده کنید، باید چندین API را فعال کنید. این codelab به استفاده از APIهای زیر نیاز دارد. می‌توانید با اجرای دستور زیر این APIها را فعال کنید:

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

تنظیم متغیرهای محیطی

شناسه پروژه خود را در زیر پیکربندی کنید.

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

۴. یک حساب کاربری سرویس ایجاد کنید

این حساب سرویس به عنوان هویت سرویس Cloud Run استفاده می‌شود.

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

۵. سرویس را مستقر کنید

برای استقرار مدل‌های Gemma در Cloud Run، از دستور gcloud CLI زیر با تنظیمات پیشنهادی استفاده کنید:

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[*]}")

۶. سرویس را آزمایش کنید

پس از استقرار، می‌توانید از سرویس پروکسی توسعه‌دهندگان Cloud Run استفاده کنید که به طور خودکار یک شناسه توکن برای شما اضافه می‌کند یا آدرس اینترنتی سرویس را مستقیماً curl کنید.

استفاده از سرویس پروکسی Cloud Run dev

ابتدا پروکسی را فعال کنید

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

دستور زیر را برای ارسال درخواست در یک تب ترمینال جداگانه اجرا کنید و پروکسی را در حال اجرا نگه دارید. پروکسی روی 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
  }'

باید خروجی مشابه زیر را ببینید:

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

استفاده مستقیم از آدرس اینترنتی سرویس

ابتدا، URL مربوط به سرویس مستقر شده را بازیابی کنید.

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

سرویس را خم کنید

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

۷. تبریک می‌گویم!

تبریک می‌گویم که آزمایشگاه کد را تمام کردید!

توصیه می‌کنیم مستندات Cloud Run را بررسی کنید

آنچه ما پوشش داده‌ایم

  • نحوه استفاده از پردازنده‌های گرافیکی (GPU) در Cloud Run
  • چگونه مدل Gemma 4 (2B) گوگل را با استفاده از vLLM به عنوان موتور استنتاج، روی Cloud Run مستقر کنیم.

۸. تمیز کردن

برای جلوگیری از هزینه‌های ناخواسته، (برای مثال، اگر سرویس‌های Cloud Run سهواً بیشتر از تخصیص فراخوانی ماهانه Cloud Run شما در سطح رایگان فراخوانی شوند)، می‌توانید Cloud Run یا پروژه‌ای را که در مرحله 2 ایجاد کرده‌اید، حذف کنید.

برای حذف سرویس Cloud Run، به کنسول ابری Cloud Run در آدرس https://console.cloud.google.com/run بروید و سرویس gemma4-cr-codelab را حذف کنید. همچنین ممکن است بخواهید حساب کاربری سرویس gemma4-cr-codelab-sa را نیز حذف کنید.

اگر تصمیم به حذف کل پروژه دارید، می‌توانید به آدرس https://console.cloud.google.com/cloud-resource-manager بروید، پروژه‌ای را که در مرحله ۲ ایجاد کرده‌اید انتخاب کنید و گزینه Delete را انتخاب کنید. اگر پروژه را حذف کنید، باید پروژه‌ها را در Cloud SDK خود تغییر دهید. می‌توانید با اجرای gcloud projects list لیست تمام پروژه‌های موجود را مشاهده کنید.