1- مقدمة
نظرة عامة
Cloud Run هي منصة حاويات على Google Cloud تسهّل تشغيل الرمز البرمجي في حاوية، بدون الحاجة إلى إدارة مجموعة.
توفّر Cloud Run إما وحدة معالجة رسومات من المستوى الرابع أو وحدة معالجة رسومات NVIDIA RTX PRO 6000 Blackwell. تتوفّر وحدة معالجة رسومات واحدة لكل مثيل من Cloud Run، ويظلّ التوسّع التلقائي في Cloud Run ساريًا، بما في ذلك تقليص عدد المثيلات إلى صفر عندما لا تكون هناك أي طلبات.
من حالات استخدام وحدات معالجة الرسومات تشغيل نماذج اللغة الكبيرة (LLM) المفتوحة الخاصة بك. يرشدك هذا البرنامج التعليمي إلى كيفية نشر خدمة تشغّل نموذج لغة كبيرًا.
يوضّح هذا الدرس التطبيقي حول الترميز كيفية نشر نماذج Gemma 4 المفتوحة على Cloud Run باستخدام حاوية مُنشأة مسبقًا تتضمّن مكتبة الاستدلال vLLM.
المواضيع التي ستتعرّف عليها
- كيفية استخدام وحدات معالجة الرسومات على Cloud Run
- كيفية نشر نموذج Gemma 4 2B من Google الذي تم ضبطه للتعليمات على Cloud Run باستخدام vLLM كمحرّك استدلال
2. الإعداد والمتطلبات
المتطلبات الأساسية
- لقد سجّلت الدخول إلى Cloud Console.
- سبق لك نشر خدمة Cloud Run. على سبيل المثال، يمكنك اتّباع دليل البدء السريع نشر خدمة ويب من رمز المصدر للبدء.
3. تفعيل واجهات برمجة التطبيقات وضبط المتغيّرات البيئية
تفعيل واجهات برمجة التطبيقات
قبل أن تتمكّن من بدء استخدام هذا الدرس التطبيقي حول الترميز، عليك تفعيل عدة واجهات برمجة تطبيقات. يتطلب هذا الدرس التطبيقي حول الترميز استخدام واجهات برمجة التطبيقات التالية. يمكنك تفعيل واجهات برمجة التطبيقات هذه من خلال تشغيل الأمر التالي:
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، استخدِم أمر 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[*]}")
6. اختبار الخدمة
بعد النشر، يمكنك إما استخدام خدمة الخادم الوكيل لتطوير Cloud Run التي تضيف تلقائيًا رمز تعريف لك أو استخدام الأمر `curl` لعنوان URL للخدمة مباشرةً.
استخدام خدمة الخادم الوكيل لتطوير Cloud Run
أولاً، ابدأ الخادم الوكيل.
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 للخدمة مباشرةً
أولاً، استرجِع عنوان 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. تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
ننصحك بمراجعة مستندات Cloud Run
المواضيع التي تناولناها
- كيفية استخدام وحدات معالجة الرسومات على 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.