Gemini API की मदद से बेहतर बनाना

हो सकता है कि फ़्यू-शॉट प्रॉम्प्टिंग जैसी प्रॉम्प्ट डिज़ाइन की रणनीतियों से, आपको हमेशा ज़रूरी नतीजे न मिलें. बेहतर बनाना एक ऐसी प्रोसेस है जिससे खास टास्क पर आपके मॉडल की परफ़ॉर्मेंस को बेहतर बनाया जा सकता है. इसके अलावा, जब निर्देशों की संख्या काफ़ी नहीं होती और आपके पास ऐसे उदाहरणों का एक सेट होता है जो आपको मिलने वाले आउटपुट को दिखाते हैं, तो मॉडल को आउटपुट की खास ज़रूरतों को पूरा करने में मदद मिलती है.

इस पेज पर, Gemini API की टेक्स्ट सेवा के पीछे मौजूद टेक्स्ट मॉडल को बेहतर बनाने के बारे में खास जानकारी दी गई है. ट्यूनिंग शुरू करने के लिए, बेहतर ट्यूनिंग के ट्यूटोरियल को आज़माएं. अगर आपको किसी खास काम के लिए, एलएलएम को अपनी ज़रूरत के मुताबिक बनाने के बारे में ज़्यादा जानकारी चाहिए, तो मशीन लर्निंग क्रैश कोर्स में एलएलएम: फ़ाइन-ट्यूनिंग, डिस्टिलेशन, और प्रॉम्प्ट इंजीनियरिंग देखें.

फ़ाइन-ट्यूनिंग की सुविधा कैसे काम करती है

फ़ाइन-ट्यूनिंग का मकसद, आपके खास टास्क के लिए मॉडल की परफ़ॉर्मेंस को और बेहतर बनाना है. फ़ाइन-ट्यूनिंग, मॉडल को ट्रेनिंग डेटासेट उपलब्ध कराकर काम करती है. इसमें टास्क के कई उदाहरण होते हैं. खास कामों के लिए, मॉडल की परफ़ॉर्मेंस में काफ़ी सुधार किया जा सकता है. इसके लिए, मॉडल को कुछ उदाहरणों के हिसाब से ट्यून करें. इस तरह की मॉडल ट्यूनिंग को कभी-कभी सुपरवाइज़्ड फ़ाइन-ट्यूनिंग कहा जाता है, ताकि इसे अन्य तरह की फ़ाइन-ट्यूनिंग से अलग किया जा सके.

आपका ट्रेनिंग डेटा, प्रॉम्प्ट इनपुट और उम्मीद के मुताबिक जवाब के आउटपुट के साथ उदाहरणों के तौर पर होना चाहिए. Google AI Studio में, उदाहरण के तौर पर दिए गए डेटा का इस्तेमाल करके भी मॉडल को ट्यून किया जा सकता है. इसका मकसद, मॉडल को उस व्यवहार या टास्क की नकल करने के लिए सिखाना है जिसकी ज़रूरत है. इसके लिए, मॉडल को उस व्यवहार या टास्क के कई उदाहरण दिए जाते हैं.

ट्यूनिंग जॉब चलाने पर, मॉडल अन्य पैरामीटर सीखता है. इससे, उसे ज़रूरी टास्क पूरा करने या ज़रूरी व्यवहार को समझने के लिए, ज़रूरी जानकारी कोड में बदलने में मदद मिलती है. इसके बाद, इन पैरामीटर का इस्तेमाल अनुमान लगाने के समय किया जा सकता है. ट्यूनिंग जॉब का आउटपुट एक नया मॉडल होता है. यह मॉडल, नए सिरे से सीखे गए पैरामीटर और ओरिजनल मॉडल का असरदार कॉम्बिनेशन होता है.

अपना डेटासेट तैयार करना

मॉडल को बेहतर बनाने से पहले, आपको मॉडल को ट्यून करने के लिए डेटासेट की ज़रूरत होती है. सबसे अच्छी परफ़ॉर्मेंस के लिए, डेटासेट में मौजूद उदाहरणों की क्वालिटी अच्छी होनी चाहिए. साथ ही, वे अलग-अलग तरह के होने चाहिए और असल इनपुट और आउटपुट के बारे में बताने चाहिए.

फ़ॉर्मैट

आपके डेटासेट में शामिल उदाहरण, आपके अनुमानित प्रोडक्शन ट्रैफ़िक से मेल खाने चाहिए. अगर आपके डेटासेट में कोई खास फ़ॉर्मैटिंग, कीवर्ड, निर्देश या जानकारी शामिल है, तो प्रोडक्शन डेटा को उसी तरह फ़ॉर्मैट किया जाना चाहिए और उसमें वही निर्देश होने चाहिए.

उदाहरण के लिए, अगर आपके डेटासेट के उदाहरणों में "question:" और "context:" शामिल हैं, तो प्रोडक्शन ट्रैफ़िक को भी उसी क्रम में फ़ॉर्मैट किया जाना चाहिए जिस क्रम में डेटासेट के उदाहरणों में "question:" और "context:" दिखते हैं. अगर संदर्भ को बाहर रखा जाता है, तो मॉडल पैटर्न की पहचान नहीं कर सकता. भले ही, डेटासेट में दिए गए उदाहरण में सवाल का सही जवाब मौजूद हो.

एक और उदाहरण के तौर पर, यहां एक ऐप्लिकेशन के लिए Python ट्रेनिंग डेटा दिया गया है, जो किसी क्रम में अगला नंबर जनरेट करता है:

training_data = [
  {"text_input": "1", "output": "2"},
  {"text_input": "3", "output": "4"},
  {"text_input": "-3", "output": "-2"},
  {"text_input": "twenty two", "output": "twenty three"},
  {"text_input": "two hundred", "output": "two hundred one"},
  {"text_input": "ninety nine", "output": "one hundred"},
  {"text_input": "8", "output": "9"},
  {"text_input": "-98", "output": "-97"},
  {"text_input": "1,000", "output": "1,001"},
  {"text_input": "10,100,000", "output": "10,100,001"},
  {"text_input": "thirteen", "output": "fourteen"},
  {"text_input": "eighty", "output": "eighty one"},
  {"text_input": "one", "output": "two"},
  {"text_input": "three", "output": "four"},
  {"text_input": "seven", "output": "eight"},
]

अपने डेटासेट में हर उदाहरण के लिए प्रॉम्प्ट या शुरुआती जानकारी जोड़ने से, ट्यून किए गए मॉडल की परफ़ॉर्मेंस को बेहतर बनाने में भी मदद मिल सकती है. ध्यान दें, अगर आपके डेटासेट में कोई प्रॉम्प्ट या प्रीऐबल शामिल है, तो अनुमान लगाने के समय, उसे ट्यून किए गए मॉडल के प्रॉम्प्ट में भी शामिल किया जाना चाहिए.

सीमाएं

ध्यान दें: Gemini 1.5 Flash के लिए डेटासेट को बेहतर बनाने की सुविधा में ये सीमाएं हैं:

  • हर उदाहरण के लिए, इनपुट का ज़्यादा से ज़्यादा साइज़ 40,000 वर्ण हो सकता है.
  • हर उदाहरण के लिए, आउटपुट का ज़्यादा से ज़्यादा साइज़ 5,000 वर्ण हो सकता है.

ट्रेनिंग डेटा का साइज़

मॉडल को बेहतर बनाने के लिए, कम से कम 20 उदाहरणों का इस्तेमाल किया जा सकता है. ज़्यादा डेटा से, आम तौर पर जवाबों की क्वालिटी बेहतर होती है. आपको अपने ऐप्लिकेशन के हिसाब से, 100 से 500 उदाहरणों को टारगेट करना चाहिए. यहां दी गई टेबल में, आम तौर पर किए जाने वाले अलग-अलग टास्क के लिए, टेक्स्ट मॉडल को बेहतर बनाने के लिए सुझाए गए डेटासेट के साइज़ की जानकारी दी गई है:

