paint-brush
OpenAI के साथ GPT असिस्टेंट को कैसे फाइन-ट्यून और ऑप्टिमाइज़ करेंद्वारा@weblabtechnology
6,611 रीडिंग
6,611 रीडिंग

OpenAI के साथ GPT असिस्टेंट को कैसे फाइन-ट्यून और ऑप्टिमाइज़ करें

द्वारा WebLab Technology23m2023/05/03
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

वेबलैब टेक्नोलॉजी ओपनएआई के साथ जीपीटी सहायकों को फाइन-ट्यूनिंग पर अंतर्दृष्टि साझा करती है। जानें कि कैसे यह प्रक्रिया प्राकृतिक भाषा प्रसंस्करण को बढ़ा सकती है और एआई मॉडल के प्रदर्शन में सुधार कर सकती है।
featured image - OpenAI के साथ GPT असिस्टेंट को कैसे फाइन-ट्यून और ऑप्टिमाइज़ करें
WebLab Technology HackerNoon profile picture
0-item
1-item
2-item


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


व्यवसाय GPT के लिए विभिन्न उपयोग मामलों की कल्पना करते हैं, जिनमें से कुछ GPT और उपयोगकर्ता के बीच खुले संचार पर निर्भर करते हैं।


उदाहरण के लिए इन उपकरणों को लें:


  1. चैटस्पॉट। नेचुरल लैंग्वेज क्वेरी चैटस्पॉट एपीआई में जाती है और हबस्पॉट सीआरएम एपीआई, गूगल डॉक्स एपीआई, आदि के लिए संचालन में तब्दील हो जाती है, फिर एक जनरेटिव टेक्स्ट मॉडल का उपयोग करके जवाब देती है जब कार्रवाई की गई हो (या नहीं)। जीपीटी-4 आधारित।


  2. खानमिगो। खान अकादमी की एआई-पावर्ड गाइड। उपयोगकर्ता के अनुरोध अंतःक्षेपित संदर्भ के साथ संकेतों में रूपांतरित हो जाते हैं। सिस्टम आठ गुना अधिक इंजेक्ट किए गए संदर्भ को संभालने के लिए GPT की क्षमता पर निर्भर करता है। जीपीटी-4 आधारित।


हम जानते हैं कि व्यवसाय और उपयोगकर्ता उपयोगकर्ता इंटरफ़ेस के विकल्प के रूप में प्राकृतिक भाषा क्वेरी का उपयोग करने के इच्छुक हैं। हालांकि, यह सुनिश्चित करने के लिए कि वास्तविक दुनिया के अनुप्रयोगों में लाए जाने पर एआई समाधान विश्वसनीय और प्रभावी हैं, जीपीटी-आधारित मॉडल को वास्तव में विशिष्ट उपयोग मामलों और डोमेन ज्ञान पर लागू करने के लिए ठीक-ट्यूनिंग से गुजरना होगा।


महत्वपूर्ण रूप से, GPT-4 संकेतों के लिए संदर्भ प्रदान करने के लिए अधिक अवसर प्रदान करता है और इसमें मतिभ्रम करने वाली त्रुटियां काफी कम होती हैं।


एआई मतिभ्रम

एआई मतिभ्रम एक महत्वपूर्ण चुनौती का गठन करता है जिसे जीपीटी-4 जैसे बड़े भाषा मॉडल के साथ काम करते समय इंजीनियरों को संबोधित करने की आवश्यकता होती है। चूंकि मतिभ्रम गलत या भ्रामक जानकारी उत्पन्न करते हैं, इसलिए उन अनुप्रयोगों में उनके अत्यंत गंभीर परिणाम हो सकते हैं जहां तथ्यात्मक सटीकता सर्वोपरि है। इस खंड में, हम एआई मतिभ्रम के तकनीकी पहलुओं का अधिक विस्तार से पता लगाएंगे और उनकी घटना को कम करने के लिए रणनीतियों पर भी चर्चा करेंगे।


एक त्वरित उदाहरण के लिए, नोबल एकर्सन द्वारा प्रदान की गई तथ्यात्मक सटीकता के लिए इस अहंकारी परीक्षण पर विचार करें।


आपको तथ्यों के बीच बहुत सी गलत जानकारी मिलेगी:



एआई मतिभ्रम मुख्य रूप से ट्रांसफार्मर आर्किटेक्चर में निहित सीमाओं के साथ-साथ बड़े भाषा मॉडल के लिए उपयोग किए जाने वाले प्रशिक्षण डेटा के परिणामस्वरूप उत्पन्न होता है। एक संज्ञानात्मक वास्तुकला की अनुपस्थिति जो निगमनात्मक तर्क को सक्षम बनाती है, इन मॉडलों को ऐसी जानकारी उत्पन्न करने के लिए प्रवृत्त करती है जो प्रशंसनीय प्रतीत हो सकती है लेकिन वास्तव में गलत है।


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


संभाव्य प्रकृति


विश्वसनीयता की इस कमी का एक कारण GPT की संभाव्य प्रकृति में पाया जा सकता है। संदर्भ के लिए, आइए एक पल के लिए संभावित डेटा संरचनाओं की जांच करें, जैसे ब्लूम फ़िल्टर। ब्लूम फ़िल्टर एक संभाव्य डेटा संरचना है जिसका उपयोग यह परीक्षण करने के लिए किया जाता है कि क्या कोई तत्व एक सेट का सदस्य है जिसमें बिट्स और कई हैश फ़ंक्शन शामिल हैं, जिनमें से प्रत्येक एक तत्व को एक या अधिक सरणी सूचकांकों में मैप करता है।


फ़िल्टर में एक तत्व सम्मिलित करने के लिए, हैश फ़ंक्शंस का उपयोग करके तत्व को हैश किया जाता है, और संबंधित सरणी बिट्स को 1 पर सेट किया जाता है।


