vLLM ব্যবহার করে ক্লাউড রান জিপিইউ-তে কীভাবে LLM ইনফারেন্স চালানো যায়

১. ভূমিকা

সংক্ষিপ্ত বিবরণ

ক্লাউড রান হলো গুগল ক্লাউডের একটি কন্টেইনার প্ল্যাটফর্ম, যা আপনাকে কোনো ক্লাস্টার পরিচালনার ঝামেলা ছাড়াই খুব সহজে কন্টেইনারে আপনার কোড চালাতে সাহায্য করে।

ক্লাউড রান একটি L4 অথবা NVIDIA RTX PRO 6000 ব্ল্যাকওয়েল জিপিইউ প্রদান করে। প্রতিটি ক্লাউড রান ইনস্ট্যান্সের জন্য একটি করে জিপিইউ থাকে এবং ক্লাউড রানের অটো স্কেলিং কার্যকর থাকে, যার মধ্যে কোনো অনুরোধ না থাকলে ইনস্ট্যান্সের সংখ্যা শূন্যে নামিয়ে আনাও অন্তর্ভুক্ত।

জিপিইউ ব্যবহারের একটি ক্ষেত্র হলো আপনার নিজস্ব ওপেন লার্জ ল্যাঙ্গুয়েজ মডেল (এলএলএম) চালানো। এই টিউটোরিয়ালটি আপনাকে একটি এলএলএম চালনাকারী সার্ভিস ডেপ্লয় করার পদ্ধতি ধাপে ধাপে দেখাবে।

এই কোডল্যাবে বর্ণনা করা হয়েছে কিভাবে vLLM ইনফারেন্স লাইব্রেরিসহ একটি প্রি-বিল্ট কন্টেইনার ব্যবহার করে ক্লাউড রান-এ জেমা ৪ ওপেন মডেল ডেপ্লয় করতে হয়।

আপনি যা শিখবেন

  • ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন
  • ইনফারেন্স ইঞ্জিন হিসেবে vLLM ব্যবহার করে ক্লাউড রানে গুগলের Gemma 4 2B ইন্সট্রাকশন-টিউনড মডেল কীভাবে ডেপ্লয় করবেন।

২. সেটআপ এবং প্রয়োজনীয়তা

পূর্বশর্ত

৩. এপিআই সক্রিয় করুন এবং এনভায়রনমেন্ট ভেরিয়েবল সেট করুন

এপিআই সক্ষম করুন

এই কোডল্যাবটি ব্যবহার শুরু করার আগে, আপনাকে কয়েকটি এপিআই (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

৪. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

এই সার্ভিস অ্যাকাউন্টটি ক্লাউড রান সার্ভিসের পরিচয় হিসেবে ব্যবহৃত হয়।

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="Cloud Run gemma 4 SA"

৫. পরিষেবাটি স্থাপন করুন

Cloud Run-এ Gemma মডেল স্থাপন করতে, প্রস্তাবিত সেটিংস সহ নিম্নলিখিত 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[*]}")

৬. পরিষেবাটি পরীক্ষা করুন

একবার ডেপ্লয় করা হয়ে গেলে, আপনি হয় ক্লাউড রান ডেভ প্রক্সি সার্ভিসটি ব্যবহার করতে পারেন, যা স্বয়ংক্রিয়ভাবে আপনার জন্য একটি আইডি টোকেন যোগ করে দেয়, অথবা সরাসরি সার্ভিস ইউআরএল-টি কার্ল (curl) করতে পারেন।

ক্লাউড রান ডেভ প্রক্সি পরিষেবা ব্যবহার করে

প্রথমে, প্রক্সি চালু করুন।

gcloud run services proxy $SERVICE_NAME \
  --project $PROJECT \
  --region $REGION \
  --port=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 $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
  }'

৭. অভিনন্দন!

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!

আমরা ক্লাউড রান ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই।

আমরা যা আলোচনা করেছি

  • ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন
  • vLLM-কে ইনফারেন্স ইঞ্জিন হিসেবে ব্যবহার করে ক্লাউড রানে গুগলের Gemma 4 (2B) মডেল কীভাবে ডেপ্লয় করবেন।

৮. পরিষ্কার করুন

অনিচ্ছাকৃত চার্জ এড়াতে (উদাহরণস্বরূপ, যদি ফ্রি টিয়ারে আপনার মাসিক ক্লাউড রান ব্যবহারের বরাদ্দের চেয়ে ক্লাউড রান পরিষেবাগুলো অনিচ্ছাকৃতভাবে বেশিবার চালু করা হয়), আপনি হয় ক্লাউড রানটি অথবা ধাপ ২-এ তৈরি করা প্রজেক্টটি ডিলিট করে দিতে পারেন।

Cloud Run পরিষেবাটি মুছে ফেলার জন্য, https://console.cloud.google.com/run-এ অবস্থিত Cloud Run ক্লাউড কনসোলে যান এবং gemma4-cr-codelab পরিষেবাটি মুছে ফেলুন। আপনি gemma4-cr-codelab-sa পরিষেবা অ্যাকাউন্টটিও মুছে ফেলতে পারেন।

আপনি যদি পুরো প্রজেক্টটি মুছে ফেলতে চান, তাহলে আপনি https://console.cloud.google.com/cloud-resource-manager -এ গিয়ে, ধাপ ২-এ তৈরি করা প্রজেক্টটি নির্বাচন করে 'ডিলিট' (Delete) বিকল্পটি বেছে নিতে পারেন। প্রজেক্টটি মুছে ফেললে, আপনাকে আপনার ক্লাউড এসডিকে (Cloud SDK)-তে প্রজেক্ট পরিবর্তন করতে হবে। আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন।