1. परिचय
मॉडल को बेहतर बनाने की प्रोसेस क्यों ज़रूरी है
फ़ाउंडेशन मॉडल को सामान्य मकसद के लिए ट्रेन किया जाता है. इसलिए, कई बार वे आपके हिसाब से परफ़ॉर्म नहीं करते. इसकी वजह यह हो सकती है कि मॉडल से जिन टास्क को पूरा कराना है वे खास टास्क हैं. इन्हें सिर्फ़ प्रॉम्प्ट डिज़ाइन का इस्तेमाल करके, मॉडल को सिखाना मुश्किल होता है. ऐसे में, मॉडल को बेहतर बनाने की प्रोसेस का इस्तेमाल करके, खास टास्क के लिए मॉडल की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. मॉडल को बेहतर बनाने की प्रोसेस से, आउटपुट से जुड़ी खास ज़रूरी शर्तों को पूरा करने में भी मदद मिल सकती है. ऐसा तब होता है, जब निर्देश काफ़ी न हों. लार्ज लैंग्वेज मॉडल (एलएलएम) में काफ़ी जानकारी हो सकती है और वे कई टास्क पूरे कर सकते हैं. हालांकि, वे सिर्फ़ तब बेहतर परफ़ॉर्म करते हैं, जब उन्हें खास ट्रेनिंग दी जाती है. मॉडल को बेहतर बनाने की प्रोसेस से, एलएलएम को ट्रेन किया जा सकता है. इससे, पहले से ट्रेन किए गए एलएलएम को अपनी ज़रूरतों के हिसाब से इस्तेमाल किया जा सकता है.
इस कोडलैब में, एलएलएम मॉडल के लिए, सुपरवाइज़्ड ट्यूनिंग के तरीके का इस्तेमाल करके, मॉडल को बेहतर बनाने की प्रोसेस के बारे में बताया जाएगा.
सुपरवाइज़्ड ट्यूनिंग से, मॉडल को नई स्किल सिखाकर उसकी परफ़ॉर्मेंस को बेहतर बनाया जाता है. मॉडल को, मनचाहे तरीके से काम करने या टास्क पूरा करने के लिए, लेबल किए गए सैकड़ों उदाहरणों वाले डेटा का इस्तेमाल करके ट्रेन किया जाता है. हम मॉडल को, अपने खास इस्तेमाल के मामले के लिए जवाबों को पसंद के मुताबिक बनाने का तरीका सिखाने के लिए, इनपुट टेक्स्ट (प्रॉम्प्ट) और आउटपुट टेक्स्ट (जवाब) के लिए लेबल किया गया डेटासेट उपलब्ध कराने वाले हैं.
मॉडल को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानकारी यहां उपलब्ध है.
आप क्या बनाएंगे
इस्तेमाल का मामला: खबरों के लेखों के लिए हेडलाइन जनरेट करना
मान लें कि आपको खबरों के लेखों के लिए हेडलाइन अपने-आप जनरेट करनी हैं. Vertex AI का इस्तेमाल करके, एलएलएम को बेहतर बनाया जा सकता है. इससे, खास स्टाइल में, लेख के लिए सही खास जानकारी वाली हेडलाइन जनरेट की जा सकती है. साथ ही, खबर दिखाने वाले चैनल की गाइडलाइन के मुताबिक, हेडलाइन को पसंद के मुताबिक बनाया जा सकता है.
इस कोडलैब में, ये काम किए जाएंगे:
BBC FULLTEXT DATAका इस्तेमाल करना. यह डेटा, BigQuery के सार्वजनिक डेटासेटbigquery-public-data.bbc_news.fulltextसे उपलब्ध कराया गया है.- एलएलएम (
text-bison@002) को बेहतर बनाकर, नया मॉडल "bbc-news-summary-tuned" बनाना और इसके नतीजे की तुलना, बेस मॉडल के जवाब से करना. इस कोडलैब के लिए, रिपॉज़िटरी में JSONL फ़ाइल का एक नमूना उपलब्ध है. इस फ़ाइल को अपने Cloud Storage Bucket में अपलोड किया जा सकता है. साथ ही, मॉडल को बेहतर बनाने के लिए, यह तरीका अपनाया जा सकता है: - अपना डेटा तैयार करना: इसकी शुरुआत, खबरों के लेखों और उनसे जुड़ी हेडलाइन के डेटासेट से करें. जैसे, उदाहरण के कोड में इस्तेमाल किया गया बीबीसी न्यूज़ का डेटासेट.
- पहले से ट्रेन किए गए मॉडल को बेहतर बनाना: कोई बेस मॉडल चुनें. जैसे, "
text-bison@002". इसके बाद, Python के लिए Vertex AI SDK का इस्तेमाल करके, अपने खबरों के डेटा के साथ इसे बेहतर बनाएं. - नतीजों का आकलन करना: हेडलाइन जनरेट करने की क्वालिटी में सुधार देखने के लिए, बेहतर बनाए गए मॉडल की परफ़ॉर्मेंस की तुलना, बेस मॉडल से करें.
- अपने मॉडल को डिप्लॉय करना और उसका इस्तेमाल करना: बेहतर बनाए गए मॉडल को, एपीआई एंडपॉइंट के ज़रिए उपलब्ध कराएं और नए लेखों के लिए हेडलाइन अपने-आप जनरेट करना शुरू करें.
2. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, कोई Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. यह देखने का तरीका जानें कि किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं.
- Colab Notebook खोलें और उसी खाते से लॉग इन करें जो आपका मौजूदा चालू Google Cloud खाता है.
3. लार्ज लैंग्वेज मॉडल को बेहतर बनाना
इस कोडलैब में, मॉडल को बेहतर बनाने के लिए, Python के लिए Vertex AI SDK का इस्तेमाल किया गया है. मॉडल को बेहतर बनाने के लिए, अन्य विकल्पों का भी इस्तेमाल किया जा सकता है. जैसे, एचटीटीपी, 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 से, डिप्लॉय किए गए बेहतर बनाए गए मॉडल का पूरा एंडपॉइंट यूआरएल इस्तेमाल करें. ध्यान दें कि इस मामले में, आपको अपने-अपने आईडी के बजाय, 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 की ओर से ऑफ़र किए जाने वाले टूल और सेवाओं के सुइट का इस्तेमाल करके, बेहतर बनाए गए मॉडल को आसानी से बनाया, ट्रेन किया, उनका आकलन किया, और डिप्लॉय किया जा सकता है.