यह पूछने के लिए कि फ़िल्टर में कोई तत्व मौजूद है या नहीं, तत्व हैश फ़ंक्शंस का उपयोग करके समान रूप से हैश किया गया है, और यदि सरणी में सभी संबंधित बिट्स 1 पर सेट हैं, तो फ़िल्टर में तत्व होने की संभावना है।


हालाँकि, यदि कोई बिट 1 पर सेट नहीं है, तो तत्व निश्चित रूप से फ़िल्टर में नहीं है। झूठी सकारात्मकता डिजाइन द्वारा संभाव्य डेटा संरचनाओं में एम्बेड की जाती है।


ब्लूम फ़िल्टर की तरह, GPT की भी अत्यधिक संभावना है। लेकिन सेट सदस्यता का परीक्षण करने के बजाय, यह इनपुट संकेतों के आधार पर पाठ उत्पन्न करता है। जीपीटी में कई ट्रांसफॉर्मर परतें होती हैं जो इनपुट प्रॉम्प्ट के आधार पर टोकन के आउटपुट अनुक्रम को उत्पन्न करने के लिए जटिल गणना करती हैं।


GPT द्वारा उत्पन्न आउटपुट नियतात्मक नहीं है और प्रशिक्षण के दौरान चुने गए अतिरिक्त हाइपरपैरामीटर के साथ-साथ नियोजित नमूना पद्धति के आधार पर बहुत भिन्न हो सकता है। ब्लूम फिल्टर की तरह, GPT भी "मतिभ्रम" कर सकता है क्योंकि बदले में परिणाम सतह के स्तर पर प्रशंसनीय दिखाई देते हैं लेकिन तथ्यात्मक रूप से गलत होते हैं।


हालांकि, मॉडल को फाइन-ट्यूनिंग करके और इसे उच्च गुणवत्ता वाले प्रशिक्षण डेटा प्रदान करके अविश्वसनीय आउटपुट उत्पन्न करने की संभावना को कम किया जा सकता है।


GPT-4 और जोखिम

छिपी हुई तथ्यात्मक अशुद्धियाँ उपयोगकर्ताओं के लिए बहुत हानिकारक हो सकती हैं। इस प्रकार, यह महत्वपूर्ण है कि डेवलपर्स होने वाली अशुद्धियों की संभावना को कम करने के उपायों को लागू करें।


GPT-4 धीमा है, और पिछले मॉडल की पीढ़ियों की तुलना में आकस्मिक मामलों में उपयोगकर्ताओं को बड़ा अंतर दिखाई नहीं देगा। कहा जा रहा है कि, GPT-4 प्रशिक्षण के दौरान लागू किए गए विभिन्न सुरक्षा उपायों के कारण अधिक सुरक्षित है, जिसमें विशेषज्ञ संलग्नता, मॉडल सुरक्षा सुधार और अतिरिक्त निगरानी और प्रवर्तन शामिल हैं।


इन शमनों ने GPT-3.5 की तुलना में GPT-4 के सुरक्षा गुणों में काफी सुधार किया है, मॉडल की अस्वीकृत सामग्री के अनुरोधों का जवाब देने की प्रवृत्ति में 82% की कमी आई है और नीतियों के अनुसार संवेदनशील अनुरोधों का जवाब देने वाले मॉडल में 29% की वृद्धि हुई है। [ रेफरी ]





मतिभ्रम को कम करना

भले ही कुछ स्तर का जोखिम शामिल हो, GPT को पूरी तरह से अनदेखा करना चुनौतीपूर्ण होगा। जीपीटी मानव और एपीआई के लिए एक नया संचार इंटरफेस बन गया है जो यूआई की आवश्यकता को कम करने के लिए तैयार है। इंजीनियरों के रूप में हमारा काम हमारे निपटान में संसाधनों के माध्यम से इसके उपयोग से उत्पन्न होने वाली समस्याओं को हल करने के तरीके खोजना है। और ऐसा करने के कई तरीके हैं.


शीघ्र इंजीनियरिंग

संकेतों में सुधार कार्य प्रदर्शन को बढ़ा सकता है, जिसके परिणामस्वरूप लगभग 50% से 65% समय में संतोषजनक परिणाम मिलते हैं, लेकिन प्रदर्शन बार-बार इस सीमा से अधिक नहीं हो सकता है।


शोध के अनुसार कैसे बड़े भाषा मॉडल जीरो-शॉट रीजनर होते हैं (केवल पाठ पूर्णता क्षमताओं से संबंधित, न कि चैट या निर्देश मॉडल), संकेतों में सुधार करने से तार्किक कार्यों पर जीपीटी के प्रदर्शन में काफी वृद्धि होती है।


अध्ययन ने प्रदर्शित किया कि प्रत्येक उत्तर से पहले " लेट्स थिंक स्टेप बाय स्टेप " जैसे एक सरल वाक्यांश को जोड़ने से GPT को एक सभ्य शून्य-शॉट रीजनर में बदलने में सक्षम होता है, बिना हाथ की आवश्यकता के विभिन्न बेंचमार्क रीजनिंग कार्यों के खिलाफ शून्य-शॉट एलएलएम प्रदर्शन को बेहतर बनाता है- तैयार किए गए कुछ-शॉट उदाहरण।


फ्यू-शॉट लर्निंग त्वरित इंजीनियरिंग की एक और शक्तिशाली तकनीक है जो नए कार्यों पर GPT-4 जैसे भाषा मॉडल के प्रदर्शन में काफी सुधार कर सकती है, यहां तक कि सीमित प्रशिक्षण डेटा के साथ भी। इस प्रकार, यह सरल मामलों के लिए फाइन-ट्यूनिंग के लिए एक अच्छा विकल्प हो सकता है। कुछ-शॉट दृष्टिकोण में, उपयोगकर्ता यह दिखाने के लिए संरचित उदाहरणों का उपयोग करता है कि वे क्या अपेक्षा करते हैं और फिर मॉडल को भरने के लिए खाली स्थान छोड़ देते हैं।


आप उन चीजों के बारे में एक लेख देख सकते हैं जिन्हें चैटजीपीटी अभी तक हल नहीं कर सकता है


प्रसंग इंजेक्शन

प्रसंग इंजेक्शन एक ऐसी तकनीक है जो एआई मतिभ्रम को कम करने और विशिष्ट डोमेन में उत्पन्न पाठ की सटीकता में सुधार करने में मदद कर सकती है। प्रासंगिक संदर्भ को इनपुट प्रॉम्प्ट में इंजेक्ट करके, मॉडल को अधिक सटीक जानकारी प्रदान की जाती है, जिससे यह अधिक सटीक और प्रासंगिक प्रतिक्रिया उत्पन्न करने में सक्षम हो जाता है।


जबकि संदर्भ अंतर्ग्रहण विधि तेज़ और सस्ती है, इसके प्रभावी होने के लिए डोमेन ज्ञान और विशेषज्ञता की भी आवश्यकता होती है। कहा जा रहा है, यह दृष्टिकोण विशेष रूप से उन डोमेन में उपयोगी हो सकता है जहां उत्पन्न पाठ की सटीकता और प्रासंगिकता महत्वपूर्ण है। यह उम्मीद की जाती है कि यह दृष्टिकोण ग्राहक सेवा और चिकित्सा निदान जैसे उद्यम संदर्भों में लिया जाएगा।


उदाहरण के लिए, ग्राहक सेवा चैटबॉट एप्लिकेशन में, संदर्भ इंजेक्शन में मॉडल को ग्राहक के खाते, पिछले इंटरैक्शन और किसी भी ज्ञात समस्या या चिंताओं के बारे में प्रासंगिक विवरण प्रदान करना शामिल हो सकता है। जोड़ा गया संदर्भ मॉडल को अधिक व्यक्तिगत और सटीक प्रतिक्रिया उत्पन्न करने की अनुमति देता है, इस प्रकार समग्र उपयोगकर्ता अनुभव में सुधार करता है।


GitHub Copilot और GitHub Copilot X दोनों ही अपने कार्यान्वयन में इस पर बहुत अधिक निर्भर हैं। लिखे जा रहे कोड के संदर्भ में, किसी भी टिप्पणी या दस्तावेज़ीकरण के साथ, ये कोडिंग सहायक कोड की इच्छित कार्यक्षमता और बाधाओं को समझने में सक्षम हैं।


प्रसंग इंजेक्शन आज तक उपलब्ध मतिभ्रम को कम करने का सबसे विश्वसनीय तरीका है, हालांकि, शीघ्र आकार के संबंध में एक प्रमुख सीमा मौजूद है।


 # Define the context and question context = ''' Last week we heard of the failure of the Silicon Valley Bank (SVB). And it is the 2nd largest bank to shut down in the US since 2000. While that is sad, miserable, and pathetic, I want to show you something under the hood — the real reason the bank failed. ''' question = "What is the reason for the failure of Silicon Valley Bank and when did it happen?" # Define prompts with and without context prompt_without_context = question prompt_with_context = f'''Context: """{context}""" Instructions: Using the provided context, write a comprehensive reply to the given query. Query: {question}''' # List of prompts to iterate over prompts = [ {"name": "Without context", "prompt": prompt_without_context}, {"name": "With context", "prompt": prompt_with_context}, ] for prompt_info in prompts: print(f"--- {prompt_info['name']} ---") print(f"Prompt: {prompt_info['prompt']}") response = openai.ChatCompletion.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt_info['prompt']}, ] ) # Extract the answer from the response answer = response.choices[0].message.content.strip() # Print the answer print(f"Answer: {answer}\n")



 --- Without context --- Prompt: What is the reason for the failure of Silicon Valley Bank and when did it happen? Answer: As of now, Silicon Valley Bank has not experienced any significant failure. Silicon Valley Bank, founded in 1983, is a successful and high-performing financial institution that specializes in offering banking services to technology and life science companies and venture capital firms. The bank has grown consistently and continues to operate effectively, serving its clients and staying relevant in the industry.



 --- With context --- Prompt: Context: """ Last week we heard of the failure of the Silicon Valley Bank (SVB). And it is the 2nd largest bank to shut down in the US since 2000. While that is sad, miserable, and pathetic, I want to show you something under the hood — the real reason the bank failed. """ Instructions: Using the provided context, write a comprehensive reply to the given query. Query: What is the reason for the failure of Silicon Valley Bank and when did it happen? Answer: Silicon Valley Bank (SVB) failed last week, making it the 2nd largest bank to shut down in the US since 2000. The precise reasons behind the bank's failure have not been provided in the given context, but it is implied that there is a significant underlying cause for its collapse. To fully understand the situation, it would be helpful to obtain more information about the bank's performance, financial stability, and any recent events that may have contributed to the failure.


फ़ाइन ट्यूनिंग

फ़ाइन-ट्यूनिंग एक अन्य तकनीक है जो GPT की सटीकता और विश्वसनीयता में उल्लेखनीय सुधार करने का काम कर सकती है। फाइन-ट्यूनिंग अतिरिक्त प्रशिक्षण डेटा प्रदान करने की प्रक्रिया है ताकि मॉडल विशिष्ट कार्य या डोमेन के अनुकूल हो और उत्पन्न पाठ की सटीकता और प्रासंगिकता में सुधार हो। प्रेरणा वास्तव में किसी भी अन्य गहरे सीखने वाले तंत्रिका नेटवर्क से अलग नहीं है।


इस प्रक्रिया के लिए आवश्यक है कि डोमेन-विशिष्ट डेटा को पूर्व-प्रशिक्षित मॉडल में तब तक फीड किया जाए जब तक कि वह लक्ष्य कार्य के लिए अधिक प्रासंगिक और सटीक पाठ उत्पन्न करना न सीख ले।


मानव प्रतिक्रिया से सुदृढीकरण सीखना (आरएलएचएफ)

ChatGPT को शानदार बनाने में RLHF अत्यंत उपयोगी था। देखिए लिएंड्रो वॉन वेरा ने चैटजीपीटी से आरएलएचएफ के बारे में हमें समझाने के लिए कहा ; इसने वास्तव में बहुत अच्छा काम किया!





जैसा कि आपने ऊपर देखा होगा, "जैसे मैं पाँच हूँ" आदि को जोड़ना एक ट्रिक है, स्पष्टीकरण को सरल बनाने का एक शानदार तरीका है।


आरएलएचएफ एक शक्तिशाली दृष्टिकोण है जिसे जीपीटी-आधारित मॉडलों के प्रदर्शन और सुरक्षा को बढ़ाने के लिए नियोजित किया जा सकता है। मॉडल को मानव जनित फीडबैक के माध्यम से ठीक किया गया है, जो इसे वास्तविक दुनिया के उदाहरणों और उपयोगकर्ता इंटरैक्शन से सीखने में मदद करता है। इस प्रक्रिया में मानव-रैंक वाले गुणवत्ता स्कोर या तुलना के साथ-साथ मॉडल-जनित प्रतिक्रियाओं का डेटासेट एकत्र करना शामिल है, जिसका उपयोग मॉडल के मापदंडों को अनुकूलित करने के लिए किया जाता है।


प्रतिक्रिया गुणवत्ता में सुधार के साथ-साथ एआई मतिभ्रम की घटना को कम करने के लिए आरएलएचएफ को चैटबॉट्स और एआई सहायकों सहित वास्तविक दुनिया के कई अनुप्रयोगों में सफलतापूर्वक नियोजित किया गया है। प्रशिक्षण प्रक्रिया में मानव प्रतिक्रिया को शामिल करके, RLHF मॉडल को अधिक सटीक, प्रासंगिक-प्रासंगिक और सुरक्षित प्रतिक्रिया उत्पन्न करने के लिए सिखाता है, जो अंततः एक बेहतर उपयोगकर्ता अनुभव और बढ़ी हुई विश्वसनीयता की ओर ले जाता है। महत्वपूर्ण रूप से, यह दृष्टिकोण डेवलपर्स को गलत या भ्रामक जानकारी के निर्माण से संबंधित चिंताओं को दूर करने के साथ-साथ जीपीटी-आधारित मॉडल की शक्ति का उपयोग करने में सक्षम बनाता है।


जब तक हम डोमेन को जानते हैं, हम मॉडल को प्रशिक्षित करने में सक्षम हैं कि हमें इसकी आवश्यकता कैसे है। हम इसे "मुझे नहीं पता" का जवाब देने या कुछ विषयों को अनदेखा करने के लिए प्रशिक्षित कर सकते हैं। OpenAI अपने रॉ मॉडल्स को प्रोडक्शन के लिए तैयार करने के लिए RLGH का इस्तेमाल कर रहा है।


यहाँ कुछ नमूना परिणाम दिए गए हैं:




मॉडल डिजाइन करना

आइए GPT के लिए फ़ाइन-ट्यूनिंग प्रक्रिया का निर्माण करके एक व्यावहारिक उदाहरण में गोता लगाएँ। हम एक परिभाषित डेटासेट का उपयोग करके मॉडल को प्रशिक्षित करेंगे, जिससे उसे उस विशिष्ट डोमेन से संबंधित प्रश्नों का उत्तर देना सिखाया जाएगा।


निम्नलिखित आरेख पर विचार करें:



प्रक्रिया में ये घटक शामिल हैं:


  1. स्रोत डेटासेट : विचाराधीन डोमेन के लिए विशिष्ट प्रशिक्षण फ़ाइलों का संग्रह।
  2. क्यू एंड ए जेनरेटर : एक GPT-4 आधारित समाधान जो स्रोत डेटासेट से प्रश्न और उत्तर उत्पन्न करने के लिए संदर्भ इंजेक्शन को नियोजित करता है।
  3. क्यू एंड ए नमूने : प्रशिक्षण डेटा का उपयोग मॉडल को ठीक करने के लिए किया जाता है।
  4. फ़ाइन-ट्यूनिंग : GPT-3 पाठ-पूर्णता मॉडल को डेटासेट के आधार पर समायोजित किया जाता है।
  5. बेंचमार्क क्यू एंड ए : मॉडल के प्रदर्शन का मूल्यांकन करने के लिए प्रश्नों और उत्तरों का एक सेट उपयोग किया जाता है।
  6. बेंचमार्किंग : बेंचमार्क क्यू एंड ए से प्रश्नों को इनपुट करने वाली प्रक्रिया को फाइन-ट्यूनिंग करना और उत्पन्न प्रतिक्रियाओं की वैधता का आकलन करना।


हम GPT-3 टेक्स्ट-पूर्णता मॉडल का उपयोग करना जारी रखते हैं क्योंकि GPT-4 फ़िलहाल फ़ाइन-ट्यूनिंग प्रक्रिया का समर्थन नहीं करता है।


स्रोत डेटासेट

यह सुनिश्चित करने के लिए कि GPT उस डेटासेट से अपरिचित है जिसका हम उपयोग करना चाहते हैं, हमें आदर्श रूप से सितंबर 2021 के बाद की घटनाओं से संबंधित डेटा को आकर्षित करना चाहिए, GPT की ज्ञान कटऑफ तिथि।


उदाहरण के लिए, मैं अक्सर वेब एप्लिकेशन बनाने के लिए नेक्स्ट.जेएस का उपयोग करता हूं, और वर्सेल ने 2022 में नेक्स्ट.जेएस संस्करण 13 जारी किया। इसे सत्यापित करने के लिए, आइए चैटजीपीटी से नेक्स्ट.जेएस 13 की रिलीज की तारीख के बारे में पूछें और देखें कि यह किस जानकारी को खींच सकता है। विषय:




अच्छा! मेरा लक्ष्य यह है कि परिणामी मॉडल इस मौजूदा मॉडल की तुलना में Next.js 13 और इसके साथ काम करने के तरीके के बारे में अधिक जानता है। आप इस बारे में पढ़ सकते हैं कि मैंने अगले.जेएस 13 ब्लॉग पोस्ट के आधार पर डेटासेट कैसे तैयार किया:





नमूने जनरेटर

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


यहाँ एक कोड नमूना है:


 def generate_qa(filepath): article = read_file(filepath)[:MAX_CONTENT_LENGTH] content = f'''Content for {filepath}: {article} Instructions: Generate question and answer based on Content for {filepath}. Structure it as: Q: <question> A: <answer> ''' questions_answers = [] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful software developer who specialize in next.js and react."}, {"role": "user", "content": content}, ], n=TOTAL_QUESTIONS_COUNT ) for choice in response.choices: qa = extract_qa_from_content(choice.message.content.strip()) questions_answers.extend(qa) return questions_answers


पूरा समाधान यहां पाया जा सकता है।


हम प्रत्येक प्रशिक्षण फ़ाइल के लिए कम से कम 100 प्रश्न-उत्तर जोड़े उत्पन्न करना चाहते हैं।

आउटपुट को में सेव किया जाना चाहिए जेएसओएनएल दस्तावेज़ . प्रत्येक संकेत को एक ही पैटर्न के साथ समाप्त करना महत्वपूर्ण है। हम विभाजक के रूप में \n\n###\n\n से समाप्त होंगे। आप इस फ़ाइल में परिणामी डेटासेट यहाँ पा सकते हैं: ठीक_ट्यूनिंग_डेटासेट.jsonl .


झूठे प्रश्न अंतर्ग्रहण

हम चाहते हैं कि मॉडल सॉफ्टवेयर डेवलपमेंट और नेक्स्ट.जेएस से संबंधित किसी भी प्रश्न का वास्तविक उत्तर "मुझे नहीं पता" हो। यह परीक्षण करने के लिए कि क्या प्रश्न next.js से संबंधित है या नहीं, हम एक next.js प्रश्न क्लासिफायर को एकीकृत करके इसे प्राप्त कर सकते हैं। वैकल्पिक रूप से, यदि हम एक साधारण आर्किटेक्चर चाहते हैं, तो हम अपनी फाइन-ट्यूनिंग प्रक्रिया में अतिरिक्त प्रशिक्षण डेटा जोड़ सकते हैं।


इसके अलावा, भले ही सवाल नेक्स्ट.जेएस से संबंधित था, हम नहीं चाहते कि हमारा सिस्टम गैर-सनसनीखेज सवालों का जवाब दे: "नेक्स्ट.जेएस फ्रेमवर्क कब 1 बिलियन यूजर्स तक पहुंचेगा?" हम चाहते हैं कि मॉडल इस प्रश्न का उत्तर "मुझे नहीं पता" के साथ दे।


कोड नमूना:

 NON_NEXTJS_Q_A_PROMPT = """Create a series of random questions and answers that are not related to the Next.js framework. Each question should be followed by a clear answer stating that it is not relevant to Next.js. For example: <question>What is the capital of Ukraine?</question> <answer>This question is not related to Next.js.</answer> <question>What is Spring Framework?</question> <answer>It is not related to Next.js.</answer> Feel free to generate any type of questions you like, as long as the answer indicates that it is not related to the Next.js framework.""" def generate_random_qa(prompt): questions_answers = [] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful software developer who specialize in next.js and react."}, {"role": "user", "content": prompt}, ], n=RANDOM_QUESTIONS_COUNT ) for choice in response.choices: qa = extract_qa_from_content(choice.message.content.strip()) questions_answers.extend(qa) return questions_answers



मैंने मॉडल को दिखाने के लिए 100 प्रश्न और उत्तर उत्पन्न किए कि हम चाहते हैं कि यह केवल Next.js से संबंधित किसी भी प्रश्न का उत्तर दे और मतिभ्रम को कम करने के लिए "मुझे नहीं पता" का उत्तर देना पूरी तरह से ठीक है। परिणामी प्रशिक्षण डेटासेट यहाँ सूचीबद्ध है ठीक ट्यूनिंग डेटासेट.jsonl .


फ़ाइन ट्यूनिंग

अंत में, एक प्रशिक्षण डेटासेट बनाने के बाद (इस प्रक्रिया पर अतिरिक्त विवरण के लिए, OpenAI से आधिकारिक गाइड देखें), हम फाइन-ट्यूनिंग के लिए तैयार हैं।


अफसोस की बात है कि ऐसे कई मॉडल नहीं हैं जिनसे हम फ़ाइन-ट्यून कर सकें। आप सभी मॉडलों की एक सूची openai api models.list' with '“allow_fine_tuning”: true, खींचकर देख सकते हैं।


फाइन-ट्यूनिंग प्रक्रिया के भीतर, हम सीखने की दर आदि के साथ खेल सकते हैं, लेकिन मेरे अनुभव से, यह वास्तव में परिणामी स्कोर को प्रभावित नहीं करता है। और वास्तविक डेटासेट को प्रशिक्षित करना पहले से ही महंगा हो सकता है, इसलिए अतिरिक्त मापदंडों के साथ खेलना इसके लायक नहीं हो सकता है।


फ़ाइन-ट्यूनिंग प्रक्रिया की अवधि मॉडल (डेविन्सी, एडा, आदि) पर निर्भर करती है। हमारे 1511 मामलों और 907 KB के डेटासेट पर, लगभग एक घंटे का समय लगा।


बेंच मार्किंग

याद रखें कि हम पाठ पूर्णता मॉडल के साथ काम कर रहे हैं, न कि चैट या निर्देश मॉडल के साथ। और हमारे पाठ पूर्णता मॉडल को उत्तर प्रारूप का उपयोग करके प्रतिक्रिया देने के लिए ट्यून किया गया है। साथ ही, हमारा मॉडल इनपुट प्रॉम्प्ट के समाप्त होने की प्रतीक्षा करता है ?\n\n###\n\n । यदि नहीं, तो आउटपुट अनपेक्षित हो सकता है, लेकिन सबसे अधिक संभावना है कि मॉडल प्रॉम्प्ट टर्मिनेटर के साथ प्रॉम्प्ट को पूरा करने के लिए कुछ सामग्री उत्पन्न करने का प्रयास करेगा।


