১. ভূমিকা
কেন সূক্ষ্ম সমন্বয় গুরুত্বপূর্ণ
ফাউন্ডেশন মডেলগুলো সাধারণ কাজের জন্য প্রশিক্ষিত হয় এবং কখনও কখনও আপনার প্রত্যাশা অনুযায়ী কাজগুলো ভালোভাবে করতে পারে না। এর কারণ হতে পারে যে, আপনি মডেলটিকে দিয়ে যে কাজগুলো করাতে চান সেগুলো বিশেষায়িত কাজ, যা শুধুমাত্র প্রম্পট ডিজাইন ব্যবহার করে একটি মডেলকে শেখানো কঠিন। এই ক্ষেত্রে, আপনি নির্দিষ্ট কাজের জন্য একটি মডেলের পারফরম্যান্স উন্নত করতে মডেল টিউনিং ব্যবহার করতে পারেন। যখন নির্দেশনা যথেষ্ট হয় না, তখন মডেল টিউনিং নির্দিষ্ট আউটপুটের প্রয়োজনীয়তা পূরণেও সাহায্য করতে পারে। লার্জ ল্যাঙ্গুয়েজ মডেল (LLM)-এ বিপুল পরিমাণ তথ্য থাকতে পারে এবং এটি অনেক কাজ করতে পারে, কিন্তু বিশেষায়িত প্রশিক্ষণ পেলেই কেবল এটি সেরা পারফর্ম করে। ফাইন-টিউনিং একটি LLM-কে প্রশিক্ষণ দিতে পারে, যা আপনাকে আপনার নির্দিষ্ট প্রয়োজনের জন্য একটি প্রি-ট্রেইনড LLM-কে মানিয়ে নিতে সাহায্য করে।
এই কোডল্যাবে, আপনি শিখবেন কীভাবে সুপারভাইজড টিউনিং পদ্ধতি ব্যবহার করে একটি LLM মডেলের ফাইন-টিউনিং করতে হয়।
সুপারভাইজড টিউনিং একটি নতুন দক্ষতা শেখানোর মাধ্যমে মডেলের কর্মক্ষমতা উন্নত করে। মডেলকে একটি কাঙ্ক্ষিত আচরণ বা কাজ অনুকরণ করতে শেখানোর জন্য শত শত লেবেলযুক্ত উদাহরণ সম্বলিত ডেটা ব্যবহার করা হয়। আমাদের নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রতিক্রিয়াগুলো কীভাবে কাস্টমাইজ করতে হয়, তা মডেলকে শেখানোর জন্য আমরা ইনপুট টেক্সট (প্রম্পট) এবং আউটপুট টেক্সট (রেসপন্স)-এর জন্য একটি লেবেলযুক্ত ডেটাসেট সরবরাহ করব।
মডেল কাস্টমাইজেশন সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে।
আপনি যা তৈরি করবেন
ব্যবহারের ক্ষেত্র: সংবাদ নিবন্ধের জন্য শিরোনাম তৈরি করা।
ধরা যাক, আপনি সংবাদ নিবন্ধের জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করতে চান। Vertex AI ব্যবহার করে, আপনি এমন একটি LLM সূক্ষ্মভাবে সমন্বয় করতে পারেন যা একটি নির্দিষ্ট শৈলীতে উপযুক্ত সংক্ষিপ্ত শিরোনাম তৈরি করে এবং সংবাদ চ্যানেলের নির্দেশিকা অনুযায়ী শিরোনামটি কাস্টমাইজ করে।
এই কোডল্যাবে, আপনি নিম্নলিখিত কাজগুলো করবেন:
-
BBC FULLTEXT DATAব্যবহার করুন (যা BigQuery পাবলিক ডেটাসেটbigquery-public-data.bbc_news.fulltextথেকে পাওয়া যায়)। - একটি LLM (
text-bison@002)-কে "bbc-news-summary-tuned" নামক একটি নতুন ফাইন-টিউনড মডেলে ফাইন-টিউন করুন এবং এর ফলাফলকে বেস মডেলের রেসপন্সের সাথে তুলনা করুন। এই কোডল্যাবের জন্য একটি নমুনা JSONL ফাইল রিপোজিটরিতে উপলব্ধ আছে। আপনি ফাইলটি আপনার ক্লাউড স্টোরেজ বাকেটে আপলোড করে নিম্নলিখিত ফাইন-টিউনিং ধাপগুলো অনুসরণ করতে পারেন: - আপনার ডেটা প্রস্তুত করুন: সংবাদ নিবন্ধ এবং তাদের সংশ্লিষ্ট শিরোনামের একটি ডেটাসেট দিয়ে শুরু করুন, যেমন উদাহরণ কোডে ব্যবহৃত বিবিসি নিউজ ডেটাসেট।
- একটি প্রি-ট্রেইনড মডেল ফাইন-টিউন করুন: "
text-bison@002"-এর মতো একটি বেস মডেল বেছে নিন এবং Python-এর জন্য Vertex AI SDK ব্যবহার করে আপনার নিউজ ডেটা দিয়ে এটিকে ফাইন-টিউন করুন। - ফলাফল মূল্যায়ন করুন: শিরোনাম তৈরির মানের উন্নতি দেখতে আপনার পরিমার্জিত মডেলের পারফরম্যান্সকে বেস মডেলের সাথে তুলনা করুন।
- আপনার মডেলটি স্থাপন ও ব্যবহার করুন: আপনার পরিমার্জিত মডেলটি একটি এপিআই এন্ডপয়েন্টের মাধ্যমে উপলব্ধ করুন এবং নতুন নিবন্ধের জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করা শুরু করুন।
২. শুরু করার আগে
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জানুন।
- Colab Notebook খুলুন এবং আপনার বর্তমান সক্রিয় Google Cloud অ্যাকাউন্টটিতে লগইন করুন।
৩. একটি বৃহৎ ভাষা মডেলকে সূক্ষ্মভাবে সমন্বয় করুন
এই কোডল্যাবটি মডেলটিকে ফাইন-টিউন করার জন্য পাইথনের জন্য ভার্টেক্স এআই এসডিকে (Vertex AI SDK for Python) ব্যবহার করে। আপনি অন্যান্য বিকল্পগুলো ব্যবহার করেও ফাইন-টিউনিং করতে পারেন — যেমন এইচটিটিপি (HTTP), সিইউআরএল (CURL) কমান্ড, জাভা এসডিকে (Java SDK), কনসোল (Console)।
আপনি ৫টি ধাপে কাস্টমাইজড প্রতিক্রিয়ার জন্য আপনার মডেলকে সূক্ষ্মভাবে সমন্বয় ও মূল্যায়ন করতে পারেন। আপনি রিপোজিটরি থেকে llm_fine_tuning_supervised.ipynb ফাইলটিতে সম্পূর্ণ কোডটি দেখতে পারেন।
৪. ধাপ ১: নির্ভরতাগুলি ইনস্টল এবং ইম্পোর্ট করুন
!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components
রিপো- তে থাকা .ipynb ফাইলে দেখানো বাকি ধাপগুলো অনুসরণ করুন। PROJECT_ID এবং BUCKET_NAME-এর জায়গায় আপনার ক্রেডেনশিয়াল বসাতে ভুলবেন না।
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import warnings
warnings.filterwarnings('ignore')
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
import kfp
import sys
import uuid
import json
import pandas as pd
from google.auth import default
from datasets import load_dataset
from google.cloud import aiplatform
from vertexai.preview.language_models import TextGenerationModel, EvaluationTextSummarizationSpec
৫. ধাপ ২: প্রশিক্ষণ ডেটা প্রস্তুত ও লোড করুন
YOUR_BUCKET-এর জায়গায় আপনার বাকেটটি বসান এবং নমুনা TRAIN.jsonl প্রশিক্ষণ ডেটা ফাইলটি এতে আপলোড করুন। উপরে উল্লিখিত লিঙ্কে এই ব্যবহারের জন্য নমুনা ডেটা সরবরাহ করা হয়েছে।
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
এই ধাপটির ফলে এইরকম ফলাফল হওয়া উচিত:

