ফাইন-টিউনিং বড় ভাষার মডেল: ভার্টেক্স এআই কীভাবে এলএলএমগুলিকে পরবর্তী স্তরে নিয়ে যায়

1. ভূমিকা

ফাইন-টিউনিং কেন গুরুত্বপূর্ণ

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

এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি LLM মডেলের জন্য তত্ত্বাবধানে থাকা টিউনিং পদ্ধতি ব্যবহার করে ফাইন-টিউনিং করতে হয়।

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

মডেল কাস্টমাইজেশন সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে।

তুমি কী তৈরি করবে

ব্যবহারের ধরণ: সংবাদ নিবন্ধের জন্য শিরোনাম তৈরি করুন

ধরা যাক আপনি সংবাদ নিবন্ধের জন্য স্বয়ংক্রিয়ভাবে শিরোনাম তৈরি করতে চান। Vertex AI ব্যবহার করে, আপনি একটি LLM সূক্ষ্ম-টিউন করতে পারেন যা একটি নির্দিষ্ট শৈলীতে একটি উপযুক্ত সংক্ষিপ্ত শিরোনাম তৈরি করে এবং সংবাদ চ্যানেলের নির্দেশিকা অনুসারে শিরোনামটি কাস্টমাইজ করে।

এই কোডল্যাবে, আপনি নিম্নলিখিত কাজগুলি সম্পাদন করবেন:

  • BBC FULLTEXT DATA ব্যবহার করুন (BigQuery Public Dataset bigquery-public-data.bbc_news.fulltext দ্বারা উপলব্ধ)।
  • " bbc-news-summary-tuned " নামক একটি নতুন ফাইন-টিউন করা মডেলের সাথে একটি LLM ( text-bison@002 ) সূক্ষ্ম-টিউন করুন এবং ফলাফলটি বেস মডেলের প্রতিক্রিয়ার সাথে তুলনা করুন। এই কোডল্যাবের জন্য একটি নমুনা JSONL ফাইল রিপোজিটরিতে উপলব্ধ। আপনি আপনার ক্লাউড স্টোরেজ বাকেটে ফাইলটি আপলোড করতে পারেন এবং নিম্নলিখিত ফাইন-টিউনিং পদক্ষেপগুলি সম্পাদন করতে পারেন:
  • আপনার ডেটা প্রস্তুত করুন: সংবাদ নিবন্ধ এবং তাদের সংশ্লিষ্ট শিরোনামের একটি ডেটাসেট দিয়ে শুরু করুন, যেমন উদাহরণ কোডে ব্যবহৃত বিবিসি নিউজ ডেটাসেট।
  • একটি পূর্ব-প্রশিক্ষিত মডেলকে সূক্ষ্ম-টিউন করুন: " text-bison@002 " এর মতো একটি বেস মডেল চয়ন করুন এবং পাইথনের জন্য Vertex AI SDK ব্যবহার করে আপনার সংবাদ ডেটা দিয়ে এটিকে সূক্ষ্ম-টিউন করুন।
  • ফলাফল মূল্যায়ন করুন: শিরোনাম তৈরির মানের উন্নতি দেখতে আপনার সূক্ষ্মভাবে সুরক্ষিত মডেলের কর্মক্ষমতা বেস মডেলের সাথে তুলনা করুন।
  • আপনার মডেল স্থাপন করুন এবং ব্যবহার করুন: আপনার সূক্ষ্ম-সুরযুক্ত মডেলটিকে একটি API এন্ডপয়েন্টের মাধ্যমে উপলব্ধ করুন এবং স্বয়ংক্রিয়ভাবে নতুন নিবন্ধগুলির জন্য শিরোনাম তৈরি করা শুরু করুন।

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

  1. গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার গুগল ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। কোনও প্রোজেক্টে বিলিং সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন তা শিখুন।
  3. Colab Notebook খুলুন এবং আপনার বর্তমান সক্রিয় Google Cloud অ্যাকাউন্টের মতো একই অ্যাকাউন্টে লগইন করুন।

৩. একটি বৃহৎ ভাষার মডেলকে উন্নত করুন

এই কোডল্যাবটি মডেলটিকে সূক্ষ্মভাবে সুরক্ষিত করার জন্য পাইথনের জন্য Vertex AI SDK ব্যবহার করে। আপনি অন্যান্য বিকল্পগুলি ব্যবহার করেও সূক্ষ্মভাবে সুরক্ষিত করতে পারেন — 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)

এই পদক্ষেপের ফলাফল এই হওয়া উচিত:

17274866af36a47c.png সম্পর্কে

৬. ধাপ ৩: একটি বৃহৎ ভাষার মডেলকে উন্নত করুন

এই মুহূর্তে আপনি যেকোনো বৃহৎ ভাষার মডেল টিউন করতে পারেন (সহায়তার প্রাপ্যতার উপর ভিত্তি করে)। তবে এই স্নিপেটে, আমরা পূর্ব-প্রশিক্ষিত মডেল "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)

আপনার নিম্নলিখিত ফলাফলটি দেখা উচিত:

67061c36b7ba39b7.png - [অনলাইন].

তুলনার জন্য বেস মডেল ( 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)

আপনার নিম্নলিখিত ফলাফলটি দেখা উচিত:

22ec58e4261405d6.png সম্পর্কে

যদিও তৈরি করা দুটি শিরোনামই উপযুক্ত বলে মনে হচ্ছে, প্রথমটি (সূক্ষ্মভাবে সুরক্ষিত মডেল ব্যবহার করে তৈরি করা হয়েছে) প্রশ্নবিদ্ধ ডেটাসেটে ব্যবহৃত শিরোনামের স্টাইলের সাথে আরও বেশি সামঞ্জস্যপূর্ণ।

সূক্ষ্ম সুরযুক্ত মডেলটি লোড করুন

আপনার দ্বারা সূক্ষ্মভাবে সুরক্ষিত মডেলটি লোড করা সহজ হতে পারে। কিন্তু মনে রাখবেন, ধাপ ৩-এ এটি কোডের স্কোপেই ইনভোক করা হয়েছে তাই এটি এখনও 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"))

৮. ধাপ ৫: নতুন সূক্ষ্ম-সুরযুক্ত মডেলটি মূল্যায়ন করুন

মূল্যায়ন হল উৎপন্ন প্রতিক্রিয়ার গুণমান এবং প্রাসঙ্গিকতা মূল্যায়নের একটি গুরুত্বপূর্ণ দিক। এর মধ্যে একটি উৎপাদক ভাষা মডেল থেকে আউটপুট পরীক্ষা করা জড়িত যাতে প্রদত্ত প্রম্পটের সাথে এর সামঞ্জস্য, নির্ভুলতা এবং সারিবদ্ধতা নির্ধারণ করা যায়। মডেল মূল্যায়ন উন্নতির জন্য ক্ষেত্রগুলি চিহ্নিত করতে, মডেলের কর্মক্ষমতা অপ্টিমাইজ করতে এবং নিশ্চিত করতে সাহায্য করে যে উৎপন্ন পাঠ্য গুণমান এবং উপযোগিতার জন্য কাঙ্ক্ষিত মান পূরণ করে। ডকুমেন্টেশনে এটি সম্পর্কে আরও পড়ুন। আপাতত, আমরা দেখব কিভাবে আমরা সূক্ষ্ম সুরযুক্ত মডেলের উপর কিছু মূল্যায়ন মেট্রিক্স পেতে পারি এবং বেস মডেলের সাথে তুলনা করতে পারি।

  1. EVALUATION ডেটাসেট লোড করুন:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
  1. সূক্ষ্ম-সুরযুক্ত মডেলে একটি পাঠ্য সারসংক্ষেপ কাজের জন্য মূল্যায়ন স্পেসিফিকেশন সংজ্ঞায়িত করুন।
task_spec = EvaluationTextSummarizationSpec(
 task_name = "summarization",
 ground_truth_data=df
)

এই ধাপটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে। ফলাফলে পাইপলাইন কাজের লিঙ্ক ব্যবহার করে আপনি অগ্রগতি ট্র্যাক করতে পারেন। সম্পন্ন হওয়ার পরে, আপনি নিম্নলিখিত মূল্যায়ন ফলাফল দেখতে পাবেন:

387843d6c970e02.png সম্পর্কে

মূল্যায়নের ফলাফলে rougeLSum মেট্রিক সারাংশের জন্য ROUGE-L স্কোর নির্দিষ্ট করে। ROUGE-L হল একটি প্রত্যাহার-ভিত্তিক মেট্রিক যা একটি সারাংশ এবং একটি রেফারেন্স সারাংশের মধ্যে ওভারল্যাপ পরিমাপ করে। এটি দুটি সারাংশের মধ্যে দীর্ঘতম সাধারণ পরবর্তী (LCS) গ্রহণ করে এবং রেফারেন্স সারাংশের দৈর্ঘ্য দিয়ে ভাগ করে গণনা করা হয়।

প্রদত্ত এক্সপ্রেশনে rougeLSum স্কোর হল 0.36600753600753694, যার অর্থ হল সারাংশটি রেফারেন্স সারাংশের সাথে 36.6% ওভারল্যাপ করে।

যদি আপনি বেসলাইন মডেলের উপর মূল্যায়ন ধাপটি চালান, তাহলে আপনি লক্ষ্য করবেন যে সূক্ষ্ম-সুরযুক্ত মডেলের জন্য সারাংশ স্কোর তুলনামূলকভাবে বেশি।

মূল্যায়ন কাজ তৈরি করার সময় আপনি যে ক্লাউড স্টোরেজ আউটপুট ডিরেক্টরিটি নির্দিষ্ট করেছিলেন তাতে মূল্যায়নের ফলাফলগুলি খুঁজে পেতে পারেন। ফাইলটির নাম evaluation_metrics.json । টিউন করা মডেলগুলির জন্য, আপনি Vertex AI মডেল রেজিস্ট্রি পৃষ্ঠায় Google Cloud কনসোলেও মূল্যায়নের ফলাফল দেখতে পারেন।

৯. গুরুত্বপূর্ণ বিবেচ্য বিষয়

  • মডেল সাপোর্ট: সর্বশেষ সামঞ্জস্যের জন্য সর্বদা মডেল ডকুমেন্টেশন পরীক্ষা করুন।
  • দ্রুত উন্নয়ন: এলএলএম-এর ক্ষেত্র দ্রুত এগিয়ে যাচ্ছে। একটি নতুন, আরও শক্তিশালী মডেল সম্ভাব্যভাবে একটি পুরানো ভিত্তির উপর নির্মিত সূক্ষ্ম-সুরক্ষিত মডেলকে ছাড়িয়ে যেতে পারে। ভালো খবর হল যে যখন ক্ষমতা উপলব্ধ হবে তখন আপনি এই সূক্ষ্ম-সুরক্ষিত কৌশলগুলি নতুন মডেলগুলিতে প্রয়োগ করতে পারবেন।
  • LoRA: LoRA হল LLM-গুলিকে দক্ষতার সাথে সূক্ষ্ম-টিউন করার একটি কৌশল। এটি বিদ্যমান প্রাক-প্রশিক্ষিত মডেলের স্তরগুলিতে প্রশিক্ষিত, নিম্ন-র্যাঙ্কের পচন ম্যাট্রিক্স প্রবর্তন করে এটি করে। এটি সম্পর্কে আরও পড়ুন এখানে । একটি বিশাল LLM-এর সমস্ত পরামিতি আপডেট করার পরিবর্তে, LoRA ছোট ম্যাট্রিক্স শিখে যা মূল মডেলের ওজন ম্যাট্রিক্সের সাথে যোগ করা হয় বা গুণ করা হয়। এটি ফাইন-টিউনিংয়ের সময় প্রবর্তিত অতিরিক্ত প্যারামিটারের সংখ্যা উল্লেখযোগ্যভাবে হ্রাস করে।

১০. পরিষ্কার করা

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

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা পৃষ্ঠায় যান।
  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন।
  3. ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন, এবং তারপর প্রজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।
  4. বিকল্পভাবে আপনি Model Registry এ যেতে পারেন, model deploy and test ট্যাবে নেভিগেট করতে পারেন এবং endpoint টিউন করা মডেলটি মুছে ফেলতে পারেন।

১১. অভিনন্দন

অভিনন্দন! আপনি একটি LLM মডেলকে সূক্ষ্মভাবে সুরক্ষিত করার জন্য Vertex AI ব্যবহার করে সফলভাবে সফল হয়েছেন। Fine-tuning হল একটি শক্তিশালী কৌশল যা আপনাকে আপনার ডোমেন এবং কাজগুলির জন্য LLM গুলিকে কাস্টমাইজ করতে দেয়। Vertex AI এর সাহায্যে, আপনার মডেলগুলিকে দক্ষতার সাথে এবং কার্যকরভাবে সুরক্ষিত করার জন্য আপনার প্রয়োজনীয় সরঞ্জাম এবং সংস্থান রয়েছে।

GitHub রিপোজিটরিগুলি অন্বেষণ করুন এবং নমুনা কোড নিয়ে পরীক্ষা-নিরীক্ষা করুন যাতে আপনি সরাসরি সূক্ষ্ম-টিউনিং এবং মূল্যায়নের অভিজ্ঞতা লাভ করতে পারেন। লক্ষ্যবস্তুযুক্ত মার্কেটিং কপি তৈরি করা থেকে শুরু করে জটিল নথির সারসংক্ষেপ তৈরি করা বা সাংস্কৃতিক সূক্ষ্মতার সাথে ভাষা অনুবাদ করা পর্যন্ত, সূক্ষ্ম-টিউন করা LLMগুলি কীভাবে আপনার নির্দিষ্ট চাহিদা পূরণ করতে পারে তা বিবেচনা করুন। আপনার সূক্ষ্ম-টিউন করা মডেলগুলি সহজেই তৈরি, প্রশিক্ষণ, মূল্যায়ন এবং স্থাপন করতে Vertex AI দ্বারা প্রদত্ত সরঞ্জাম এবং পরিষেবাগুলির বিস্তৃত স্যুট ব্যবহার করুন।