आइए अनुमान लगाने का प्रयास करें कि मॉडल निम्नलिखित प्रश्न सेटों के साथ कैसा व्यवहार करेगा।


सेट 1. सही प्रश्न

हम उम्मीद करते हैं कि मॉडल प्रदान की गई सामग्री के आधार पर उचित प्रतिक्रिया देगा:


 proper_questions = [ "When Next.js 13 was released?", "Is Next.js 14 already released?", "How Next.js 13 is different from Next.js 12?", "How routing is different in Next.js 13 compared to Next.js 12?", "How to prevent Next.js file component from using React Server Components?", "What is Turbopack?" ]


मैंने इन सवालों पर तापमान = 0.3 के साथ दो मॉडल रन किए।


सही उत्तरों की सूची:

 #1 Q: When Next.js 13 was released? A: Next.js 13 was released on October 2022. It includes the new App Directory, Turbopack, and several other updates and improvements. #3 Q: How Next.js 13 is different from Next.js 12? A: Next.js 13 has been rebuilt from the ground up to be faster and more reliable. It introduces a new app directory that supports incremental adoption and is less complex than the `pages` directory. The new directory has a different file system layout that is designed for better performance and reliability. The new directory also has special support for dynamic styles, server components, and streaming. #4 Q: How routing is different in Next.js 13 compared to Next.js 12? A: In Next.js 13, the `app` directory replaces the `pages` directory. This means that routing is handled via the file path each `page.tsx` is located in. Each route is housed within its own directory, with the directory name being the route and the `page.tsx` being its index that gets rendered at that route.


आंशिक रूप से सही प्रतिक्रियाओं की सूची:

 #2 Q: Is Next.js 14 already released? A: No, Next.js 14 is not released yet. It will be released in the coming months. #5 Q: How to prevent Next.js file component from using React Server Components? A: To prevent Next.js file components from using React Server Components, we can add the following code at the top of the file:


// @ प्रतिक्रिया-सर्वर का समर्थन करता है // ClientComponentHere आयात करें


 This code tells Next.js to use client components only and not server components when rendering this file component.


मैं सही उत्तर के लिए 1, आंशिक रूप से सही उत्तर के लिए 0 और गलत उत्तर के लिए -2 दूंगा।


मैंने इन सवालों पर तापमान = 0.7 के साथ दो मॉडल रन किए।

सही उत्तरों की सूची:

 #2 Q: Is Next.js 14 already released? A: No, Next.js 14 is not released yet. This blog post is about the new features coming to Next.js 13 with React 18. #3 Q: How Next.js 13 is different from Next.js 12? A: Next.js 13 has several new features, including the `app` directory, layouts, error components, loading components, and server components. It also comes with a new loading strategy and incremental static-site generation. #4 Q: How routing is different in Next.js 13 compared to Next.js 12? A: Routing in Next.js 13 no longer requires a `pages` directory. Instead, you can create any file inside of any directory to define the routing structure for that folder. Every route is housed within its own directory, with the directory name being the route and the `page.tsx` being its index render at that route. #5 Q: How to prevent Next.js file component from using React Server Components? A: To prevent Next.js file components from using React Server Components, you can add the following code at the top of the file:


"क्लाइंट का उपयोग करें";

 #6 Q: What is Turbopack? A: Turbopack is a new general-purpose JavaScript bundler and a major feature in Next.js 13. It is intended as a Webpack replacement, and although it's released as alpha, you can use Turbopack now as the dev-mode bundler from Next.js 13 forward. Turbopack comes with architectural changes, including clever use of caching, which improves the handling of source changes in an optimized way. #1 Q: When Next.js 13 was released? A: Next.js 13 was released in October 2022. #2 Q: Is Next.js 14 already released? A: No. Next.js 14 is still in beta, but with the release of Next.js 13.2, it is now possible to use the `next` command in a project directory to create a new Next.js application using the latest version. #4 Q: How routing is different in Next.js 13 compared to Next.js 12? A: Routing in Next.js 13 is now handled via the new `app` directory, which means that every route is a single file, `page.js`. Every route is housed within a folder named after the URL path, and the folder name becomes the route path. For example, `app/profile/settings/page.js` is the file that controls the `/profile/settings` route. #5 Q: How to prevent Next.js file component from using React Server Components? A: To prevent Next.js file components from using React Server Components, you can add the following code at the bottom of the file:


// इस फ़ाइल का उपयोग सर्वर के निर्यात डिफ़ॉल्ट फ़ंक्शन सर्वरकंपोनेंट {// ...} को रेंडर करने के लिए किया जाता है


 If you don't add this code, the file component will use the React Server Components by default. #6 Q: What is Turbopack? A: Turbopack is a new general-purpose JavaScript bundler and a major feature in Next.js 13. Using the Turbopack alpha with Next.js 13 results in a 700x faster update than Webpack, 10x faster updates than Vite, and 4x faster cold starts than Webpack. Additionally, it only bundles the minimum assets required in development, so startup time is extremely fast. Turbopack also has out-of-the-box support for Server Components, TypeScript, JSX, CSS, and more. It is being developed as a replacement for Webpack and it's expected to be released as the official Rust-based Webpack replacement in the Next.js 13 stable release.


आंशिक रूप से सही प्रतिक्रियाओं की सूची:

 #3 Q: How Next.js 13 is different from Next.js 12? A: Next.js 13 is different from Next.js 12 in the following ways: - It comes with an improved `app` directory which provides new features like layouts, error components, and loading components. - It introduces the `loading.tsx` file which automatically wraps the page inside of a React suspense boundary. - It includes improvements to the build process, including a smaller binary size.


गलत प्रतिक्रियाओं की सूची:

 #1 Q: When Next.js 13 was released? A: Next.js 13 was released in November of 2020.


आपने देखा होगा कि मॉडल अभी भी उच्च तापमान पर मतिभ्रम कर सकता है। प्रतिक्रिया पर एक नज़र डालें "Next.js 13 को 2020 के नवंबर में रिलीज़ किया गया था।"


दो अलग-अलग तापमान रन के आधार पर, हम देख सकते हैं कि यदि हम चाहते हैं कि हमारा सहायक अधिक सटीक हो, तो हमें तापमान कम करने की आवश्यकता है। इसलिए, हम निम्नलिखित सभी परीक्षणों के लिए तापमान 0.3 का उपयोग करेंगे और 10/12 का ट्रैकिंग स्कोर रखेंगे। किसी भी आउटपुट को अधिक स्थिर बनाने के लिए तापमान को 0.3 पर सेट करने की भी सिफारिश की जाती है और इसलिए इनपुट को फिर से चलाया जा सकता है।


सेट 2. आउट-ऑफ-स्कोप प्रश्न

हमने अपने मॉडल को केवल जावास्क्रिप्ट, नेक्स्ट.जेएस और रिएक्ट के बारे में तकनीकी सवालों का जवाब देने के लिए प्रशिक्षित किया है।


 out_of_scope_questions = [ "What is the population of the United States?", "How to cook a steak?", "What is native vector database?", "Could you please generate a random number?", "What is a space-time continuum?", ]


सही उत्तरों की सूची:

 #1 Q: What is the population of the United States? A: This question is not related to Next.js. #2 Q: How to cook a steak? A: This question is not related to Next.js. #5 Q: What is a space-time continuum? A: This question is not related to Next.js. #1 Q: What is the population of the United States? A: This question is not related to Next.js. #2 Q: How to cook a steak? A: I do not know. #5 Q: What is a space-time continuum? A: This question is not related to Next.js.


आंशिक रूप से सही प्रतिक्रियाओं की सूची:

 #3 Q: What is native vector database? A: Native vector database is a new feature in Next.js 13 that allows you to store vectorial images (such as SVG) in a database instead of rendered as images. This feature is available in Next.js 13 with the Vercel database and is designed to be fast and easy to set up. #4 Q: Could you please generate a random number? A: Yes, I can generate a random number. #3 Q: What is native vector database? A: Native vector database is a new feature in Next.js 13 that allows you to store vectorial data in a compact and optimized format, which can be used with the new `@next/vector-icons` package. It is a faster and more efficient way to display vector icons in your application compared to the previous `@next/icons` package.


एक गलत प्रतिक्रिया:

 #4 Q: Could you please generate a random number? A: Sure. Here you go:

एनपीएम रन जनरेट

 This will generate a random number in the range of 1 to 10.


अधिकतर, मॉडल अच्छा काम करता है, लेकिन फिर भी, यह मतिभ्रम कर सकता है। स्कोर 4/10 है। हम यहां उचित प्रश्नों की तुलना में बहुत बुरा कर रहे हैं।


सेट 3. अनुचित प्रश्न

हमने अपने मॉडल को सवालों के जवाबों को पूरा करने के लिए प्रशिक्षित किया। लेकिन क्या होगा अगर हम कुछ यादृच्छिक जोड़ने की कोशिश करें? कुछ अजीब के लिए तैयार हो जाओ।


 not_questions = [ "Generate Next.js index page", "Suggest how no name next.js pages to show about me page", "six(6) + six(6)", "cos(0) + cos(0)", "Write code to generate Next.js index page", "Aaaaaughibbrgubugbugrguburgle!?", "Mmmm mrrrggk", ] process_questions(not_questions, is_accumulate = False)


सही उत्तरों की सूची:

 #3 Q: six(6) + six(6) A: This is not a valid mathematical expression. #6 Q: Aaaaaughibbrgubugbugrguburgle!? A: I do not understand. #7 Q: Mmmm mrrrggk A: I do not understand. #6 Q: Aaaaaughibbrgubugbugrguburgle!? A: I have no idea what that means. #3 Q: six(6) + six(6) A: This is not a valid mathematical expression.


आंशिक रूप से सही प्रतिक्रियाओं की सूची:

 #1 Q: Generate Next.js index page A: Generate a Next.js `index.js` file with the given directory path.


गलत प्रतिक्रियाओं की सूची:

 #2 Q: Suggest how no name next.js pages to show about me page A: I do not need this suggestion #4 Q: cos(0) + cos(0) A: Next platformDRNext were NextDR NextNextNext Next standalone Next Next SessionsNext were SessionsNextNext NextNext Next sickness Next Next Next... #5 Q: Write code to generate Next.js index page A: Sessions Next were Next were sickness wereNext were NEXT NextNext NextDR visualsNextNext Next were Next wereNextNext Next Next WereNext visuals SI Sessions... #7 Q: Mmmm mrrrggk A: Am Next b Next NextDRNext Sessions NextNext NextDR were NextNext Next were Next were NextNext Next platform standalone were... #1 Q: Generate Next.js index page A: This command will generate an index.js file inside the `pages/` directory. You can then use this file to render the index page of your app. #2 Q: Suggest how no name next.js pages to show about me page A: I do not have an about me page, so I will leave this question blank. #4 Q: cos(0) + cos(0) A: This expression is not a constant expression. #5 Q: Write code to generate Next.js index page A: Next.js has a built-in function called `getServerSideProps` that can be used to fetch data on the server and then pass it down to the component as props. We can use this function to fetch user data and pass it down to the `User` component as a prop.


 export default function User({ user }) { return <h1>User: {user.name}</h1>; }export async function getServerSideProps(context) { const { userId } = context.params; const res = await fetch(https://api.example.com/users/${userId}); const user = await res.json();


अंतिम स्कोर -11/14 है, मूल रूप से 0/14। जब भी हम प्रश्नों को ठीक से तैयार नहीं करते हैं तो मॉडल बिल्कुल भयानक होता है।


ओपनएआई इवल्स

OpenAI ने ओपन-सोर्स किया है ओपनएआई इवल्स , एक सॉफ्टवेयर ढांचा जो मॉडलों के मूल्यांकन और उनके प्रदर्शन नमूना-दर-नमूने की जांच के लिए बेंचमार्क के निर्माण और निष्पादन की सुविधा प्रदान करता है। OpenAI द्वारा Evals को कमजोरियों का पता लगाने और प्रतिगमन की रोकथाम के माध्यम से अपने मॉडल के विकास को चलाने के लिए नियोजित किया जाता है। बदले में, हम इवल्स का उपयोग मॉडल संस्करणों में प्रदर्शन की निगरानी करने और उत्पाद एकीकरण विकसित करने के लिए कर सकते हैं।


ओपनएआई इवल्स चैट और गैर-चैट मॉडल दोनों के साथ काम करता है, लेकिन चूंकि ओपनएआई चैट मॉडल पर ध्यान केंद्रित करता है, इसलिए आपको चैट-आधारित प्रारूप इनपुट में मूल्यांकन के लिए डेटासेट तैयार करने की आवश्यकता होगी। आज आप इसका प्रयोग शुरू कर सकते हैं modelpec_extra_options मॉडल मापदंडों को नियंत्रित करने के लिए 'ओवाइवल' सीएलआई में। अनुमानित परिणाम प्राप्त करने के लिए तापमान को 0 पर सेट करने का प्रयास करें।


फ़ाइन-ट्यूनिंग प्रक्रिया में और दौर

डेटा एक अच्छी तरह से काम कर रहे और विश्वसनीय मॉडल बनाने की प्रक्रिया के केंद्र में है। यह बिना कहे चला जाता है कि वर्तमान में हमारे पास नेक्स्ट.जेएस 13 फ्रेमवर्क क्यूए बॉट के लिए जो मॉडल है वह अभी उत्पादन के लिए तैयार नहीं है। हमें टर्निंग डेटासेट को विकसित करने और मॉडल को बेहतर तरीके से यह सिखाने की जरूरत है कि अधिक नमूनों का उपयोग करके डोमेन से बाहर के सवालों का जवाब कैसे दिया जाए। हमें एक इवल रजिस्ट्री बनानी चाहिए और मॉनिटर करना चाहिए कि हमारा मॉडल वर्तमान में कितना अच्छा प्रदर्शन करता है।


इसके अलावा, हम अपने मॉडल को गैर-प्रश्न प्रारूप में इनपुट को संभालने के लिए प्रशिक्षित करना चाहते हैं और यदि हम इसे उत्पादन के लिए तैयार कर रहे हैं, तो हमारे डेटासेट में आदर्श रूप से कोड नमूनों के कुछ रिपॉजिटरी भी होने चाहिए। यह हिस्सा संपूर्ण फाइन-ट्यूनिंग प्रक्रिया का लगभग 60% हिस्सा लेता है। इसके अलावा, हमें मॉडल तैयार करने के लिए और अधिक RLHF की आवश्यकता हो सकती है ताकि हम कुछ सवालों के जवाब उस तरह से दे सकें जैसा हम चाहते हैं।


फाइन-ट्यून मॉडल के बारे में अच्छी बात यह है कि वे लगातार फाइन-ट्यून करने योग्य होते हैं। इसलिए, कोई कई बार ट्यून कर सकता है, हालांकि यह ध्यान दिया जाना चाहिए कि फाइन-ट्यूनिंग पहले से ट्यून किए गए परिणामों को प्रभावित कर सकती है, इसलिए ऐसा करने के लिए हमेशा एक अच्छा कारण होना चाहिए, जिससे प्रशिक्षण की लागत और अवधि भी कम हो जाती है।


अंत में, हमें याद रखना चाहिए कि हम पहले से ही प्रशिक्षित मॉडल के ऊपर निर्माण कर रहे हैं और ठीक-ठाक मॉडल की सीखने की क्षमता अपेक्षाकृत सीमित है। यदि हमारे डोमेन का दायरा मूल GPT मॉडल से बहुत परिचित नहीं है, तो किसी रूप में संदर्भ इंजेक्शन का उपयोग करना बेहतर होगा क्योंकि फ़ाइन-ट्यूनिंग अपर्याप्त या अनावश्यक भी हो सकती है।


और कुछ अंतिम साधारण तथ्य जो ध्यान देने योग्य हैं:


  • फाइन-ट्यूनिंग अपेक्षाकृत सरल वर्गीकरण कार्यों के लिए बहुत अच्छा काम करता है।
  • पहले Ada जैसे छोटे मॉडल का उपयोग करने का प्रयास करें। वे अनुरोधों को तेज़ी से निष्पादित करते हैं और अधिक स्थिर, सस्ता, प्रशिक्षित करने के लिए तेज़ और चलाने के लिए सस्ता हैं।
  • बड़े मॉडल मत बनाओ। यदि आपका डेटासेट "विशाल" और वियोज्य है, तो एकाधिक बनाएं और प्रत्येक को अलगाव में प्रशिक्षित करें।





संदर्भ

  1. https://github.com/vercel/next.js/tree/canary/docs
  2. https://openai.com/research/gpt-4
  3. https://towardsdatascience.com/chatgpt-insists-i-am-dead-and-the-problem-with-language-models-db5a36c22f11
  4. https://mpost.io/gpt-4-inherits-hallucinating-facts-and-reasoning-errors-from-earlier-gpt-models/
  5. https://arxiv.org/abs/2303.12712
  6. https://levelup.gitconnected.com/the-surcreasing-things-chatgpt-cant-do-yet-4362842da5b7
  7. https://digitalbunker.dev/understanding-the-inner-workings-of-bloom-filters/
  8. https://huggingface.co/blog/rlhf