1. ভূমিকা
সংক্ষিপ্ত বিবরণ
ক্লাউড রান সম্প্রতি GPU সাপোর্ট যোগ করেছে। এটি একটি অপেক্ষা তালিকাভুক্ত পাবলিক প্রিভিউ হিসেবে উপলব্ধ। আপনি যদি এই বৈশিষ্ট্যটি ব্যবহার করে দেখতে আগ্রহী হন, তাহলে অপেক্ষা তালিকায় যোগদানের জন্য এই ফর্মটি পূরণ করুন । ক্লাউড রান হল গুগল ক্লাউডের একটি কন্টেইনার প্ল্যাটফর্ম যা আপনাকে কোনও ক্লাস্টার পরিচালনা করার প্রয়োজন ছাড়াই একটি কন্টেইনারে আপনার কোড চালানো সহজ করে তোলে।
আজ, আমরা যে GPU গুলি উপলব্ধ করছি তা হল Nvidia L4 GPU যার 24 GB vRAM আছে। প্রতিটি ক্লাউড রান ইনস্ট্যান্সের জন্য একটি GPU আছে এবং ক্লাউড রান অটো স্কেলিং এখনও প্রযোজ্য। এর মধ্যে রয়েছে 5 টি ইনস্ট্যান্স পর্যন্ত স্কেলিং আউট (কোটা বৃদ্ধি সহ), এবং কোনও অনুরোধ না থাকলে শূন্য ইনস্ট্যান্সে স্কেলিং করা।
Transformers.js কার্যকরীভাবে Hugging Face এর transformers python লাইব্রেরির সমতুল্য ডিজাইন করা হয়েছে, যার অর্থ আপনি একই ধরণের API ব্যবহার করে একই প্রি-ট্রেনড মডেলগুলি চালাতে পারেন। আপনি Transformers.js ওয়েবসাইটে আরও জানতে পারেন।
এই কোডল্যাবে, আপনি ক্লাউড রানে একটি অ্যাপ তৈরি এবং স্থাপন করবেন যা Transformers.js এবং GPU ব্যবহার করে।
তুমি কি শিখবে
- GPU ব্যবহার করে Cloud Run-এ Transformers.js ব্যবহার করে কীভাবে একটি অ্যাপ চালানো যায়
2. API গুলি সক্ষম করুন এবং পরিবেশ ভেরিয়েবল সেট করুন
এই কোডল্যাব ব্যবহার শুরু করার আগে, আপনাকে বেশ কয়েকটি API সক্রিয় করতে হবে। এই কোডল্যাবটির জন্য নিম্নলিখিত API ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে এই APIগুলি সক্রিয় করতে পারেন:
gcloud services enable run.googleapis.com \
storage.googleapis.com \
cloudbuild.googleapis.com \
তারপর আপনি এই কোডল্যাব জুড়ে ব্যবহৃত পরিবেশগত ভেরিয়েবল সেট করতে পারেন।
PROJECT_ID=<YOUR_PROJECT_ID> AR_REPO_NAME=repo REGION=us-central1
৩. Transformers.js অ্যাপ তৈরি করুন
প্রথমে, সোর্স কোডের জন্য একটি ডিরেক্টরি তৈরি করুন এবং সেই ডিরেক্টরিতে সিডি দিন।
mkdir transformers-js-codelab && cd $_
একটি package.json ফাইল তৈরি করুন।
{
"name": "huggingface",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@huggingface/transformers": "^3.0.0-alpha.8",
"@xenova/transformers": "^2.17.2",
"express": "^4.17.1"
}
}
index.js নামে একটি ফাইল তৈরি করুন।
import { pipeline } from "@xenova/transformers";
import express from 'express';
// make sure the text-generation pipeline is created first
// before anyone can access the routes
const generator = await pipeline('text-generation', 'Xenova/llama2.c-stories15M', {
device: 'cuda',
dtype: 'fp32',
});
// now create the app and routes
const app = express();
app.get('/', async (req, res) => {
const text = 'A long time ago in a galaxy far far away,';
const output = await generator(text, { max_new_tokens: 50 });
res.send(output);
});
const port = parseInt(process.env.PORT) || 8080;
app.listen(port, () => {
console.log(`transformers-js app: listening on port ${port}`);
});
একটি Dockerfile তৈরি করুন। Dockerfile Transformers.js এর জন্য প্রয়োজনীয় অতিরিক্ত NVIDIA ড্রাইভার ইনস্টল করবে।
FROM node:20 WORKDIR /usr/src/app RUN apt-get update && \ apt-get install software-properties-common -y && \ wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb && \ dpkg -i cuda-keyring_1.1-1_all.deb && \ add-apt-repository contrib && \ apt-get update && \ apt-get -y install cuda-toolkit-12-6 && \ apt-get -y install cudnn-cuda-12 EXPOSE 8080 COPY package.json . RUN npm install COPY index.js . ENTRYPOINT ["node", "index.js"]
৪. ক্লাউড রান পরিষেবা তৈরি এবং স্থাপন করুন
আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি সংগ্রহস্থল তৈরি করুন।
gcloud artifacts repositories create $AR_REPO_NAME \ --repository-format docker \ --location us-central1
ক্লাউড বিল্ডে আপনার কোড জমা দিন।
IMAGE=us-central1-docker.pkg.dev/$PROJECT_ID/$AR_REPO_NAME/gpu-transformers-js gcloud builds submit --tag $IMAGE
এরপর, ক্লাউড রানে স্থাপন করুন
gcloud beta run deploy transformers-js-codelab \ --image=$IMAGE \ --cpu 8 --memory 32Gi \ --gpu=1 --no-cpu-throttling --gpu-type nvidia-l4 \ --allow-unauthenticated \ --region us-central1 \ --project=$PROJECT_ID \ --max-instances 1
৫. পরিষেবাটি পরীক্ষা করুন
আপনি নিম্নলিখিতগুলি চালিয়ে পরিষেবাটি পরীক্ষা করতে পারেন:
SERVICE_URL=$(gcloud run services describe transformers-js-codelab --region $REGION --format 'value(status.url)') curl $SERVICE_URL
এবং আপনি নিম্নলিখিতগুলির মতো কিছু দেখতে পাবেন:
[{"generated_text":"A long time ago in a galaxy far far away, there was a beautiful garden. Every day, the little girl would go to the garden and look at the flowers. She loved the garden so much that she would come back every day to visit it.\nOne day, the little girl was walking through"}]
৬. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন!
আমরা ক্লাউড রান জিপিইউ- এর ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিচ্ছি।
আমরা যা কভার করেছি
- GPU ব্যবহার করে Cloud Run-এ Transformers.js ব্যবহার করে কীভাবে একটি অ্যাপ চালানো যায়
৭. পরিষ্কার করা
অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি ক্লাউড রান পরিষেবাগুলি আপনার মাসিক ফ্রি টিয়ারে ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে বেশিবার অসাবধানতাবশত ইনভোক করা হয়), আপনি হয় ক্লাউড রান মুছে ফেলতে পারেন অথবা ধাপ ২-এ তৈরি করা প্রকল্পটি মুছে ফেলতে পারেন।
ক্লাউড রান পরিষেবাটি মুছে ফেলার জন্য, https://console.cloud.google.com/run এ ক্লাউড রান ক্লাউড কনসোলে যান এবং transformers-js-codelab পরিষেবাটি মুছে ফেলুন।
যদি আপনি সম্পূর্ণ প্রকল্পটি মুছে ফেলতে চান, তাহলে আপনি https://console.cloud.google.com/cloud-resource-manager এ যেতে পারেন, ধাপ ২-এ তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছে ফেলুন নির্বাচন করুন। যদি আপনি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-তে প্রকল্পগুলি পরিবর্তন করতে হবে। আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।