১. ভূমিকা
সংক্ষিপ্ত বিবরণ
আপনি যা শিখবেন
- Cloud Run RTX 6000 Pro GPU-তে কীভাবে একটি Gemma 4 মডেল স্থাপন করবেন
- দ্রুততর ইনফারেন্স এবং কম সময়ে ইনস্ট্যান্স চালু করার জন্য কীভাবে vLLM ও Run:ai মডেল স্ট্রিমার ব্যবহার করবেন।
২. সেটআপ এবং প্রয়োজনীয়তা
এই কোডল্যাব জুড়ে ব্যবহৃত হবে এমন এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন:
# 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
৩. পরিষেবা অ্যাকাউন্ট তৈরি করুন
ক্লাউড রান সার্ভিস বা জব তৈরি করার সময় আপনি যদি কোনো সার্ভিস অ্যাকাউন্ট নির্দিষ্ট না করেন, তাহলে ক্লাউড রান কম্পিউট ইঞ্জিনের ডিফল্ট সার্ভিস অ্যাকাউন্ট ব্যবহার করে। সার্ভিসটিকে অতিরিক্ত অনুমতিসহ চালানো এড়াতে ক্লাউড রান সার্ভিসের জন্য একটি পৃথক সার্ভিস অ্যাকাউন্ট ব্যবহার করার পরামর্শ দেওয়া হয়।
ক্লাউড রান পরিষেবার জন্য পরিষেবা অ্যাকাউন্ট তৈরি করুন
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \
--project "${GOOGLE_CLOUD_PROJECT}" \
--display-name "vLLM Service Account"
৪. ক্লাউড স্টোরেজ সেটআপ করুন
মডেল ওয়েটগুলো সংরক্ষণ করার জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন। এর ফলে, প্রতিবার ক্লাউড রান যখন কোনো সার্ভিস ইনস্ট্যান্স চালু করবে, তখন ডিরেক্ট ভিপিসি ইগ্রেস ব্যবহার করে আরও দ্রুত মডেল ওয়েটগুলো ডাউনলোড করা যাবে।
vLLM-এ থাকা Run:ai Model Streamer ফিচারের সাথে মিলিতভাবে এটি মডেল লোড হওয়ার সময় উল্লেখযোগ্যভাবে কমিয়ে দেয়।
একটি বালতি তৈরি করুন
নিশ্চিত করুন যে এটি ক্লাউড রান পরিষেবার সাথে একই স্থানে অবস্থিত একটি একক-অঞ্চলের বাকেট।
gcloud storage buckets create "gs://${MODEL_CACHE_BUCKET}" \
--uniform-bucket-level-access --public-access-prevention \
--project "${GOOGLE_CLOUD_PROJECT}" --location "${GOOGLE_CLOUD_REGION}"
৫. মডেলের ওজন পুনরুদ্ধার এবং ক্যাশ করুন
এরপর, জেমা ৪ মডেলটি আপনার ক্লাউড স্টোরেজ বাকেটে ডাউনলোড করুন।
মডেলগুলোর সাইজ কয়েক ডজন গিগাবাইট, এবং সেগুলো আপনার লোকাল মেশিনে বা ক্লাউড শেলে ডাউনলোড করা অসম্ভব হতে পারে।
এর পরিবর্তে, আমরা মডেলের ওয়েটগুলো সংরক্ষণের জন্য পর্যাপ্ত স্টোরেজসহ ক্লাউড বিল্ড ব্যবহার করি।
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
৬. সরাসরি ভিপিসি থেকে বহির্গমনের জন্য নেটওয়ার্কিং কনফিগার করুন
ডাইরেক্ট ভিপিসি ইগ্রেস কনফিগারেশনের জন্য প্রাইভেট গুগল অ্যাক্সেস সক্রিয় করে একটি নেটওয়ার্ক ও সাবনেট তৈরি করতে হয়।
এর ফলে ক্লাউড রান পরিষেবাগুলি গুগল এপিআই এবং ক্লাউড স্টোরেজ সহ অন্যান্য পরিষেবাগুলিতে ব্যবহৃত বাহ্যিক আইপি ঠিকানাগুলির সাথে সংযোগ স্থাপন করতে পারে।
একটি নেটওয়ার্ক তৈরি করুন
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"
৭. পরিষেবা অ্যাকাউন্ট অ্যাক্সেস নীতি কনফিগার করুন
আপনার তৈরি করা স্টোরেজ বাকেটে থাকা মডেল ওয়েটগুলো অ্যাক্সেস করার জন্য ক্লাউড রান সার্ভিস অ্যাকাউন্টের অনুমতি প্রয়োজন।
gcloud storage buckets add-iam-policy-binding "gs://${MODEL_CACHE_BUCKET}" \
--member "serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role "roles/storage.admin" \
--project "${GOOGLE_CLOUD_PROJECT}"
৮. কনফিগারেশন ভেরিয়েবল প্রারম্ভিকীকরণ করুন
vLLM ইনফারেন্স ইঞ্জিন এবং ক্লাউড রান সার্ভিস উভয়ের জন্য ভেরিয়েবলগুলো নির্ধারণ করুন।
# 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
৯. ক্লাউড রান-এ ডেপ্লয় করুন
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 পরিষেবা স্থাপন করতে নিম্নলিখিত কমান্ডটি চালান।
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}"
১০. পরিষেবাটি পরীক্ষা করুন
একবার স্থাপন করা হলে, আপনি vLLM OpenAI-সামঞ্জস্যপূর্ণ API ব্যবহার করে আপনার Gemma 4 মডেলের সাথে যোগাযোগ করতে পারবেন।
পরিষেবার URL পান
আপনার ডেপ্লয় করা ক্লাউড রান সার্ভিসের URL-টি পুনরুদ্ধার করুন।
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'
১১. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!
আমরা ক্লাউড রান ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই।
আমরা যা আলোচনা করেছি
- Cloud Run RTX 6000 Pro GPU-তে কীভাবে Gemma 4 মডেল স্থাপন করবেন
- দ্রুত পরিষেবা চালুর জন্য ক্লাউড স্টোরেজের সাথে ডিরেক্ট ভিপিসি ইগ্রেস এবং ভিএলএলএম মডেল স্ট্রিমিং কীভাবে কনফিগার করবেন।
১২. পরিষ্কার করুন
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, আপনি প্রজেক্টটি অথবা স্বতন্ত্র রিসোর্সগুলো ডিলিট করে দিতে পারেন।
বিকল্প ১: রিসোর্স মুছে ফেলুন
ক্লাউড রান পরিষেবাটি মুছে ফেলুন
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
ক্লাউড স্টোরেজ বাকেটটি মুছে ফেলুন
gcloud storage rm --recursive gs://$MODEL_CACHE_BUCKET
VPC নেটওয়ার্ক এবং সাবনেট মুছে ফেলুন
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
বিকল্প ২: প্রজেক্টটি মুছে ফেলুন
সম্পূর্ণ প্রজেক্টটি ডিলিট করতে, 'Manage Resources'- এ যান, ধাপ ২-এ তৈরি করা প্রজেক্টটি সিলেক্ট করুন এবং 'Delete' বেছে নিন। প্রজেক্টটি ডিলিট করলে, আপনাকে আপনার Cloud SDK-তে প্রজেক্ট পরিবর্তন করতে হবে। gcloud projects list চালিয়ে আপনি সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন।