1. परिचय
मॉडल को बेहतर बनाने की अहमियत
फ़ाउंडेशन मॉडल को सामान्य मकसद के लिए ट्रेन किया जाता है. हालांकि, कई बार ये मॉडल, आपकी उम्मीद के मुताबिक परफ़ॉर्म नहीं करते. ऐसा इसलिए हो सकता है, क्योंकि आपको मॉडल से जो काम कराने हैं वे खास तरह के काम हैं. इन्हें सिर्फ़ प्रॉम्प्ट डिज़ाइन का इस्तेमाल करके, मॉडल को सिखाना मुश्किल होता है. ऐसे मामलों में, मॉडल ट्यूनिंग का इस्तेमाल करके, खास कामों के लिए मॉडल की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. मॉडल को बेहतर बनाने की सुविधा से, आउटपुट से जुड़ी खास ज़रूरी शर्तों को पूरा करने में भी मदद मिल सकती है. ऐसा तब हो सकता है, जब निर्देश काफ़ी न हों. लार्ज लैंग्वेज मॉडल (एलएलएम) में काफ़ी जानकारी हो सकती है और ये कई काम कर सकते हैं. हालांकि, ये मॉडल तब ही बेहतर परफ़ॉर्म करते हैं, जब इन्हें खास ट्रेनिंग दी जाती है. मॉडल को बेहतर बनाने की सुविधा से, एलएलएम को ट्रेन किया जा सकता है. इससे, पहले से ट्रेन किए गए एलएलएम को अपनी ज़रूरतों के हिसाब से इस्तेमाल किया जा सकता है.
इस कोडलैब में, एलएलएम मॉडल को बेहतर बनाने के लिए, सुपरवाइज़्ड ट्यूनिंग के तरीके का इस्तेमाल करने का तरीका बताया गया है.
सुपरवाइज़्ड ट्यूनिंग, मॉडल को नई स्किल सिखाकर उसकी परफ़ॉर्मेंस को बेहतर बनाती है. मॉडल को, मनचाहे तरीके से काम करने या टास्क को पूरा करने के लिए, लेबल किए गए सैकड़ों उदाहरणों वाला डेटा इस्तेमाल किया जाता है. हम मॉडल को, अपने खास इस्तेमाल के मामले के लिए जवाबों को पसंद के मुताबिक बनाने का तरीका सिखाने के लिए, लेबल किया गया डेटासेट उपलब्ध कराने वाले हैं. इसमें इनपुट टेक्स्ट (प्रॉम्प्ट) और आउटपुट टेक्स्ट (जवाब) शामिल होगा.
मॉडल को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानकारी यहां उपलब्ध है.
आप क्या बनाएंगे
इस्तेमाल का उदाहरण: खबरों के लेखों के लिए हेडलाइन जनरेट करना
मान लीजिए कि आपको खबरों के लेखों के लिए हेडलाइन अपने-आप जनरेट करनी हैं. Vertex AI का इस्तेमाल करके, एलएलएम को बेहतर बनाया जा सकता है. इससे, खास स्टाइल में, लेख के लिए सही तरीके से सारांश वाली हेडलाइन जनरेट की जा सकती है. साथ ही, खबर दिखाने वाले चैनल की गाइडलाइन के मुताबिक, हेडलाइन को पसंद के मुताबिक बनाया जा सकता है.
इस कोडलैब में, आपको ये काम करने होंगे:
BBC FULLTEXT DATAका इस्तेमाल करना. यह डेटा, BigQuery के सार्वजनिक डेटासेटbigquery-public-data.bbc_news.fulltextसे उपलब्ध कराया गया है.- एलएलएम (
text-bison@002) को बेहतर बनाना, ताकि वह "bbc-news-summary-tuned" नाम का नया मॉडल बन सके. इसके बाद, नतीजे की तुलना बेस मॉडल से मिले जवाब से करना. इस कोडलैब के लिए, रिपॉज़िटरी में JSONL फ़ाइल का एक नमूना उपलब्ध है. इस फ़ाइल को अपने Cloud Storage बकेट में अपलोड किया जा सकता है. इसके बाद, मॉडल को बेहतर बनाने के लिए, यह तरीका अपनाया जा सकता है: - अपना डेटा तैयार करना: इसकी शुरुआत, खबरों के लेखों और उनसे जुड़ी हेडलाइन के डेटासेट से करें. जैसे, उदाहरण के तौर पर दिए गए कोड में, बीबीसी न्यूज़ का डेटासेट इस्तेमाल किया गया है.
- पहले से ट्रेन किए गए मॉडल को बेहतर बनाना: कोई बेस मॉडल चुनें. जैसे, "
text-bison@002". इसके बाद, Vertex AI SDK for Python का इस्तेमाल करके, अपने खबरों के डेटा के साथ इसे बेहतर बनाएं. - नतीजों का आकलन करना: हेडलाइन जनरेट करने की क्वालिटी में हुए सुधार को देखने के लिए, बेहतर बनाए गए मॉडल की परफ़ॉर्मेंस की तुलना बेस मॉडल से करें.
- मॉडल को डिप्लॉय करना और उसका इस्तेमाल करना: बेहतर बनाए गए मॉडल को, एपीआई एंडपॉइंट के ज़रिए उपलब्ध कराएं. इसके बाद, नए लेखों के लिए हेडलाइन अपने-आप जनरेट करना शुरू करें.
2. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग चालू है. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें.
- Colab Notebook खोलें और उसी खाते से लॉग इन करें जो आपका मौजूदा चालू Google Cloud खाता है.
3. लार्ज लैंग्वेज मॉडल को बेहतर बनाना
इस कोडलैब में, मॉडल को बेहतर बनाने के लिए, Vertex AI SDK for Python का इस्तेमाल किया गया है. मॉडल को बेहतर बनाने के लिए, अन्य विकल्पों का भी इस्तेमाल किया जा सकता है. जैसे, एचटीटीपी, CURL कमांड, Java SDK, कंसोल.
पसंद के मुताबिक जवाब पाने के लिए, मॉडल को बेहतर बनाने और उसका आकलन करने के लिए, पांच चरण पूरे करने होंगे. रिपॉज़िटरी में मौजूद llm_fine_tuning_supervised.ipynb फ़ाइल में, पूरा कोड देखा जा सकता है.
4. पहला चरण: ज़रूरी डिपेंडेंसी इंस्टॉल करना और इंपोर्ट करना
!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. दूसरा चरण: ट्रेनिंग डेटा तैयार करना और लोड करना
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. तीसरा चरण: लार्ज लैंग्वेज मॉडल को बेहतर बनाना
इस चरण में, किसी भी लार्ज लैंग्वेज मॉडल को बेहतर बनाया जा सकता है. हालांकि, यह मॉडल की उपलब्धता पर निर्भर करता है. हालांकि, इस स्निपेट में, हम पहले से ट्रेन किए गए मॉडल "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. चौथा चरण: बेहतर बनाए गए नए मॉडल से अनुमान लगाना
मॉडल को बेहतर बनाने की प्रोसेस पूरी होने के बाद, नए मॉडल से अनुमान लगाया जा सकेगा. बेहतर बनाए गए नए मॉडल से अनुमान लगाने के लिए:
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 वैरिएबल में मौजूद है. हालांकि, अगर आपको ऐसा मॉडल लागू करना है जिसे पहले बेहतर बनाया गया था, तो क्या किया जा सकता है?
इसके लिए, एलएलएम पर get_tuned_model() तरीके को लागू किया जा सकता है. इसके साथ, Vertex AI Model Registry से डिप्लॉय किए गए बेहतर बनाए गए मॉडल का पूरा ENDPOINT यूआरएल भी शामिल किया जा सकता है. ध्यान दें कि इस मामले में, आपको अपने-अपने आईडी के बजाय, 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. पांचवा चरण: बेहतर बनाए गए नए मॉडल का आकलन करना
जनरेट किए गए जवाब की क्वालिटी और काम का होने का आकलन करने के लिए, मॉडल का आकलन करना ज़रूरी है. इसमें, जनरेटिव लैंग्वेज मॉडल से मिले आउटपुट की जांच की जाती है, ताकि यह पता लगाया जा सके कि यह सुसंगत है, सटीक है या नहीं. साथ ही, यह दिए गए प्रॉम्प्ट के मुताबिक है या नहीं. मॉडल का आकलन करने से, सुधार के लिए क्षेत्रों की पहचान करने, मॉडल की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने, और यह पक्का करने में मदद मिलती है कि जनरेट किया गया टेक्स्ट, क्वालिटी और काम का होने के तय मानकों के मुताबिक है या नहीं. इसके बारे में ज़्यादा जानने के लिए, दस्तावेज़ पढ़ें. फ़िलहाल, हम देखेंगे कि बेहतर बनाए गए मॉडल के लिए, आकलन की कुछ मेट्रिक कैसे पाई जा सकती हैं. साथ ही, इसकी तुलना बेस मॉडल से कैसे की जा सकती है.
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% ओवरलैप है.
अगर आकलन के चरण को बेसलाइन मॉडल पर चलाया जाता है, तो आपको दिखेगा कि बेहतर बनाए गए मॉडल के लिए, सारांश का स्कोर तुलनात्मक रूप से ज़्यादा है.
आकलन के नतीजे, Cloud Storage की उस आउटपुट डायरेक्ट्री में देखे जा सकते हैं जिसे आपने आकलन की जॉब बनाते समय तय किया था. इस फ़ाइल का नाम evaluation_metrics.json है. बेहतर बनाए गए मॉडल के लिए, Google Cloud Console में Vertex AI Model Registry पेज पर भी आकलन के नतीजे देखे जा सकते हैं.
9. विचार करने वाली ज़रूरी बातें
- मॉडल की उपलब्धता: हमेशा मॉडल के दस्तावेज़ देखकर, उसकी नई सुविधाओं के बारे में जानें.
- तेज़ी से डेवलपमेंट: एलएलएम के फ़ील्ड में तेज़ी से बदलाव होते हैं. संभव है कि कोई नया और ज़्यादा पावरफ़ुल मॉडल, पुराने बेस पर बने बेहतर बनाए गए मॉडल से बेहतर परफ़ॉर्म करे. अच्छी बात यह है कि जब यह सुविधा उपलब्ध हो जाएगी, तब इन तकनीकों को नए मॉडल पर भी लागू किया जा सकेगा.
- LoRA: LoRA, एलएलएम को बेहतर बनाने की एक असरदार तकनीक है. यह तकनीक, पहले से ट्रेन किए गए मौजूदा मॉडल की लेयर में, ट्रेन किए जा सकने वाले, लो-रैंक डीकंपोज़िशन मैट्रिक्स जोड़कर काम करती है. इसके बारे में ज़्यादा जानने के लिए, यहां जाएं. बड़े एलएलएम के सभी पैरामीटर अपडेट करने के बजाय, LoRA छोटे मैट्रिक्स को सीखता है. इन्हें, ओरिजनल मॉडल के वेट मैट्रिक्स में जोड़ा जाता है या उनसे गुणा किया जाता है. इससे, मॉडल को बेहतर बनाने के दौरान जोड़े गए अतिरिक्त पैरामीटर की संख्या में काफ़ी कमी आती है.
10. स्टोरेज में जगह बनाएं
इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते पर शुल्क लगने से बचने के लिए, यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग में, प्रोजेक्ट आईडी डालें. इसके बाद, प्रोजेक्ट मिटाने के लिए, शट डाउन करें पर क्लिक करें.
- इसके अलावा, Model Registry पर जाएं. इसके बाद, मॉडल डिप्लॉय करें और टेस्ट करें टैब पर जाएं. यहां जाकर, एंडपॉइंट को अनडिप्लॉय करें और डिप्लॉय किए गए बेहतर बनाए गए मॉडल को मिटाएं.
11. बधाई हो
बधाई हो! आपने Vertex AI का इस्तेमाल करके, एलएलएम मॉडल को बेहतर बना लिया है. मॉडल को बेहतर बनाने की सुविधा, एक असरदार तकनीक है. इसकी मदद से, एलएलएम को अपने डोमेन और टास्क के हिसाब से इस्तेमाल किया जा सकता है. Vertex AI की मदद से, आपके पास अपने मॉडल को असरदार तरीके से और कम समय में बेहतर बनाने के लिए, ज़रूरी टूल और संसाधन उपलब्ध हैं.
GitHub रिपॉज़िटरी एक्सप्लोर करें और सैंपल कोड के साथ एक्सपेरिमेंट करें. इससे, मॉडल को बेहतर बनाने fine-tuning और उसका आकलन evaluation करने का अनुभव मिलेगा. इस बारे में सोचें कि बेहतर बनाए गए एलएलएम, आपकी ज़रूरतों को कैसे पूरा कर सकते हैं. जैसे, टारगेट किए गए मार्केटिंग कॉन्टेंट को जनरेट करना, मुश्किल दस्तावेज़ों का सारांश बनाना या सांस्कृतिक बारीकियों के साथ भाषाओं का अनुवाद करना. Vertex AI की ओर से ऑफ़र किए जाने वाले टूल और सेवाओं के सुइट का इस्तेमाल करके, बेहतर बनाए गए मॉडल को आसानी से बनाया, ट्रेन किया, उनका आकलन किया, और डिप्लॉय किया जा सकता है.