ভিএলএলএম এবং ওপেনএআই পাইথন এসডিকে সহ ক্লাউড রান জিপিইউতে কীভাবে এলএলএম অনুমান চালানো যায়

1. ভূমিকা

ওভারভিউ

ক্লাউড রান সম্প্রতি GPU সমর্থন যোগ করেছে। এটি একটি অপেক্ষা তালিকাভুক্ত সর্বজনীন পূর্বরূপ হিসাবে উপলব্ধ। আপনি যদি বৈশিষ্ট্যটি ব্যবহার করে দেখতে আগ্রহী হন তবে অপেক্ষা তালিকায় যোগ দিতে এই ফর্মটি পূরণ করুন ৷ ক্লাউড রান হল Google ক্লাউডের একটি কন্টেইনার প্ল্যাটফর্ম যা আপনাকে একটি ক্লাস্টার পরিচালনা করার প্রয়োজন ছাড়াই একটি কন্টেইনারে আপনার কোড চালানো সহজ করে তোলে।

আজ, আমরা যে GPU গুলি উপলব্ধ করি তা হল 24 GB vRAM সহ Nvidia L4 GPU গুলি৷ প্রতি ক্লাউড রান দৃষ্টান্তে একটি জিপিইউ রয়েছে এবং ক্লাউড রান স্বয়ংক্রিয় স্কেলিং এখনও প্রযোজ্য। এর মধ্যে 5টি পর্যন্ত (কোটা বৃদ্ধির উপলভ্য) দৃষ্টান্ত পর্যন্ত স্কেল করা অন্তর্ভুক্ত, সেইসাথে কোন অনুরোধ না থাকলে শূন্য দৃষ্টান্তে স্কেল করা অন্তর্ভুক্ত।

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

পরিষেবাটি একটি ব্যাকএন্ড পরিষেবা যা ভিএলএলএম চালায়, উত্পাদন সিস্টেমের জন্য একটি অনুমান ইঞ্জিন৷ এই কোডল্যাবটি 2 বিলিয়ন প্যারামিটার নির্দেশ-সুরিত মডেল সহ Google-এর Gemma 2 ব্যবহার করে।

আপনি কি শিখবেন

  • ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন।
  • একটি মডেল পুনরুদ্ধার করতে কিভাবে আলিঙ্গন মুখ ব্যবহার করবেন।
  • একটি অনুমান ইঞ্জিন হিসাবে vLLM ব্যবহার করে ক্লাউড রানে Google-এর Gemma 2 2b নির্দেশ-টিউনড মডেল কীভাবে স্থাপন করবেন।
  • বাক্য সমাপ্তির জন্য ব্যাকএন্ড পরিষেবা কীভাবে আহ্বান করবেন।

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

পূর্বশর্ত

  • আপনি ক্লাউড কনসোলে লগ ইন করেছেন।
  • আপনি পূর্বে একটি ক্লাউড রান পরিষেবা স্থাপন করেছেন৷ উদাহরণস্বরূপ, আপনি শুরু করতে সোর্স কোড কুইকস্টার্ট থেকে একটি ওয়েব পরিষেবা স্থাপন অনুসরণ করতে পারেন।
  • আপনার একটি আলিঙ্গন মুখ অ্যাকাউন্ট আছে এবং আপনি https://huggingface.co/google/gemma-2-2b-it-এ Gemma 2 2b লাইসেন্স স্বীকার করেছেন; অন্যথায়, আপনি মডেলটি ডাউনলোড করতে পারবেন না।
  • আপনি একটি অ্যাক্সেস টোকেন তৈরি করেছেন যাতে google/gemma-2-2b-it মডেলে অ্যাক্সেস রয়েছে।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন d1264ca30785e435.png .

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

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

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

আপনি এই কোডল্যাব ব্যবহার শুরু করার আগে, আপনাকে সক্রিয় করতে হবে এমন বেশ কয়েকটি API আছে। এই কোডল্যাবের জন্য নিম্নলিখিত API ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে সেই 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=us-central1
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

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

এই পরিষেবা অ্যাকাউন্টটি ক্লাউড রান পরিষেবা তৈরি করতে এবং সিক্রেট ম্যানেজারের কাছ থেকে একটি গোপন অ্যাক্সেস করতে ব্যবহৃত হয়।

প্রথমে, এই কমান্ডটি চালিয়ে পরিষেবা অ্যাকাউন্ট তৈরি করুন:

gcloud iam service-accounts create $SERVICE_ACCOUNT \
  --display-name="Cloud Run vllm SA to access secrete manager"

দ্বিতীয়ত, পরিষেবা অ্যাকাউন্টে Vertex AI ব্যবহারকারীর ভূমিকা মঞ্জুর করুন৷

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/secretmanager.secretAccessor

এখন, আপনার আলিঙ্গন ফেস অ্যাক্সেস টোকেনের জন্য HF_TOKEN নামে সিক্রেট ম্যানেজারে একটি গোপনীয়তা তৈরি করুন। Hugging Face থেকে Gemma 2 (2B) মডেলটি নামিয়ে আনতে বিল্ড-টাইমে এই গোপনীয়তা অ্যাক্সেস করতে ক্লাউড বিল্ড পরিষেবা অ্যাকাউন্ট ব্যবহার করে। আপনি এখানে গোপনীয়তা এবং ক্লাউড বিল্ড সম্পর্কে আরও জানতে পারেন।

printf $HF_TOKEN | gcloud secrets create HF_TOKEN --data-file=-

এবং সিক্রেট ম্যানেজারের HF_TOKEN গোপনে পরিষেবা অ্যাকাউন্টের অ্যাক্সেস মঞ্জুর করুন৷

gcloud secrets add-iam-policy-binding HF_TOKEN \
    --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
    --role='roles/secretmanager.secretAccessor'

5. আর্টিফ্যাক্ট রেজিস্ট্রিতে ছবিটি তৈরি করুন

প্রথমে, আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি সংগ্রহস্থল তৈরি করুন।

gcloud artifacts repositories create $AR_REPO_NAME \
  --repository-format docker \
  --location us-central1

এরপরে, একটি Dockerfile তৈরি করুন যা সিক্রেট ম্যানেজারের গোপনীয়তাকে অন্তর্ভুক্ত করবে। আপনি এখানে ডকার বিল্ডএক্স –সিক্রেটস পতাকা সম্পর্কে আরও জানতে পারেন।

FROM vllm/vllm-openai:latest

ENV HF_HOME=/model-cache
RUN --mount=type=secret,id=HF_TOKEN HF_TOKEN=$(cat /run/secrets/HF_TOKEN) \
    huggingface-cli 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} \
    ${MAX_MODEL_LEN:+--max-model-len "$MAX_MODEL_LEN"}

এখন একটি 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: 'us-central1-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

বিল্ড প্রায় 8 মিনিট হতে পারে।

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

আপনি এখন ক্লাউড রানে ইমেজ স্থাপন করতে প্রস্তুত।

gcloud beta run deploy $SERVICE_NAME \
--image=us-central1-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/$SERVICE_NAME \
--service-account $SERVICE_ACCOUNT_ADDRESS \
--cpu=8 \
--memory=32Gi \
--gpu=1 --gpu-type=nvidia-l4 \
--region us-central1 \
--no-allow-unauthenticated \
--max-instances 5 \
--no-cpu-throttling

স্থাপনে 5 মিনিট পর্যন্ত সময় লাগতে পারে।

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

একবার স্থাপন করা হলে, আপনি হয় ক্লাউড রান ডেভ প্রক্সি পরিষেবা ব্যবহার করতে পারেন যা স্বয়ংক্রিয়ভাবে আপনার জন্য একটি আইডি টোকেন যোগ করে বা আপনি সরাসরি পরিষেবা URLটি কার্ল করেন৷

Cloud Run dev প্রক্সি পরিষেবা ব্যবহার করা

ক্লাউড রান ডেভ প্রক্সি পরিষেবা ব্যবহার করতে, আপনি এই পদক্ষেপগুলি ব্যবহার করতে পারেন:

প্রথমে নিম্নলিখিত কমান্ডটি চালান

gcloud run services proxy $SERVICE_NAME --region us-central1

এর পরে, পরিষেবাটি কার্ল করুন

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}}

8. অভিনন্দন!

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

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

আমরা কভার করেছি কি

  • ক্লাউড রানে কীভাবে জিপিইউ ব্যবহার করবেন।
  • একটি মডেল পুনরুদ্ধার করতে কিভাবে আলিঙ্গন মুখ ব্যবহার করবেন।
  • একটি ইনফারেন্স ইঞ্জিন হিসাবে ভিএলএলএম ব্যবহার করে ক্লাউড রানে গুগলের জেমা 2 (2বি) মডেল কীভাবে স্থাপন করবেন।
  • বাক্য সমাপ্তির জন্য ব্যাকএন্ড পরিষেবা কীভাবে আহ্বান করবেন।

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

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

ক্লাউড রান পরিষেবাটি মুছে ফেলতে, https://console.cloud.google.com/run-এ ক্লাউড রান ক্লাউড কনসোলে যান এবং vllm-gemma-2-2b পরিষেবাটি মুছুন৷ আপনি vllm-gemma-2-2b পরিষেবা অ্যাকাউন্টটি মুছতেও চাইতে পারেন।

আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।