এই কোডল্যাব সম্পর্কে
1. ভূমিকা
ফাইন-টিউনিং কেন গুরুত্বপূর্ণ
ফাউন্ডেশন মডেলগুলিকে সাধারণ উদ্দেশ্যে প্রশিক্ষিত করা হয় এবং কখনও কখনও আপনার পছন্দ মতো কাজগুলি সম্পাদন করে না। এটি হতে পারে কারণ আপনি মডেলটি যে কাজগুলি সম্পাদন করতে চান তা বিশেষায়িত কাজ যা শুধুমাত্র প্রম্পট ডিজাইন ব্যবহার করে একটি মডেল শেখানো কঠিন। এই ক্ষেত্রে, আপনি নির্দিষ্ট কাজের জন্য একটি মডেলের কর্মক্ষমতা উন্নত করতে মডেল টিউনিং ব্যবহার করতে পারেন। নির্দেশাবলী পর্যাপ্ত না হলে মডেল টিউনিং নির্দিষ্ট আউটপুট প্রয়োজনীয়তা মেনে চলতেও সাহায্য করতে পারে। বড় ল্যাঙ্গুয়েজ মডেল (এলএলএম) এর কাছে প্রচুর পরিমাণে তথ্য থাকতে পারে এবং অনেকগুলি কাজ সম্পাদন করতে পারে, তবে বিশেষ প্রশিক্ষণ দেওয়া হলেই তারা শ্রেষ্ঠত্ব অর্জন করে। ফাইন-টিউনিং একটি এলএলএমকে প্রশিক্ষণ দিতে পারে, যা আপনাকে আপনার নির্দিষ্ট প্রয়োজনের জন্য একটি প্রাক-প্রশিক্ষিত এলএলএম মানিয়ে নিতে দেয়।
এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি LLM মডেলের জন্য তত্ত্বাবধানে থাকা টিউনিং পদ্ধতি ব্যবহার করে ফাইন-টিউনিং করতে হয়।
তত্ত্বাবধানে থাকা টিউনিং একটি নতুন দক্ষতা শেখানোর মাধ্যমে একটি মডেলের কর্মক্ষমতা উন্নত করে৷ শতাধিক লেবেলযুক্ত উদাহরণ রয়েছে এমন ডেটা মডেলটিকে একটি পছন্দসই আচরণ বা কাজ অনুকরণ করতে শেখাতে ব্যবহৃত হয়। আমরা ইনপুট টেক্সট (প্রম্পট) এবং আউটপুট টেক্সট (প্রতিক্রিয়া) এর জন্য একটি লেবেলযুক্ত ডেটাসেট প্রদান করতে যাচ্ছি যাতে মডেলটিকে আমাদের নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রতিক্রিয়াগুলি কীভাবে কাস্টমাইজ করতে হয়।
মডেল কাস্টমাইজেশন সম্পর্কে আরও তথ্য এখানে উপলব্ধ।
আপনি কি নির্মাণ করবেন
কেস ব্যবহার করুন: সংবাদ নিবন্ধগুলির জন্য শিরোনাম তৈরি করুন
ধরা যাক আপনি সংবাদ নিবন্ধগুলির জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করতে চান৷ Vertex AI ব্যবহার করে, আপনি একটি LLM সূক্ষ্ম-টিউন করতে পারেন যা একটি নির্দিষ্ট শৈলীতে একটি উপযুক্ত সংক্ষিপ্ত শিরোনাম তৈরি করে এবং নিউজ চ্যানেলের নির্দেশিকা অনুযায়ী শিরোনামটি কাস্টমাইজ করে।
এই কোডল্যাবে, আপনি নিম্নলিখিতগুলি সম্পাদন করবেন:
-
BBC FULLTEXT DATA
ব্যবহার করুন (BigQuery পাবলিক ডেটাসেটbigquery-public-data.bbc_news.fulltext
দ্বারা উপলব্ধ করা হয়েছে)। - "
bbc-news-summary-tuned
" নামে একটি নতুন সূক্ষ্ম-টিউন করা মডেলে একটি LLM (text-bison@002
) সূক্ষ্ম সুর করুন এবং ফলাফলটিকে বেস মডেলের প্রতিক্রিয়ার সাথে তুলনা করুন৷ এই কোডল্যাবের জন্য একটি নমুনা JSONL ফাইল সংগ্রহস্থলে উপলব্ধ। আপনি আপনার ক্লাউড স্টোরেজ বালতিতে ফাইলটি আপলোড করতে পারেন এবং নিম্নলিখিত সূক্ষ্ম-টিউনিং পদক্ষেপগুলি সম্পাদন করতে পারেন: - আপনার ডেটা প্রস্তুত করুন: উদাহরণ কোডে ব্যবহৃত বিবিসি নিউজ ডেটাসেটের মতো সংবাদ নিবন্ধগুলির একটি ডেটাসেট এবং তাদের সংশ্লিষ্ট শিরোনাম দিয়ে শুরু করুন৷
- একটি প্রাক-প্রশিক্ষিত মডেল ফাইন-টিউন করুন: "
text-bison@002
" এর মতো একটি বেস মডেল বেছে নিন এবং পাইথনের জন্য Vertex AI SDK ব্যবহার করে আপনার নিউজ ডেটার সাথে এটিকে ফাইন-টিউন করুন৷ - ফলাফলগুলি মূল্যায়ন করুন: শিরোনাম প্রজন্মের মানের উন্নতি দেখতে বেস মডেলের সাথে আপনার সূক্ষ্ম-টিউনড মডেলের কর্মক্ষমতা তুলনা করুন।
- আপনার মডেল স্থাপন এবং ব্যবহার করুন: একটি API এন্ডপয়েন্টের মাধ্যমে আপনার সূক্ষ্ম সুর করা মডেলটি উপলব্ধ করুন এবং স্বয়ংক্রিয়ভাবে নতুন নিবন্ধগুলির জন্য শিরোনাম তৈরি করা শুরু করুন।
2. আপনি শুরু করার আগে
- Google ক্লাউড কনসোলে , প্রকল্প নির্বাচক পৃষ্ঠায়, একটি Google ক্লাউড প্রকল্প নির্বাচন করুন বা তৈরি করুন।
- আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে তা নিশ্চিত করুন৷ একটি প্রকল্পে বিলিং সক্ষম কিনা তা পরীক্ষা করতে শিখুন।
- Colab Notebook খুলুন এবং আপনার বর্তমান সক্রিয় Google ক্লাউড অ্যাকাউন্টের মতো একই অ্যাকাউন্টে লগইন করুন।
3. একটি বড় ভাষার মডেল ফাইন-টিউন
এই কোডল্যাবটি মডেলটিকে সূক্ষ্ম সুর করতে পাইথনের জন্য Vertex AI SDK ব্যবহার করে। আপনি অন্যান্য বিকল্পগুলিও ব্যবহার করে ফাইন-টিউনিং করতে পারেন — HTTP, CURL কমান্ড, জাভা SDK, কনসোল।
আপনি 5টি ধাপে কাস্টমাইজড প্রতিক্রিয়ার জন্য আপনার মডেলটি সূক্ষ্ম-টিউন এবং মূল্যায়ন করতে পারেন। আপনি সংগ্রহস্থল থেকে llm_fine_tuning_supervised.ipynb ফাইলে সম্পূর্ণ কোড উল্লেখ করতে পারেন।
4. ধাপ 1: নির্ভরতা ইনস্টল এবং আমদানি করুন
!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
5. ধাপ 2: প্রশিক্ষণের ডেটা প্রস্তুত এবং লোড করুন
আপনার বালতি দিয়ে YOUR_BUCKET প্রতিস্থাপন করুন এবং এতে নমুনা TRAIN.jsonl প্রশিক্ষণ ডেটা ফাইল আপলোড করুন। উপরে উল্লিখিত লিঙ্কে এই ব্যবহারের ক্ষেত্রে নমুনা ডেটা সরবরাহ করা হয়েছে।
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
এই পদক্ষেপের ফলে এটি হওয়া উচিত:
6. ধাপ 3: একটি বড় ভাষার মডেল ফাইন-টিউন করুন
আপনি এই সময়ে যেকোনো বড় ভাষার মডেল টিউন করতে পারেন (সহায়তা উপলব্ধতার উপর ভিত্তি করে)। যদিও এই স্নিপেটে, আমরা পূর্ববর্তী ধাপে প্রশিক্ষণের ডেটা লোড করা ডেটা ফ্রেমের সাথে পূর্বপ্রশিক্ষিত মডেল "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",
)
এই ধাপটি সম্পূর্ণ হতে কয়েক ঘন্টা সময় লাগবে। আপনি ফলাফলে পাইপলাইন কাজের লিঙ্ক ব্যবহার করে ফাইন-টিউনিংয়ের অগ্রগতি ট্র্যাক করতে পারেন।
7. ধাপ 4: নতুন ফাইন-টিউনড মডেলের সাথে ভবিষ্যদ্বাণী করুন
একবার সূক্ষ্ম টিউনিং কাজ সম্পূর্ণ হলে, আপনি আপনার নতুন মডেলের সাথে ভবিষ্যদ্বাণী করতে সক্ষম হবেন। আপনার নতুন টিউন করা মডেলের সাথে ভবিষ্যদ্বাণী করতে:
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)
আপনি নিম্নলিখিত ফলাফল দেখতে হবে:
যদিও উত্পন্ন উভয় শিরোনাম উপযুক্ত দেখায়, প্রথমটি (সূক্ষ্ম-টিউনড মডেলের সাথে তৈরি) প্রশ্নে ডেটাসেটে ব্যবহৃত শিরোনামের শৈলীর সাথে আরও বেশি মিল রয়েছে৷
সূক্ষ্ম সুর করা মডেল লোড করুন
একটি মডেল লোড করা সহজ হতে পারে যেটি আপনি ঠিক করেছেন। কিন্তু ধাপ 3 এ মনে রাখবেন, এটি নিজেই কোডের সুযোগে আহ্বান করা হয়েছে তাই এটি এখনও পরিবর্তনশীল tuned_model-এ টিউন করা মডেলটি ধারণ করে। কিন্তু আপনি যদি এমন একটি মডেলকে আহ্বান করতে চান যা অতীতে টিউন করা হয়েছিল?
এটি করার জন্য, আপনি Vertex AI মডেল রেজিস্ট্রি থেকে নিয়োজিত ফাইন টিউন করা মডেলের সম্পূর্ণ 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"))
8. ধাপ 5: নতুন সূক্ষ্ম-সুরিত মডেলের মূল্যায়ন করুন
উত্পন্ন প্রতিক্রিয়ার গুণমান এবং প্রাসঙ্গিকতা মূল্যায়ন করার জন্য মূল্যায়ন একটি গুরুত্বপূর্ণ দিক। এটি প্রদত্ত প্রম্পটের সাথে এর সুসংগততা, নির্ভুলতা এবং প্রান্তিককরণ নির্ধারণ করতে একটি জেনারেটিভ ভাষা মডেল থেকে আউটপুট পরীক্ষা করা জড়িত। মডেল মূল্যায়ন উন্নতির জন্য ক্ষেত্রগুলি সনাক্ত করতে, মডেলের কার্যকারিতা অপ্টিমাইজ করতে এবং উত্পন্ন পাঠ্যটি গুণমান এবং উপযোগিতার জন্য পছন্দসই মানগুলি পূরণ করে তা নিশ্চিত করতে সহায়তা করে। ডকুমেন্টেশনে এটি সম্পর্কে আরও পড়ুন। আপাতত, আমরা দেখব কিভাবে আমরা সূক্ষ্ম টিউন করা মডেলের কিছু মূল্যায়ন মেট্রিক্স পেতে পারি এবং বেস মডেলের সাথে তুলনা করতে পারি।
- মূল্যায়ন ডেটাসেট লোড করুন:
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 হল একটি রিকল-ভিত্তিক মেট্রিক যা একটি সারাংশ এবং একটি রেফারেন্স সারাংশের মধ্যে ওভারল্যাপ পরিমাপ করে। এটি দুটি সারাংশের মধ্যে দীর্ঘতম সাধারণ অনুবর্তন (এলসিএস) গ্রহণ করে এবং রেফারেন্স সারাংশের দৈর্ঘ্য দ্বারা ভাগ করে গণনা করা হয়।
প্রদত্ত এক্সপ্রেশনে rougeLSum
স্কোর হল 0.36600753600753694, যার মানে হল রেফারেন্স সারাংশের সাথে সারাংশের একটি 36.6% ওভারল্যাপ আছে।
আপনি যদি বেসলাইন মডেলের উপর মূল্যায়নের ধাপটি চালান, তাহলে আপনি লক্ষ্য করবেন যে সূক্ষ্ম সুর করা মডেলের জন্য সারাংশের স্কোর তুলনামূলকভাবে বেশি।
আপনি মূল্যায়নের ফলাফলগুলি ক্লাউড স্টোরেজ আউটপুট ডিরেক্টরিতে খুঁজে পেতে পারেন যা আপনি মূল্যায়ন কাজ তৈরি করার সময় নির্দিষ্ট করেছিলেন৷ ফাইলটির নাম evaluation_metrics.json
। টিউন করা মডেলের জন্য, আপনি Vertex AI মডেল রেজিস্ট্রি পৃষ্ঠায় Google ক্লাউড কনসোলে মূল্যায়নের ফলাফলও দেখতে পারেন।
9. গুরুত্বপূর্ণ বিবেচনা
- মডেল সমর্থন: সর্বদা সর্বশেষ সামঞ্জস্যের জন্য মডেল ডকুমেন্টেশন পরীক্ষা করুন।
- দ্রুত উন্নয়ন: এলএলএম-এর ক্ষেত্র দ্রুত অগ্রসর হয়। একটি নতুন, আরও শক্তিশালী মডেল সম্ভবত একটি পুরানো বেসের উপর নির্মিত একটি সূক্ষ্ম-টিউনড মডেলকে ছাড়িয়ে যেতে পারে। ভাল খবর হল যে ক্ষমতা উপলব্ধ হলে আপনি নতুন মডেলগুলিতে এই সূক্ষ্ম-টিউনিং কৌশলগুলি প্রয়োগ করতে পারেন।
- LoRA: LoRA হল LLM গুলিকে দক্ষতার সাথে সূক্ষ্ম সুর করার একটি কৌশল৷ এটি বিদ্যমান প্রাক-প্রশিক্ষিত মডেলের স্তরগুলিতে প্রশিক্ষণযোগ্য, নিম্ন-র্যাঙ্কের পচনশীল ম্যাট্রিক্স প্রবর্তন করে এটি করে। এখানে এটি সম্পর্কে আরও পড়ুন. একটি বিশাল LLM-এর সমস্ত প্যারামিটার আপডেট করার পরিবর্তে, LoRA ছোট ম্যাট্রিক্স শিখে যা মূল মডেলের ওজন ম্যাট্রিসের সাথে যোগ বা গুণ করা হয়। এটি ফাইন-টিউনিংয়ের সময় প্রবর্তিত অতিরিক্ত প্যারামিটারের সংখ্যা উল্লেখযোগ্যভাবে হ্রাস করে।
10. পরিষ্কার করুন
এই কোডল্যাবে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- Google ক্লাউড কনসোলে, সম্পদ পরিচালনা পৃষ্ঠাতে যান।
- প্রকল্প তালিকায়, আপনি যে প্রকল্পটি মুছতে চান সেটি নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন।
- ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন এবং তারপরে প্রোজেক্ট মুছে ফেলতে শাট ডাউন ক্লিক করুন।
- বিকল্পভাবে আপনি মডেল রেজিস্ট্রিতে যেতে পারেন, মডেল ডিপ্লোয় এবং টেস্ট ট্যাবে নেভিগেট করতে পারেন এবং এন্ডপয়েন্টটি আনডিপ্লোয় করতে পারেন এবং ডিপ্লোয়েড টিউন করা মডেল মুছে ফেলতে পারেন।
11. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে একটি LLM মডেল ঠিক করতে Vertex AI ব্যবহার করেছেন। ফাইন-টিউনিং একটি শক্তিশালী কৌশল যা আপনাকে আপনার ডোমেন এবং কাজগুলিতে LLM কাস্টমাইজ করতে দেয়। Vertex AI-এর সাথে, আপনার কাছে আপনার মডেলগুলিকে দক্ষতার সাথে এবং কার্যকরীভাবে সূক্ষ্ম-টিউন করার জন্য প্রয়োজনীয় সরঞ্জাম এবং সংস্থান রয়েছে৷
GitHub সংগ্রহস্থলগুলি অন্বেষণ করুন এবং সূক্ষ্ম-টিউনিং এবং মূল্যায়নের অভিজ্ঞতার জন্য নমুনা কোডের সাথে পরীক্ষা করুন। লক্ষ্যযুক্ত বিপণন অনুলিপি তৈরি করা থেকে জটিল নথির সংক্ষিপ্তকরণ বা সাংস্কৃতিক সূক্ষ্মতার সাথে ভাষা অনুবাদ করা পর্যন্ত কীভাবে সূক্ষ্ম-টিউন করা এলএলএমগুলি আপনার নির্দিষ্ট চাহিদাগুলি পূরণ করতে পারে তা বিবেচনা করুন। Vertex AI দ্বারা প্রদত্ত সরঞ্জাম এবং পরিষেবাগুলির বিস্তৃত স্যুট ব্যবহার করুন সহজে আপনার সূক্ষ্ম-টিউন করা মডেলগুলি তৈরি করতে, প্রশিক্ষণ দিতে, মূল্যায়ন করতে এবং স্থাপন করতে৷