১. ভূমিকা
সংক্ষিপ্ত বিবরণ
ক্লাউড রান হলো গুগল ক্লাউডের একটি কন্টেইনার প্ল্যাটফর্ম, যা আপনাকে কোনো ক্লাস্টার পরিচালনা করার প্রয়োজন ছাড়াই খুব সহজে কন্টেইনারে আপনার কোড চালাতে সাহায্য করে। ক্লাউড রান সম্প্রতি জিপিইউ (GPU) সাপোর্ট যুক্ত করেছে।
বর্তমানে, আমরা ২৪ জিবি vRAM সহ Nvidia L4 GPU সরবরাহ করছি। প্রতিটি Cloud Run ইনস্ট্যান্সের জন্য একটি করে GPU রয়েছে এবং Cloud Run-এর অটো স্কেলিং এখনও প্রযোজ্য। এর মধ্যে রয়েছে ৫টি পর্যন্ত ইনস্ট্যান্স স্কেল আউট করা (কোটা বৃদ্ধির সুযোগ সহ), এবং কোনো অনুরোধ না থাকলে ইনস্ট্যান্সের সংখ্যা শূন্যে নামিয়ে আনা।
জিপিইউ ব্যবহারের একটি ক্ষেত্র হলো আপনার নিজস্ব ওপেন লার্জ ল্যাঙ্গুয়েজ মডেল (এলএলএম) চালানো। এই টিউটোরিয়ালটি আপনাকে একটি এলএলএম চালনাকারী সার্ভিস ডেপ্লয় করার পদ্ধতি ধাপে ধাপে দেখাবে।
এই সার্ভিসটি একটি ব্যাকএন্ড সার্ভিস যা প্রোডাকশন সিস্টেমের জন্য একটি ইনফারেন্স ইঞ্জিন vLLM চালায়। এই কোডল্যাবে গুগলের ২ বিলিয়ন প্যারামিটার ইনস্ট্রাকশন-টিউনড মডেল জেমা ২ ব্যবহার করা হয়েছে।
আপনি যা শিখবেন
- ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন
- হাগিং ফেস ব্যবহার করে কীভাবে একটি মডেল পুনরুদ্ধার করবেন।
- ইনফারেন্স ইঞ্জিন হিসেবে vLLM ব্যবহার করে ক্লাউড রানে গুগলের Gemma 2 2b ইন্সট্রাকশন-টিউনড মডেল কীভাবে ডেপ্লয় করবেন।
- বাক্য সম্পূর্ণ করার জন্য ব্যাকএন্ড সার্ভিসটি কীভাবে চালু করতে হয়।
২. সেটআপ এবং প্রয়োজনীয়তা
পূর্বশর্ত
- আপনি ক্লাউড কনসোলে লগ ইন করেছেন।
- আপনি পূর্বে একটি ক্লাউড রান সার্ভিস ডেপ্লয় করেছেন। উদাহরণস্বরূপ, কাজ শুরু করার জন্য আপনি ‘ ডিপ্লয় এ ওয়েব সার্ভিস ফ্রম সোর্স কোড’ কুইকস্টার্টটি অনুসরণ করতে পারেন।
- আপনার একটি হাগিং ফেস অ্যাকাউন্ট আছে এবং আপনি https://huggingface.co/google/gemma-2-2b-it-এ জেমা ২ ২বি লাইসেন্সটি স্বীকার করেছেন; অন্যথায়, আপনি মডেলটি ডাউনলোড করতে পারবেন না।
- আপনি এমন একটি অ্যাক্সেস টোকেন তৈরি করেছেন যা google/gemma-2-2b-it মডেলে প্রবেশাধিকার দেয়।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, অ্যাক্টিভেট ক্লাউড শেল-এ ক্লিক করুন।
.

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।
ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core]
project = <PROJECT_ID>
যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
৩. এপিআই সক্রিয় করুন এবং এনভায়রনমেন্ট ভেরিয়েবল সেট করুন
এপিআই সক্ষম করুন
এই কোডল্যাবটি ব্যবহার শুরু করার আগে, আপনাকে কয়েকটি এপিআই (API) সক্রিয় করতে হবে। এই কোডল্যাবটির জন্য নিম্নলিখিত এপিআইগুলো ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে সেই এপিআইগুলো সক্রিয় করতে পারেন:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
পরিবেশ ভেরিয়েবল সেটআপ করুন
আপনি এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন, যা এই কোডল্যাব জুড়ে ব্যবহৃত হবে।
HF_TOKEN=<YOUR_HUGGING_FACE_TOKEN>
PROJECT_ID=<YOUR_PROJECT_ID>
REGION=europe-west1
SERVICE_NAME=vllm-gemma-2-2b-it
AR_REPO_NAME=vllm-gemma-2-2b-it-repo
SERVICE_ACCOUNT=vllm-gemma-2-2b-it
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
৪. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
এই সার্ভিস অ্যাকাউন্টটি ক্লাউড রান সার্ভিস তৈরি করতে এবং সিক্রেট ম্যানেজার থেকে কোনো সিক্রেট অ্যাক্সেস করতে ব্যবহৃত হয়।
প্রথমে, এই কমান্ডটি চালিয়ে সার্ভিস অ্যাকাউন্টটি তৈরি করুন:
gcloud iam service-accounts create $SERVICE_ACCOUNT \
--display-name="Cloud Run vllm SA to access secret manager"
দ্বিতীয়ত, সার্ভিস অ্যাকাউন্টটিকে Vertex AI User রোলটি প্রদান করুন।
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
--role=roles/secretmanager.secretAccessor
এখন, আপনার হাগিং ফেস অ্যাক্সেস টোকেনের জন্য সিক্রেট ম্যানেজারে HF_TOKEN নামে একটি সিক্রেট তৈরি করুন। ক্লাউড বিল্ড, বিল্ড-টাইমে হাগিং ফেস থেকে জেমা ২ (২বি) মডেলটি ডাউনলোড করার জন্য এই সিক্রেটটি অ্যাক্সেস করতে সার্ভিস অ্যাকাউন্ট ব্যবহার করে। আপনি এখানে সিক্রেট এবং ক্লাউড বিল্ড সম্পর্কে আরও জানতে পারবেন।
printf $HF_TOKEN | gcloud secrets create HF_TOKEN --data-file=-
এবং ইমেজ বিল্ড করার সময় সিক্রেট ম্যানেজারে ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্টকে HF_TOKEN সিক্রেটটিতে অ্যাক্সেস প্রদান করুন।
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
৫. আর্টিফ্যাক্ট রেজিস্ট্রি-তে ইমেজটি তৈরি করুন।
প্রথমে, আর্টিফ্যাক্ট রেজিস্ট্রি-তে একটি রিপোজিটরি তৈরি করুন।
gcloud artifacts repositories create $AR_REPO_NAME \
--repository-format docker \
--location $REGION
এরপরে, একটি Dockerfile তৈরি করুন যা Secret Manager থেকে সিক্রেটটি অন্তর্ভুক্ত করবে। আপনি এখানে Docker buildx –secrets ফ্ল্যাগ সম্পর্কে আরও জানতে পারবেন।
FROM vllm/vllm-openai:v0.11.0
ENV HF_HOME=/model-cache
RUN --mount=type=secret,id=HF_TOKEN HF_TOKEN=$(cat /run/secrets/HF_TOKEN) \
hf download google/gemma-2-2b-it
ENV HF_HUB_OFFLINE=1
ENTRYPOINT python3 -m vllm.entrypoints.openai.api_server \
--port ${PORT:-8000} \
--model ${MODEL_NAME:-google/gemma-2-2b-it} \
--gpu-memory-utilization 0.85 \
--max-num-seqs 256 \
--max-model-len 4096
এখন একটি cloudbuild.yaml ফাইল তৈরি করুন।
steps:
- name: 'gcr.io/cloud-builders/docker'
id: build
entrypoint: 'bash'
secretEnv: ['HF_TOKEN']
args:
- -c
- |
SECRET_TOKEN="$$HF_TOKEN" docker buildx build --tag=${_IMAGE} --secret id=HF_TOKEN .
availableSecrets:
secretManager:
- versionName: 'projects/${PROJECT_ID}/secrets/HF_TOKEN/versions/latest'
env: 'HF_TOKEN'
images: ["${_IMAGE}"]
substitutions:
_IMAGE: '${_LOCATION}-docker.pkg.dev/${PROJECT_ID}/vllm-gemma-2-2b-it-repo/vllm-gemma-2-2b-it'
options:
dynamicSubstitutions: true
machineType: "E2_HIGHCPU_32"
সবশেষে, বিল্ডটি জমা দিন।
gcloud builds submit --config=cloudbuild.yaml --substitutions=_LOCATION=$REGION
এটি তৈরি করতে প্রায় ৮ মিনিট সময় লাগে।
৬. পরিষেবাটি স্থাপন করুন
আপনি এখন ক্লাউড রান-এ ইমেজটি ডেপ্লয় করার জন্য প্রস্তুত। ডেপ্লয়মেন্টটি সম্পন্ন হতে প্রায় ৫ মিনিট সময় লাগবে। ইমেজটিকে লোড হওয়ার জন্য আরও বেশি সময় দিতে আপনাকে হেলথ চেকের প্রাথমিক ডিলে কয়েক মিনিট বাড়িয়ে দিতে হবে। অন্যথায়, আপনি হেলথ চেক থেকে একটি 'ডেডলাইন এক্সিডেড' এরর পাবেন।
gcloud beta run deploy $SERVICE_NAME \
--image=$REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/$SERVICE_NAME \
--service-account $SERVICE_ACCOUNT_ADDRESS \
--cpu=8 \
--memory=32Gi \
--gpu=1 \
--port=8000 \
--gpu-type=nvidia-l4 \
--region $REGION \
--no-allow-unauthenticated \
--max-instances 3 \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--startup-probe tcpSocket.port=8000,initialDelaySeconds=240,failureThreshold=1,timeoutSeconds=240,periodSeconds=240
৭. পরিষেবাটি পরীক্ষা করুন
একবার ডেপ্লয় করা হয়ে গেলে, আপনি হয় ক্লাউড রান ডেভ প্রক্সি সার্ভিসটি ব্যবহার করতে পারেন, যা স্বয়ংক্রিয়ভাবে আপনার জন্য একটি আইডি টোকেন যোগ করে দেয়, অথবা সরাসরি সার্ভিস ইউআরএল-টি কার্ল (curl) করতে পারেন।
ক্লাউড রান ডেভ প্রক্সি পরিষেবা ব্যবহার করে
ক্লাউড রান ডেভ প্রক্সি সার্ভিস ব্যবহার করতে, আপনি এই ধাপগুলো অনুসরণ করতে পারেন:
প্রথমে, নিম্নলিখিত কমান্ডটি চালান।
gcloud run services proxy $SERVICE_NAME --region $REGION
এরপর, সার্ভিসটি কার্ল করুন।
curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-2-2b-it",
"prompt": "Cloud Run is a",
"max_tokens": 128,
"temperature": 0.90
}'
সরাসরি পরিষেবা URL ব্যবহার করে
প্রথমে, ডেপ্লয় করা সার্ভিসটির URL সংগ্রহ করুন।
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME --region $REGION --format 'value(status.url)')
পরিষেবাটি
curl -X POST $SERVICE_URL/v1/completions \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-2-2b-it",
"prompt": "Cloud Run is a",
"max_tokens": 128,
"temperature": 0.90
}'
ফলাফল
আপনি নিম্নলিখিতগুলির অনুরূপ ফলাফল দেখতে পাবেন:
{"id":"cmpl-e0e6924d4bfd4d918383c87cba5e25ac","object":"text_completion","created":1723853023,"model":"google/gemma-2-2b","choices":[{"index":0,"text":" serverless compute platform that lets you write your backend code in standard languages, such as Java, Go, PHP and Python.\n\nYou can deploy your function as a REST API that scales on demand and allows you to add additional security features such as HTTPS.\n\nTo write code for an Android app with Cloud Run, you need to use the GraalVM. This is because while Node.js is a more commonly known node-based platform, GraalVM is a virtual machine (VM) to run native code in the Cloud Run environment.\n\nNow you need graal.vm/java-11-jre.jar, the","logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":5,"total_tokens":133,"completion_tokens":128}}
৮. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!
আমরা ক্লাউড রান ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই।
আমরা যা আলোচনা করেছি
- ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন
- হাগিং ফেস ব্যবহার করে কীভাবে একটি মডেল পুনরুদ্ধার করবেন।
- vLLM-কে ইনফারেন্স ইঞ্জিন হিসেবে ব্যবহার করে ক্লাউড রান-এ গুগলের জেমা 2 (2B) মডেল কীভাবে ডেপ্লয় করবেন।
- বাক্য সম্পূর্ণ করার জন্য ব্যাকএন্ড সার্ভিসটি কীভাবে চালু করতে হয়।
৯. পরিষ্কার করুন
অনিচ্ছাকৃত চার্জ এড়াতে (উদাহরণস্বরূপ, যদি ফ্রি টিয়ারে আপনার মাসিক ক্লাউড রান ব্যবহারের বরাদ্দের চেয়ে ক্লাউড রান পরিষেবাগুলো অনিচ্ছাকৃতভাবে বেশিবার চালু করা হয়), আপনি হয় ক্লাউড রানটি অথবা ধাপ ২-এ তৈরি করা প্রজেক্টটি ডিলিট করে দিতে পারেন।
Cloud Run পরিষেবাটি মুছে ফেলার জন্য, https://console.cloud.google.com/run-এ অবস্থিত Cloud Run ক্লাউড কনসোলে যান এবং vllm-gemma-2-2b পরিষেবাটি মুছে ফেলুন। আপনি চাইলে vllm-gemma-2-2b পরিষেবা অ্যাকাউন্টটিও মুছে ফেলতে পারেন।
আপনি যদি পুরো প্রজেক্টটি মুছে ফেলতে চান, তাহলে আপনি https://console.cloud.google.com/cloud-resource-manager -এ গিয়ে, ধাপ ২-এ তৈরি করা প্রজেক্টটি নির্বাচন করে 'ডিলিট' (Delete) বিকল্পটি বেছে নিতে পারেন। প্রজেক্টটি মুছে ফেললে, আপনাকে আপনার ক্লাউড এসডিকে (Cloud SDK)-তে প্রজেক্ট পরিবর্তন করতে হবে। আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন।