PaLM Vertex AI API এবং Google ক্লাউড স্টোরেজ ব্যবহার করে বিষয়বস্তুর সারসংক্ষেপের জন্য ক্লাউড ফাংশন

১. ভূমিকা

এই কোডল্যাবে, পাইথনে ক্লাউড ফাংশন হিসেবে ভার্টেক্স এআই লার্জ ল্যাঙ্গুয়েজ মডেল ফর টেক্সট জেনারেশন ( টেক্সট-বাইসন ) ব্যবহার করে গুগল ক্লাউড স্টোরেজে আপলোড করা কন্টেন্টের সারাংশ তৈরির ধাপগুলো পাবেন। ব্যবহৃত সার্ভিসগুলোর তালিকা নিচে দেওয়া হলো:

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

আপনি যা তৈরি করবেন

আপনি পাম এপিআই (Palm API) ব্যবহার করে টেক্সটের সারসংক্ষেপ করার জন্য একটি অ্যাপ্লিকেশন তৈরি করবেন, যা পাইথন ক্লাউড ফাংশন (Python Cloud Function) হিসেবে ডেপ্লয় করা হবে।

২. প্রয়োজনীয়তা

৩. শুরু করার আগে

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. প্রয়োজনীয় সকল এপিআই (ক্লাউড স্টোরেজ এপিআই, ভার্টেক্স এআই এপিআই, ক্লাউড ফাংশন এপিআই, এবং ক্লাউড লগিং) সক্রিয় আছে কিনা তা নিশ্চিত করুন।
  4. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ। gcloud কমান্ড এবং এর ব্যবহার সম্পর্কে জানতে ডকুমেন্টেশন দেখুন।
  5. ক্লাউড কনসোল থেকে, উপরের ডান কোণায় থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন:

51622c00acec2fa.png

আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud config set project <YOUR_PROJECT_ID>
  1. ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে সমস্ত প্রয়োজনীয় API সক্রিয় করা আছে কিনা তা নিশ্চিত করুন:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে REGION এবং PROJECT_ID-এর জন্য এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন:
export PROJECT_ID=<your project id>

export REGION=us-central1

৪. ভার্টেক্স এআই এপিআই আহ্বান করার জন্য ক্লাউড ফাংশন

আমরা একটি পাইথন ক্লাউড ফাংশন তৈরি করব এবং এই ফাংশনের মধ্যে ভার্টেক্স এআই এপিআই কল করব।

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

ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করুন।

gcloud iam service-accounts create vertex-service-acc

আপনার প্রজেক্ট ও রিসোর্সসমূহে অ্যাক্সেস দেওয়ার জন্য, সার্ভিস অ্যাকাউন্টটিকে একটি রোল প্রদান করুন।

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

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

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

পাইথন ফাংশন তৈরি করা

যেসব কাজ ক্রমাগত কথোপকথনের প্রয়োজন ছাড়াই একটিমাত্র এপিআই প্রতিক্রিয়ার মাধ্যমে সম্পন্ন করা যায়, সেগুলোর জন্য PaLM টেক্সট এপিআই আদর্শ। চলুন, এখন এর জন্য ক্লাউড ফাংশনটি তৈরি করা যাক।

রিপোজিটরি ক্লোন করতে এবং প্রজেক্টে যেতে ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলো চালান (পূর্ববর্তী বিভাগে খোলা একই টার্মিনালটি ব্যবহার করুন):

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

এই প্রজেক্টে আমাদের জন্য প্রয়োজনীয় ফোল্ডারটি হলো: summarization-gcs-cloudfunction।

টার্মিনাল থেকে ক্লাউড শেল এডিটর খুলুন এবং গিটহাব থেকে আপনার ক্লাউড শেল মেশিনে ক্লোন হওয়া প্রজেক্ট ফোল্ডারটির বিষয়বস্তু পরীক্ষা করুন।