৬. ধাপ ৩: একটি বৃহৎ ভাষা মডেলকে সূক্ষ্মভাবে সমন্বয় করুন
এই পর্যায়ে আপনি যেকোনো বড় ল্যাঙ্গুয়েজ মডেল টিউন করতে পারেন (সাপোর্টের প্রাপ্যতা সাপেক্ষে)। তবে এই কোড স্নিপেটে, আমরা আগের ধাপে লোড করা ট্রেনিং ডেটাযুক্ত ডেটা ফ্রেমটি দিয়ে প্রি-ট্রেইনড মডেল "text-bison@002" টিউন করছি।
model_display_name = 'bbc-finetuned-model' # @param {type:"string"}
tuned_model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model.tune_model(
training_data=df,
train_steps=100,
tuning_job_location="europe-west4",
tuned_model_location="europe-west4",
)
এই ধাপটি সম্পন্ন হতে কয়েক ঘণ্টা সময় লাগবে। ফলাফলে থাকা পাইপলাইন জব লিঙ্কটি ব্যবহার করে আপনি সূক্ষ্ম সমন্বয়ের অগ্রগতি ট্র্যাক করতে পারবেন।
৭. ধাপ ৪: নতুন পরিমার্জিত মডেল দিয়ে পূর্বাভাস দিন
সূক্ষ্ম সমন্বয়ের কাজটি সম্পন্ন হয়ে গেলে, আপনি আপনার নতুন মডেল দিয়ে পূর্বাভাস দিতে পারবেন। আপনার নতুন সমন্বয় করা মডেল দিয়ে পূর্বাভাস দিতে:
response = tuned_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
আপনি নিম্নলিখিত ফলাফলটি দেখতে পাবেন:

তুলনার জন্য বেস মডেল ( text-bison@002 ) দিয়ে প্রেডিক্ট করতে, নিম্নলিখিত কমান্ডগুলো চালান:
base_model = TextGenerationModel.from_pretrained("text-bison@002")
response = base_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
আপনি নিম্নলিখিত ফলাফলটি দেখতে পাবেন:

যদিও তৈরি করা উভয় শিরোনামই যথাযথ বলে মনে হচ্ছে, প্রথমটি (সূক্ষ্ম-সমন্বিত মডেল দ্বারা তৈরি) আলোচ্য ডেটাসেটে ব্যবহৃত শিরোনামের শৈলীর সাথে অধিক সামঞ্জস্যপূর্ণ।
সূক্ষ্মভাবে টিউন করা মডেলটি লোড করুন
এইমাত্র ফাইন-টিউন করা একটি মডেল লোড করা সহজ হতে পারে। কিন্তু মনে রাখবেন, ধাপ ৩-এ এটিকে কোডের নিজস্ব স্কোপের মধ্যেই কল করা হয়, তাই এটি tuned_model ভেরিয়েবলে টিউন করা মডেলটিকেই ধরে রাখে। কিন্তু যদি আপনি অতীতে টিউন করা কোনো মডেল কল করতে চান, তাহলে কী হবে?
এটি করার জন্য, আপনি Vertex AI Model Registry থেকে ডেপ্লয় করা ফাইন-টিউনড মডেলের সম্পূর্ণ ENDPOINT URL ব্যবহার করে LLM-এর get_tuned_model() মেথডটি কল করতে পারেন। উল্লেখ্য যে, এক্ষেত্রে আপনি তাদের নিজ নিজ আইডির পরিবর্তে PROJECT_NUMBER এবং MODEL_NUMBER প্রবেশ করাচ্ছেন।
tuned_model_1 = TextGenerationModel.get_tuned_model("projects/<<PROJECT_NUMBER>>/locations/europe-west4/models/<<MODEL_NUMBER>>")
print(tuned_model_1.predict("YOUR_PROMPT"))
৮. ধাপ ৫: নতুন পরিমার্জিত মডেলটি মূল্যায়ন করুন
উৎপাদিত প্রতিক্রিয়ার গুণমান এবং প্রাসঙ্গিকতা যাচাই করার জন্য মূল্যায়ন একটি অত্যন্ত গুরুত্বপূর্ণ দিক। এর মধ্যে একটি জেনারেটিভ ল্যাঙ্গুয়েজ মডেলের আউটপুট পরীক্ষা করে তার সঙ্গতি, নির্ভুলতা এবং প্রদত্ত প্রম্পটের সাথে সামঞ্জস্যতা নির্ধারণ করা অন্তর্ভুক্ত। মডেল মূল্যায়ন উন্নতির ক্ষেত্রগুলো চিহ্নিত করতে, মডেলের কর্মক্ষমতা অপ্টিমাইজ করতে এবং উৎপাদিত টেক্সটটি গুণমান ও উপযোগিতার কাঙ্ক্ষিত মান পূরণ করছে কিনা তা নিশ্চিত করতে সাহায্য করে। ডকুমেন্টেশনে এ সম্পর্কে আরও পড়ুন। আপাতত, আমরা দেখব কীভাবে ফাইন-টিউনড মডেলের কিছু মূল্যায়ন মেট্রিকস পাওয়া যায় এবং সেটিকে বেস মডেলের সাথে তুলনা করা যায়।
- EVALUATION ডেটাসেট লোড করুন :
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
- ফাইন-টিউনড মডেলটিতে একটি টেক্সট সামারাইজেশন টাস্কের জন্য ইভ্যালুয়েশন স্পেসিফিকেশন নির্ধারণ করুন।
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
এই ধাপটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে। আপনি ফলাফলে থাকা পাইপলাইন জব লিঙ্কটি ব্যবহার করে এর অগ্রগতি ট্র্যাক করতে পারবেন। সম্পন্ন হওয়ার পর, আপনি নিম্নলিখিত মূল্যায়ন ফলাফল দেখতে পাবেন:

মূল্যায়ন ফলাফলের rougeLSum মেট্রিকটি সামারিটির জন্য ROUGE-L স্কোর নির্দিষ্ট করে। ROUGE-L হলো একটি রিকল-ভিত্তিক মেট্রিক যা একটি সামারি এবং একটি রেফারেন্স সামারির মধ্যেকার ওভারল্যাপ পরিমাপ করে। দুটি সামারির মধ্যে দীর্ঘতম সাধারণ সাবসিকোয়েন্স (LCS)-কে রেফারেন্স সামারির দৈর্ঘ্য দিয়ে ভাগ করে এটি গণনা করা হয়।
প্রদত্ত এক্সপ্রেশনটিতে rougeLSum স্কোর হলো 0.36600753600753694, যার অর্থ হলো, এই সামারিটির সাথে রেফারেন্স সামারিটির ৩৬.৬% ওভারল্যাপ রয়েছে।
আপনি যদি বেসলাইন মডেলের উপর মূল্যায়ন ধাপটি চালান, তাহলে লক্ষ্য করবেন যে ফাইন-টিউনড মডেলটির সামারি স্কোর তুলনামূলকভাবে বেশি।
ইভ্যালুয়েশন জব তৈরি করার সময় আপনার নির্দিষ্ট করা ক্লাউড স্টোরেজ আউটপুট ডিরেক্টরিতে আপনি ইভ্যালুয়েশনের ফলাফল খুঁজে পাবেন। ফাইলটির নাম evaluation_metrics.json । টিউন করা মডেলগুলোর জন্য, আপনি গুগল ক্লাউড কনসোলের Vertex AI Model Registry পৃষ্ঠাতেও ইভ্যালুয়েশনের ফলাফল দেখতে পারেন।
৯. গুরুত্বপূর্ণ বিবেচ্য বিষয়সমূহ
- মডেল সমর্থন: সর্বশেষ সামঞ্জস্যতা জানতে সর্বদা মডেলের ডকুমেন্টেশন দেখুন।
- দ্রুত উন্নয়ন: এলএলএম-এর ক্ষেত্রটি দ্রুত অগ্রসর হচ্ছে। একটি নতুন, আরও শক্তিশালী মডেল পুরোনো ভিত্তির ওপর নির্মিত একটি পরিমার্জিত মডেলকে সম্ভাব্যভাবে ছাড়িয়ে যেতে পারে। সুখবরটি হলো, যখনই এই সক্ষমতা উপলব্ধ হবে, আপনি নতুন মডেলগুলিতে এই পরিমার্জিত কৌশলগুলি প্রয়োগ করতে পারবেন।
- LoRA: LoRA হলো LLM-কে দক্ষতার সাথে ফাইন-টিউনিং করার একটি কৌশল। এটি বিদ্যমান প্রি-ট্রেইনড মডেলের লেয়ারগুলোতে ট্রেইনযোগ্য, লো-র্যাঙ্ক ডিকম্পোজিশন ম্যাট্রিক্স যুক্ত করার মাধ্যমে এই কাজটি করে থাকে। এ সম্পর্কে আরও জানতে এখানে পড়ুন। একটি বিশাল LLM-এর সমস্ত প্যারামিটার আপডেট করার পরিবর্তে, LoRA ছোট ছোট ম্যাট্রিক্স শেখে যা মূল মডেলের ওয়েট ম্যাট্রিক্সের সাথে যোগ বা গুণ করা হয়। এটি ফাইন-টিউনিংয়ের সময় যুক্ত হওয়া অতিরিক্ত প্যারামিটারের সংখ্যা উল্লেখযোগ্যভাবে কমিয়ে দেয়।
১০. পরিষ্কার করুন
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলি অনুসরণ করুন:
- গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
- প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট বোতামে ক্লিক করুন।
- ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।
- বিকল্পভাবে আপনি মডেল রেজিস্ট্রি- তে গিয়ে, মডেল ডিপ্লয় এবং টেস্ট ট্যাবে নেভিগেট করে এন্ডপয়েন্টটি আনডিপ্লয় করতে এবং ডিপ্লয় করা টিউনড মডেলটি ডিলিট করে দিতে পারেন।
১১. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে ভার্টেক্স এআই ব্যবহার করে একটি এলএলএম মডেল ফাইন-টিউন করেছেন। ফাইন-টিউনিং একটি শক্তিশালী কৌশল যা আপনাকে আপনার ডোমেইন এবং কাজ অনুযায়ী এলএলএম মডেলকে কাস্টমাইজ করার সুযোগ দেয়। ভার্টেক্স এআই-এর মাধ্যমে, আপনার মডেলগুলোকে দক্ষতার সাথে এবং কার্যকরভাবে ফাইন-টিউন করার জন্য প্রয়োজনীয় টুলস এবং রিসোর্স আপনার কাছে রয়েছে।
ফাইন-টিউনিং এবং ইভ্যালুয়েশনের অভিজ্ঞতা সরাসরি পেতে গিটহাব রিপোজিটরিগুলো ঘুরে দেখুন এবং স্যাম্পল কোড নিয়ে পরীক্ষা করুন। লক্ষ্যভিত্তিক মার্কেটিং কপি তৈরি করা থেকে শুরু করে জটিল ডকুমেন্টের সারসংক্ষেপ করা বা সাংস্কৃতিক সূক্ষ্মতাযুক্ত ভাষা অনুবাদ করার মতো আপনার নির্দিষ্ট চাহিদাগুলো ফাইন-টিউনড এলএলএম কীভাবে পূরণ করতে পারে, তা বিবেচনা করুন। আপনার ফাইন-টিউনড মডেলগুলো সহজে তৈরি, প্রশিক্ষণ, মূল্যায়ন এবং ডেপ্লয় করতে ভার্টেক্স এআই- এর দেওয়া টুলস ও পরিষেবাগুলোর ব্যাপক সম্ভার ব্যবহার করুন।