1. परिचय
खास जानकारी
आपको क्या सीखने को मिलेगा
- Cloud Run RTX 6000 Pro GPU पर Gemma 4 मॉडल को डिप्लॉय करने का तरीका
- तेज़ी से अनुमान लगाने और इंस्टेंस को कम समय में चालू करने के लिए, vLLM और Run:ai Model Streamer का इस्तेमाल कैसे करें.
2. सेटअप और ज़रूरी शर्तें
ऐसे एनवायरमेंट वैरिएबल सेट करें जिनका इस्तेमाल इस कोडलैब में किया जाएगा:
# Model name on HuggingFace Hub
export MODEL_NAME="google/gemma-4-31B-it"
# Cloud Run Service name
export SERVICE_NAME=gemma-rtx-vllm-codelab
# Cloud Project and Region for Cloud Run
export GOOGLE_CLOUD_PROJECT=<YOUR_PROJECT_ID> # Change to your Project Id
export GOOGLE_CLOUD_REGION=us-central1 # or europe-west4
# Optional HuggingFace User Access Token for accessing model weights
# (https://huggingface.co/docs/hub/en/security-tokens),
# if you are loading a private model.
export HF_TOKEN=""
# Service account for Cloud Run service
export SERVICE_ACCOUNT="vllm-service-sa"
export SERVICE_ACCOUNT_EMAIL="${SERVICE_ACCOUNT}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com"
# GCS Bucket for the model cache.
export MODEL_CACHE_BUCKET="${GOOGLE_CLOUD_PROJECT}-${GOOGLE_CLOUD_REGION}-hf-model-cache"
# Model cache location in GSC bucket
export GCS_MODEL_LOCATION="gs://${MODEL_CACHE_BUCKET}/model-cache/${MODEL_NAME}"
# VPC Network for Direct VPC Egress
export VPC_NETWORK="vllm-${GOOGLE_CLOUD_REGION}-net"
export VPC_SUBNET="vllm-${GOOGLE_CLOUD_REGION}-subnet"
export SUBNET_RANGE="10.8.0.0/26"
# set the project
gcloud config set project $GOOGLE_CLOUD_PROJECT
gcloud config set run/region $GOOGLE_CLOUD_REGION
इस कोडलैब के लिए ज़रूरी एपीआई चालू करना
gcloud services enable --project "${GOOGLE_CLOUD_PROJECT}" \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
iam.googleapis.com \
compute.googleapis.com \
vpcaccess.googleapis.com \
storage.googleapis.com
3. सेवा खाता बनाएं
अगर Cloud Run सेवा या नौकरी बनाते समय, सेवा खाते की जानकारी नहीं दी जाती है, तो Cloud Run, Compute Engine के डिफ़ॉल्ट सेवा खाते का इस्तेमाल करता है. हमारा सुझाव है कि Cloud Run सेवा के लिए अलग सेवा खाता इस्तेमाल करें, ताकि सेवा को ज़्यादा अनुमतियों के साथ न चलाना पड़े.
Cloud Run सेवा के लिए सेवा खाता बनाना
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \
--project "${GOOGLE_CLOUD_PROJECT}" \
--display-name "vLLM Service Account"
4. Cloud Storage सेट अप करना
मॉडल के वेट को सेव करने के लिए, Cloud Storage बकेट बनाएं. इससे, Cloud Run के हर बार सेवा इंस्टेंस शुरू करने पर, मॉडल के वेट को तेज़ी से डाउनलोड करने के लिए डायरेक्ट वीपीसी इग्रेस का इस्तेमाल किया जा सकेगा.
vLLM में Run:ai Model Streamer सुविधा के साथ मिलकर काम करने से, मॉडल लोड होने में लगने वाला समय काफ़ी कम हो जाता है.
बकेट बनाना
पक्का करें कि यह एक ही क्षेत्र में मौजूद बकेट हो और Cloud Run सेवा के साथ इस्तेमाल की जा रही हो.
gcloud storage buckets create "gs://${MODEL_CACHE_BUCKET}" \
--uniform-bucket-level-access --public-access-prevention \
--project "${GOOGLE_CLOUD_PROJECT}" --location "${GOOGLE_CLOUD_REGION}"
5. मॉडल के वेट वापस पाना और उन्हें कैश मेमोरी में सेव करना
इसके बाद, Gemma 4 मॉडल को अपनी Cloud Storage बकेट में डाउनलोड करें.
मॉडल के वेट का साइज़ कई जीबी होता है. इन्हें अपने कंप्यूटर या Cloud Shell पर डाउनलोड करना मुमकिन नहीं हो सकता.
इसके बजाय, हम Cloud Build का इस्तेमाल करते हैं. इसमें मॉडल के वेट को सेव करने के लिए, ज़रूरत के मुताबिक स्टोरेज होता है.
gcloud builds submit --project="${GOOGLE_CLOUD_PROJECT}" --region="${GOOGLE_CLOUD_REGION}" --no-source \
--substitutions="_MODEL_NAME=${MODEL_NAME},_HF_TOKEN=${HF_TOKEN},_GCS_MODEL_LOCATION=${GCS_MODEL_LOCATION}" \
--config=/dev/stdin <<'EOF'
steps:
- name: 'gcr.io/google.com/cloudsdktool/google-cloud-cli:slim'
entrypoint: 'bash'
args:
- '-c'
- |
set -e
pip3 install --root-user-action=ignore --break-system-packages huggingface_hub[cli]
echo "Downloading the model..."
if [[ "$_HF_TOKEN" != "" ]]; then
hf download "$_MODEL_NAME" --token $_HF_TOKEN --local-dir "./model-cache/$_MODEL_NAME"
else
hf download "$_MODEL_NAME" --local-dir "./model-cache/$_MODEL_NAME"
fi
echo "Uploading the model..."
gcloud storage cp -r "./model-cache/$_MODEL_NAME" "$_GCS_MODEL_LOCATION"
options:
machineType: 'E2_HIGHCPU_32'
diskSizeGb: 500
EOF
6. डाइरेक्ट वीपीसी इग्रेस के लिए नेटवर्किंग कॉन्फ़िगर करना
डायरेक्ट वीपीसी इग्रेस कॉन्फ़िगरेशन के लिए, प्राइवेट Google ऐक्सेस की सुविधा चालू करके नेटवर्क और सबनेट बनाना ज़रूरी है.
इससे Cloud Run की सेवाएं, Google के एपीआई और सेवाओं के लिए इस्तेमाल किए जाने वाले बाहरी आईपी पतों के सेट से कनेक्ट हो सकती हैं. इनमें Cloud Storage भी शामिल है.
नेटवर्क बनाना
gcloud compute networks create "$VPC_NETWORK" \
--subnet-mode=custom \
--bgp-routing-mode=regional \
--project "$GOOGLE_CLOUD_PROJECT"
सबनेट बनाना
gcloud compute networks subnets create "$VPC_SUBNET" \
--network="$VPC_NETWORK" \
--region="$GOOGLE_CLOUD_REGION" \
--range="$SUBNET_RANGE" \
--enable-private-ip-google-access \
--project "$GOOGLE_CLOUD_PROJECT"
7. सेवा खाते के ऐक्सेस की नीति कॉन्फ़िगर करना
Cloud Run सेवा खाते को, आपके बनाए गए स्टोरेज बकेट में मॉडल के वेट को ऐक्सेस करने की अनुमतियां चाहिए.
gcloud storage buckets add-iam-policy-binding "gs://${MODEL_CACHE_BUCKET}" \
--member "serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role "roles/storage.admin" \
--project "${GOOGLE_CLOUD_PROJECT}"
8. कॉन्फ़िगरेशन वैरिएबल शुरू करना
vLLM इन्फ़्रेंस इंजन और Cloud Run सेवा, दोनों के लिए वैरिएबल तय करें.
# vLLM variables
export MAX_MODEL_LEN=32767 # 32767 to improve concurrency. Keep it empty to use model's maximim context length (256K)
export QUANTIZATION_TYPE="fp8" # Model quantization for faster performance and lower memory usage.
export KV_CACHE_DTYPE="fp8" # KV-cache quantization to save GPU memory.
export GPU_MEM_UTIL="0.95" # Fraction of GPU memory to be used by the vLLM engine.
export TENSOR_PARALLEL_SIZE="1" # Partitioning model across GPUs (1 here as we have only 1 GPU).
export MAX_NUM_SEQS=8 # Max concurrent requests vLLM processes in one batch.
# Cloud Run variables
export CLOUD_RUN_CPU_NUM=20
export CLOUD_RUN_MEMORY_GB=80
export CLOUD_RUN_MAX_INSTANCES=3
export CLOUD_RUN_CONCURRENCY=16
9. Cloud Run पर डिप्लॉय करें
vLLM कंटेनर के लिए कमांड लाइन तैयार करना
vLLM को बड़े मॉडल को तेज़ी से और असरदार तरीके से चलाने के लिए, कई पैरामीटर की ज़रूरत होती है.
CONTAINER_ARGS=(
"vllm"
"serve"
"${GCS_MODEL_LOCATION}"
"--served-model-name" "${MODEL_NAME}"
"--enable-log-requests"
"--enable-chunked-prefill"
"--enable-prefix-caching"
"--generation-config" "auto"
"--enable-auto-tool-choice"
"--tool-call-parser" "gemma4"
"--reasoning-parser" "gemma4"
"--dtype" "bfloat16"
"--quantization" "${QUANTIZATION_TYPE}"
"--kv-cache-dtype" "${KV_CACHE_DTYPE}"
"--max-num-seqs" "${MAX_NUM_SEQS}"
"--limit-mm-per-prompt" '{"image":4,"video":2}'
"--gpu-memory-utilization" "${GPU_MEM_UTIL}"
"--tensor-parallel-size" "${TENSOR_PARALLEL_SIZE}"
"--load-format" "runai_streamer"
"--port" "8080"
"--host" "0.0.0.0"
)
if [[ "${MAX_MODEL_LEN}" != "" ]]; then
CONTAINER_ARGS+=("--max-model-len" "${MAX_MODEL_LEN}")
fi
export CONTAINER_ARGS_STR="${CONTAINER_ARGS[*]}"
Cloud Run सेवा डिप्लॉय करना
Cloud Run सेवा को डिप्लॉय करने के लिए, यह कमांड चलाएं.
gcloud beta run deploy "${SERVICE_NAME}" \
--image="us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:gemma4" \
--project "${GOOGLE_CLOUD_PROJECT}" \
--region "${GOOGLE_CLOUD_REGION}" \
--service-account "${SERVICE_ACCOUNT_EMAIL}" \
--execution-environment gen2 \
--no-allow-unauthenticated \
--cpu="${CLOUD_RUN_CPU_NUM}" \
--memory="${CLOUD_RUN_MEMORY_GB}Gi" \
--gpu=1 \
--gpu-type=nvidia-rtx-pro-6000 \
--no-gpu-zonal-redundancy \
--no-cpu-throttling \
--max-instances ${CLOUD_RUN_MAX_INSTANCES} \
--concurrency ${CLOUD_RUN_CONCURRENCY} \
--network ${VPC_NETWORK} \
--subnet ${VPC_SUBNET} \
--vpc-egress all-traffic \
--set-env-vars "MODEL_NAME=${MODEL_NAME}" \
--set-env-vars "GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}" \
--set-env-vars "GOOGLE_CLOUD_REGION=${GOOGLE_CLOUD_REGION}" \
--startup-probe tcpSocket.port=8080,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240 \
--command "bash" \
--args="^;^-c;${CONTAINER_ARGS_STR}"
10. सेवा को आज़माना
डप्लॉय करने के बाद, vLLM के OpenAI के साथ काम करने वाले API का इस्तेमाल करके, Gemma 4 मॉडल के साथ इंटरैक्ट किया जा सकता है.
सेवा का यूआरएल पाना
डिप्लॉय की गई Cloud Run सेवा का यूआरएल पाएं.
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --project "${GOOGLE_CLOUD_PROJECT}" --region "${GOOGLE_CLOUD_REGION}" --format 'value(status.url)')
echo "Service URL: $SERVICE_URL"
अनुमान लगाना
curl का इस्तेमाल करके, मॉडल को कोई प्रॉम्प्ट भेजें.
curl -s "$SERVICE_URL/v1/chat/completions" \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${MODEL_NAME}"'",
"messages": [
{"role": "user", "content": "Why is the sky blue?"}
],
"chat_template_kwargs": {
"enable_thinking": true
},
"skip_special_tokens": false
}' | jq -r '.choices[0].message.content'
11. बधाई हो!
कोडलैब पूरा करने के लिए बधाई!
हमारा सुझाव है कि आप Cloud Run का दस्तावेज़ पढ़ें.
हमने क्या-क्या कवर किया है
- Cloud Run RTX 6000 Pro GPU पर Gemma 4 मॉडल को डिप्लॉय करने का तरीका
- तेज़ी से सेवा शुरू करने के लिए, Cloud Storage के साथ Direct VPC Egress और vLLM मॉडल स्ट्रीमिंग को कॉन्फ़िगर करने का तरीका.
12. व्यवस्थित करें
इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, प्रोजेक्ट या अलग-अलग संसाधनों को मिटाया जा सकता है.
पहला विकल्प: संसाधन मिटाना
Cloud Run सेवा मिटाना
gcloud run services delete $SERVICE_NAME \
--project "${GOOGLE_CLOUD_PROJECT}" \
--region "${GOOGLE_CLOUD_REGION}"
--quiet
सेवा वाला खाता मिटाना
gcloud iam service-accounts delete \
${SERVICE_ACCOUNT_EMAIL} \
--project "${GOOGLE_CLOUD_PROJECT}" \
--quiet
Cloud Storage बकेट मिटाना
gcloud storage rm --recursive gs://$MODEL_CACHE_BUCKET
वीपीएन नेटवर्क और सबनेट मिटाना
gcloud compute networks subnets delete $VPC_SUBNET \
--region "${GOOGLE_CLOUD_REGION}" \
--project "${GOOGLE_CLOUD_PROJECT}" \
--quiet
gcloud compute networks delete $VPC_NETWORK \
--project "${GOOGLE_CLOUD_PROJECT}" \
--quiet
दूसरा विकल्प: प्रोजेक्ट मिटाना
पूरे प्रोजेक्ट को मिटाने के लिए, संसाधन मैनेज करें पर जाएं. इसके बाद, दूसरे चरण में बनाया गया प्रोजेक्ट चुनें और मिटाएं को चुनें. प्रोजेक्ट मिटाने पर, आपको Cloud SDK में प्रोजेक्ट बदलने होंगे. gcloud projects list कमांड चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.