এই ফোল্ডারটিতে ২টি ফাইল রয়েছে:

  1. main.py পাইথন ফাইলটি একটি সাধারণ HTTP ক্লাউড ফাংশন সংজ্ঞায়িত করে, যা একটি Vertex AI টেক্সট জেনারেশন মডেল ব্যবহার করে টেক্সট ইনপুটের সংক্ষিপ্ত সারাংশ তৈরি করে। ফাংশনটি প্যারামিটার হিসেবে একটি টেক্সট ইনপুট গ্রহণ করে এবং ইনপুটটির একটি সংক্ষিপ্ত সারাংশ ফেরত দেয়। ফাংশনটি তৈরি হওয়া টেক্সটের সৃজনশীলতা, বৈচিত্র্য এবং সাবলীলতার মতো বিভিন্ন প্যারামিটার ব্যবহার করে তৈরির প্রক্রিয়াটি নিয়ন্ত্রণ করে। HTTP ক্লাউড ফাংশনটি একটি রিকোয়েস্ট অবজেক্ট গ্রহণ করে এবং রেসপন্স হিসেবে মডেলের সারাংশটি ফেরত দেয়।
  2. requirements.txt ফাইলে প্যাকেজ নির্ভরতা রয়েছে:
  • functions-framework==3. : এটি নিশ্চিত করে যে ফাংশনটি ফাংশনস ফ্রেমওয়ার্কের সর্বশেষ ফিচার এবং বাগ ফিক্স ব্যবহার করে।
  • গুগল ক্লাউড এআই প্ল্যাটফর্ম : ভার্টেক্স এআই টেক্সট জেনারেশন মডেল ব্যবহার করার জন্য এটি আবশ্যক।
  • google-cloud-storage: গুগল ক্লাউড স্টোরেজে স্টোরেজ বাকেট তৈরি করার জন্য এটি আবশ্যক।
  • google-cloud-logging : লগ তৈরি করার জন্য এটি আবশ্যক।

৫. ফাংশনটি স্থাপন করুন

  1. দুটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন:
  • প্রথম বাকেট: $BUCKET_NAME বাকেটটি সারসংক্ষেপ করার জন্য ফাইল আপলোড করতে ব্যবহৃত হবে। আপনার বাকেটের নাম সংরক্ষণ করতে নিম্নলিখিতভাবে এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন:
export BUCKET_NAME='Your Bucket Name'
  • দ্বিতীয় বাকেট: $BUCKET_NAME-summaries বাকেটটি সারসংক্ষেপ করা ফাইলটি সংরক্ষণ করতে ব্যবহৃত হবে।
  • আমরা বাকেটগুলো তৈরি করতে gsutil কমান্ড ব্যবহার করব:
  • gsutil হলো একটি পাইথন অ্যাপ্লিকেশন যা আপনাকে কমান্ড লাইন থেকে ক্লাউড স্টোরেজ অ্যাক্সেস করতে দেয়। আপনি gsutil ব্যবহার করে বিভিন্ন ধরণের বাকেট এবং অবজেক্ট ম্যানেজমেন্টের কাজ করতে পারেন।
  • mb মানে 'Make Bucket' (বালতি তৈরি করুন)।
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. এই পর্যায়ে, আমরা ফাংশনটি ডেপ্লয় করার জন্য প্রস্তুত। কিন্তু তার আগে, নিশ্চিত করে নিন যে ক্লাউড স্টোরেজ বাকেটের সার্ভিস অ্যাকাউন্টে পাব/সাব পাবলিশার রোলটি রয়েছে।
  2. Google Cloud Storage-এ যান এবং বাম দিকের প্যানেলে "Settings"-এ ক্লিক করুন।

8ce34eb05153abf2.png

  1. সেটিংস থেকে 'সার্ভিস অ্যাকাউন্ট'টি কপি করে লিখে রাখুন।
  2. গুগল ক্লাউড কনসোলের নেভিগেশন মেনু থেকে IAM এবং Admin খুলুন।

c5a7103e90689684.png

  1. পারমিশন ট্যাবে, গ্র্যান্ট অ্যাক্সেস-এ ক্লিক করুন এবং আপনার নোট করা সার্ভিস অ্যাকাউন্ট আইডিটি প্রবেশ করান, নিউ প্রিন্সিপালস বিভাগে রোল হিসেবে "পাব/সাব পাবলিশার" নির্বাচন করুন এবং সেভ-এ ক্লিক করুন।

11c2df774fa740a9.png

  1. এই সোর্সটি ক্লাউড ফাংশনসে ডেপ্লয় করুন। ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালান:
  2. নিশ্চিত করুন যে আপনি এই প্রজেক্টের summarization-gcs-cloudfunction ফোল্ডারে আছেন।
  3. নিম্নলিখিত কমান্ডটি চালান:
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. গুগল ক্লাউড কনসোলে, ক্লাউড ফাংশন- এ যান ::

এটি আমাদের সদ্য তৈরি করা vertex-ai-function ক্লাউড ফাংশনটিকে তার পাবলিক URL সহ তালিকাভুক্ত করবে। আমরা এই ফাংশনটি ব্যবহার করে একটি GCS ট্রিগার তৈরি করব।

৬. ফাংশনটি আহ্বান করুন

যখন $BUCKET_NAME বাকেটে একটি ফাইল আপলোড করা হয়, তখন GCS ট্রিগারটি ফাংশনটিকে কল করে। $BUCKET_NAME"-summaries বাকেটটিতে একই নামের সারসংক্ষেপ করা ফাইলটি অন্তর্ভুক্ত থাকে।

শুরু করার আগে, summarization-gcs-cloudfunction ফোল্ডার থেকে নমুনা story.md ফাইলটি আপনার লোকাল মেশিনে সেভ করুন।

  1. গুগল ক্লাউড কনসোলে, ক্লাউড স্টোরেজে যান।
  2. বাকেটের তালিকা থেকে আপনার $BUCKET_NAME বাকেটটি খুলুন।
  3. আপলোড ফাইলস-এ ক্লিক করুন এবং story.md ফাইলটি নির্বাচন করুন।

summarizeArticles ফাংশনটি সক্রিয় হয় এবং এটি ফাইলের বিষয়বস্তুর সারসংক্ষেপ করা শুরু করে।

  1. বাম দিকের নেভিগেশন প্যানে, Buckets-এ ক্লিক করুন।
  2. আপনার $BUCKET_NAME"-summaries বাকেটটি খুলুন।

story.md ফাইলটিতে ফাইলটির বিষয়বস্তুর একটি সারাংশ অন্তর্ভুক্ত রয়েছে।

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

এই পোস্টে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলো অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
  2. প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট-এ ক্লিক করুন।
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।
  4. আপনি যদি প্রজেক্টটি রাখতে এবং শুধুমাত্র কিছু রিসোর্স মুছে ফেলতে চান, তাহলে ক্লাউড স্টোরেজ কনসোলে যান, ‘Buckets’-এ ক্লিক করুন এবং তালিকা থেকে যে বাকেটগুলো মুছতে চান সেগুলো চেক করে ‘DELETE’-এ ক্লিক করুন।
  5. এছাড়াও আপনি ক্লাউড ফাংশন-এ গিয়ে, ফাংশনগুলির তালিকা থেকে যেটি মুছতে চান সেটি নির্বাচন করে ডিলিট (DELETE) বোতামে ক্লিক করে ক্লাউড ফাংশনটি মুছে ফেলতে পারেন।

৮. অভিনন্দন

অভিনন্দন! আপনি সফলভাবে আপনার ডেটার উপর টেক্সট সামারাইজেশন করার জন্য প্রোগ্রাম্যাটিকভাবে একটি Vertex AI টেক্সট জেনারেশন LLM ব্যবহার করেছেন। উপলব্ধ মডেলগুলো সম্পর্কে আরও জানতে Vertex AI LLM প্রোডাক্ট ডকুমেন্টেশন দেখুন।