۱. مقدمه
نمای کلی
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 مستقر کنیم.
۲. تنظیمات و الزامات
پیشنیازها
- شما وارد کنسول ابری شدهاید.
- شما قبلاً یک سرویس 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 لیست تمام پروژههای موجود را مشاهده کنید.