टास्क डेटासेट में उदाहरणों की संख्या
कैटगरी 100+
खास जानकारी 100-500+
दस्तावेज़ खोजना 100+

ट्यूनिंग डेटासेट अपलोड करना

डेटा को एपीआई का इस्तेमाल करके इनलाइन या Google AI Studio में अपलोड की गई फ़ाइलों के ज़रिए पास किया जाता है.

क्लाइंट लाइब्रेरी का इस्तेमाल करने के लिए, createTunedModel कॉल में डेटा फ़ाइल दें. फ़ाइल का साइज़ 4 एमबी से ज़्यादा नहीं होना चाहिए. शुरू करने के लिए, Python की मदद से, मशीन लर्निंग मॉडल को बेहतर बनाने का तरीका देखें.

cURL का इस्तेमाल करके REST API को कॉल करने के लिए, training_data आर्ग्युमेंट में JSON फ़ॉर्मैट में ट्रेनिंग के उदाहरण दें. शुरू करने के लिए, cURL की मदद से ट्यून करने का तरीका देखें.

बेहतर ट्यूनिंग की सेटिंग

ट्यूनिंग जॉब बनाते समय, ये बेहतर सेटिंग तय की जा सकती हैं:

  • एपच: पूरे ट्रेनिंग सेट पर पूरी ट्रेनिंग पास की जाती है, ताकि हर उदाहरण को एक बार प्रोसेस किया जा सके.
  • बैच का साइज़: एक ट्रेनिंग इटरेशन में इस्तेमाल किए गए उदाहरणों का सेट. बैच के साइज़ से, बैच में मौजूद उदाहरणों की संख्या तय होती है.
  • लर्निंग रेट: यह एक फ़्लोटिंग-पॉइंट नंबर होता है. इससे एल्गोरिदम को पता चलता है कि हर बार दोहराए जाने पर, मॉडल पैरामीटर को कितना अडजस्ट करना है. उदाहरण के लिए, 0.3 की लर्निंग रेट, 0.1 की लर्निंग रेट की तुलना में वज़न और बायस को तीन गुना ज़्यादा बेहतर तरीके से अडजस्ट करेगी. ज़्यादा और कम लर्निंग रेट के अपने अलग-अलग फ़ायदे और नुकसान होते हैं. इसलिए, इनमें बदलाव करना ज़रूरी है.
  • लर्निंग रेट मल्टीप्लायर: रेट मल्टीप्लायर, मॉडल के मूल लर्निंग रेट में बदलाव करता है. वैल्यू 1 होने पर, मॉडल की मूल लर्निंग रेट का इस्तेमाल किया जाता है. 1 से ज़्यादा की वैल्यू से लर्निंग रेट बढ़ता है और 1 और 0 के बीच की वैल्यू से लर्निंग रेट कम होता है.

नीचे दी गई टेबल में, फ़ाउंडेशन मॉडल को बेहतर बनाने के लिए सुझाए गए कॉन्फ़िगरेशन दिखाए गए हैं:

हाइपर पैरामीटर डिफ़ॉल्ट मान सुझाए गए बदलाव
एपॉक 5

अगर पांच एपिसोड से पहले लॉस प्लैटफ़ॉर्म पर आ जाता है, तो छोटी वैल्यू का इस्तेमाल करें.

अगर नुकसान कम हो रहा है और ऐसा नहीं लगता कि वह स्थिर हो जाएगा, तो ज़्यादा वैल्यू का इस्तेमाल करें.

बैच का साइज़ 4
सीखने की दर 0.001 छोटे डेटासेट के लिए, कम वैल्यू का इस्तेमाल करें.

