1. מבוא
סקירה כללית
Cloud Run היא פלטפורמת קונטיינרים ב-Google Cloud שמאפשרת להריץ את הקוד בקונטיינר בקלות, בלי שתצטרכו לנהל אשכול.
ב-Cloud Run מוצע GPU מסוג L4 או NVIDIA RTX PRO 6000 Blackwell. יש GPU אחד לכל מכונת Cloud Run, וההתאמה האוטומטית לעומס ב-Cloud Run עדיין חלה, כולל צמצום מספר המכונות לאפס כשאין בקשות.
אחד מתרחישי השימוש במעבדי GPU הוא הפעלה של מודלים גדולים של שפה (LLM) שהם קוד פתוח. במדריך הזה נסביר איך לפרוס שירות שמריץ מודל שפה גדול (LLM).
בשיעור Codelab הזה נסביר איך לפרוס מודלים פתוחים של Gemma 4 ב-Cloud Run באמצעות קונטיינר מוכן מראש עם ספריית ההסקה vLLM.
מה תלמדו
- איך משתמשים ביחידות GPU ב-Cloud Run.
- איך פורסים את מודל Gemma 4 2B של Google שעבר כוונון להוראות ב-Cloud Run באמצעות vLLM כמנוע היקש.
2. הגדרה ודרישות
דרישות מוקדמות
- אתם מחוברים ל-Cloud Console.
- כבר פרסתם שירות Cloud Run. לדוגמה, אפשר לפעול לפי ההוראות שבמדריך למתחילים לפריסת שירות אינטרנט מקוד מקור.
3. הפעלת ממשקי 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
4. יצירה של חשבון שירות
חשבון השירות הזה משמש כזהות של שירות Cloud Run.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="Cloud Run gemma 4 SA"
5. פריסת השירות
כדי לפרוס מודלים של Gemma ב-Cloud Run, משתמשים בפקודה הבאה של ה-CLI של gcloud עם ההגדרות המומלצות:
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. בדיקת השירות
אחרי הפריסה, אפשר להשתמש בשירות ה-proxy לפיתוח של Cloud Run שמוסיף אסימון מזהה באופן אוטומטי, או להשתמש ב-curl של כתובת ה-URL של השירות ישירות.
שימוש בשירות ה-Proxy לפיתוח של Cloud Run
קודם מפעילים את ה-proxy.
gcloud run services proxy $SERVICE_NAME \
--project $PROJECT \
--region $REGION \
--port=9090
מריצים את הפקודה הבאה כדי לשלוח בקשה בכרטיסיית מסוף נפרדת, בלי להפסיק את פעולת ה-proxy. הפרוקסי פועל בכתובת 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 של השירות
קודם צריך לאחזר את כתובת ה-URL של השירות שנפרס.
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')
הפעלת השירות באמצעות Curl
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. מעולה!
כל הכבוד, סיימתם את ה-Codelab!
מומלץ לעיין במסמכי התיעוד של Cloud Run
מה למדנו
- איך משתמשים ביחידות GPU ב-Cloud Run.
- איך פורסים את מודל Gemma 4 (2B) של Google ב-Cloud Run באמצעות vLLM כמנוע היקש.
8. הסרת המשאבים
כדי להימנע מחיובים לא מכוונים (לדוגמה, אם שירותי Cloud Run מופעלים בטעות יותר פעמים מההקצאה החודשית של הפעלות Cloud Run בתוכנית בחינם), אפשר למחוק את Cloud Run או את הפרויקט שיצרתם בשלב 2.
כדי למחוק את שירות Cloud Run, עוברים אל Cloud Run Cloud Console בכתובת https://console.cloud.google.com/run ומוחקים את השירות gemma4-cr-codelab. אולי תרצו גם למחוק את gemma4-cr-codelab-sa חשבון השירות.
אם אתם רוצים למחוק את הפרויקט כולו, אתם יכולים להיכנס לכתובת https://console.cloud.google.com/cloud-resource-manager, לבחור את הפרויקט שיצרתם בשלב 2 וללחוץ על 'מחיקה'. אם תמחקו את הפרויקט, תצטרכו לשנות את הפרויקטים ב-Cloud SDK. כדי לראות את רשימת כל הפרויקטים הזמינים, מריצים את הפקודה gcloud projects list.