लॉस कर्व से पता चलता है कि हर एपिसोड के बाद, मॉडल का अनुमान, ट्रेनिंग के उदाहरणों में दी गई सही अनुमानों से कितना अलग है. आम तौर पर, आपको ट्रेनिंग को प्लैटफ़ॉर्म पर पहुंचने से ठीक पहले, कर्व के सबसे निचले हिस्से पर रोकना चाहिए. उदाहरण के लिए, नीचे दिए गए ग्राफ़ में लॉस कर्व, एपिक 4 से 6 के आस-पास प्लैटफ़ॉर्म पर दिख रहा है. इसका मतलब है कि Epoch पैरामीटर को 4 पर सेट किया जा सकता है और फिर भी वही परफ़ॉर्मेंस मिल सकती है.

मॉडल के लिए लॉस कर्व दिखाने वाला लाइन चार्ट. पहले और दूसरे युग के बीच लाइन में बढ़ोतरी होती है. इसके बाद, यह तेज़ी से घटकर लगभग 0 हो जाती है और तीन युगों के बाद, यह लेवल पर आ जाती है.

ट्यूनिंग की स्थिति देखना

Google AI Studio में, मेरी लाइब्रेरी टैब में जाकर या Gemini API में ट्यून किए गए मॉडल की metadata प्रॉपर्टी का इस्तेमाल करके, ट्यूनिंग की स्थिति देखी जा सकती है.

गड़बड़ियां ठीक करना

इस सेक्शन में, ट्यून किया गया मॉडल बनाते समय होने वाली गड़बड़ियों को हल करने के बारे में सलाह दी गई है.

पुष्टि करना

एपीआई और क्लाइंट लाइब्रेरी का इस्तेमाल करके ट्यून करने के लिए, पुष्टि करना ज़रूरी है. पुष्टि करने की सुविधा को एपीआई पासकोड (इसका सुझाव दिया जाता है) या OAuth क्रेडेंशियल का इस्तेमाल करके सेट अप किया जा सकता है. एपीआई पासकोड सेट अप करने के बारे में दस्तावेज़ देखने के लिए, एपीआई पासकोड सेट अप करना लेख पढ़ें.

अगर आपको 'PermissionDenied: 403 Request had insufficient authentication scopes' गड़बड़ी का कोड दिखता है, तो हो सकता है कि आपको OAuth क्रेडेंशियल का इस्तेमाल करके, उपयोगकर्ता की पुष्टि करने की सुविधा सेट अप करनी पड़े. Python के लिए OAuth क्रेडेंशियल कॉन्फ़िगर करने के लिए, OAuth सेटअप ट्यूटोरियल पर जाएं.

रद्द किए गए मॉडल

फ़ाइन-ट्यूनिंग की प्रोसेस पूरी होने से पहले, उसे कभी भी रद्द किया जा सकता है. हालांकि, रद्द किए गए मॉडल की अनुमान लगाने की परफ़ॉर्मेंस का अनुमान नहीं लगाया जा सकता. खास तौर पर, अगर ट्यूनिंग की प्रोसेस को ट्रेनिंग के शुरुआती दौर में रद्द कर दिया जाता है. अगर आपने ट्रेनिंग को किसी पुराने युग पर रोकने के लिए रद्द किया है, तो आपको एक नई ट्यूनिंग जॉब बनानी चाहिए और युग को कम वैल्यू पर सेट करना चाहिए.

ट्यून किए गए मॉडल की सीमाएं

ध्यान दें: ट्यून किए गए मॉडल में ये सीमाएं होती हैं:

  • ट्यून किए गए Gemini 1.5 Flash मॉडल के लिए, इनपुट की सीमा 40,000 वर्ण है.
  • ट्यून किए गए मॉडल के साथ JSON मोड काम नहीं करता.
  • ट्यून किए गए मॉडल के साथ, सिस्टम निर्देश काम नहीं करते.
  • सिर्फ़ टेक्स्ट इनपुट का इस्तेमाल किया जा सकता है.

आगे क्या करना है

बेहतर बनाने के ट्यूटोरियल देखना शुरू करें: