Fine-tuning बनाम RAG पर हर किसी की अपनी राय है। किसी भी AI फ़ोरम को स्क्रॉल करें और आपको आर्किटेक्चर डायग्राम और बेंचमार्क दावों से भरी गरमागरम बहसें मिल जाएंगी। उन कमेंट्स को लिखने वाले अधिकांश लोगों ने कभी अपने डेटा पर मॉडल को ट्रेन नहीं किया है और न ही प्रोडक्शन में किसी RAG पाइपलाइन को चुपचाप विफल होते देखा है।
मैंने महीनों तक प्रयोग किए। सटीक रूप से कहें तो बारह प्रयोग। मैंने LLMs को फाइन-ट्यून किया। मैंने embedders को फाइन-ट्यून किया। मैंने छह अलग-अलग RAG कॉन्फ़िगरेशन बनाए। डोमेन वित्तीय भविष्यवाणी (financial prediction) था, विशेष रूप से अव्यवस्थित ऐतिहासिक डेटा से शोर भरे बाजार परिणामों का पूर्वानुमान लगाने की कोशिश करना। मैंने खुद को सख्त सांख्यिकीय मानकों पर रखा क्योंकि मैं वास्तविक उत्तर चाहता था, न कि ब्लॉग पोस्ट के दावे।
अधिकांश प्रयोग विफल रहे। वे विफलताएं किसी भी भाग्यशाली सफलता की तुलना में कहीं अधिक उपयोगी साबित हुईं।
सिग्नल के बारे में कड़वा सच
गहराई में जाने से पहले, यहाँ वह सबक है जो सब कुछ जोड़ता है। Fine-tuning और RAG मॉडल के जानने या देखने की चीज़ों को बदलने के उपकरण हैं। वे कोई जादुई छड़ी नहीं हैं जो शून्य से सिग्नल पैदा कर दें। यदि आपके मूल डेटा में कोई वास्तविक, दोहन योग्य पैटर्न (exploitable pattern) नहीं है, तो ये तकनीकें उसे नहीं बनाएंगी। वे बस आपको रैंडम शोर (random noise) के इर्द-गिर्द एक अधिक विश्वसनीय कहानी बनाने में मदद करेंगी।
वित्तीय भविष्यवाणी में, यह जाल विशेष रूप से खतरनाक है। बाजार स्वभाव से ही शोर भरे (noisy) होते हैं। जब आप ऐतिहासिक मूल्य डेटा (historical price data) के साथ एक शक्तिशाली LLM जोड़ते हैं और उसमें रिट्रीवल या फाइन-ट्यूनिंग जोड़ते हैं, तो आपको स्वचालित रूप से कोई बढ़त (edge) नहीं मिलती। आपको सिक्के उछालने के परिणामों को तर्कसंगत बनाने का एक अधिक स्पष्ट तरीका मिल जाता है। यदि सिग्नल वहां नहीं है, तो मॉडल आपको झूठ बोलने में बहुत कुशल हो जाता है। आपको पहले इसकी जांच करने की आवश्यकता है।
जब बड़ा मॉडल सीखने के बजाय रटने लगे
मेरी पहली बड़ी गलती यह मान लेना थी कि स्केल (scale) सब कुछ ठीक कर देगा। मैंने ठीक 777 ट्रेनिंग उदाहरणों पर 7 बिलियन पैरामीटर वाले मॉडल के मुकाबले 14 बिलियन पैरामीटर वाले मॉडल का परीक्षण किया। बड़े मॉडल ने काफी बेहतर eval_loss हासिल किया। इसकी perplexity कम हो गई। कागज़ पर, यह सीख रहा था।
फिर मैंने विन रेट (win rate) देखा, वह वास्तविक दर जिस पर मॉडल ने सही भविष्यवाणियां कीं। 14B मॉडल का प्रदर्शन 7B मॉडल की तुलना में काफी खराब रहा। इसने ट्रेनिंग के शोर (noise) को रट लिया था। 3,000 से कम उदाहरणों के साथ, बड़े मॉडल में डेटा के स्पूरियस कोरिलेशन (spurious correlations) और रैंडम उतार-चढ़ाव पर ओवरफिट (overfit) होने के लिए पर्याप्त क्षमता थी। इसने अनिवार्य रूप से शोर का एक लुकअप टेबल (lookup table) बना लिया था।
7B मॉडल, अपनी कम क्षमता के कारण, व्यापक पैटर्न सीखने के लिए मजबूर था। वह हर छोटी-बड़ी विसंगति (idiosyncrasy) को रटने का जोखिम नहीं उठा सकता था। यदि आप छोटे डेटासेट के साथ काम कर रहे हैं, तो छोटे मॉडलों से शुरुआत करें। स्केल मुफ्त नहीं है। जब डेटा कम हो, तो यह सक्रिय रूप से आपको नुकसान पहुँचा सकता है।
लॉस कर्व पर भरोसा न करें
मैंने लॉस कर्व्स को घूरना बंद करना सीख लिया। एक मॉडल अपने टोकन-लेवल क्रॉस-एन्ट्रॉपी (cross-entropy) में सुधार कर सकता है, जबकि उस वास्तविक व्यावसायिक निर्णय में खराब हो सकता है जिसकी आपको परवाह है। ऐसा इसलिए होता है क्योंकि लैंग्वेज मॉडलिंग लॉस अगले टोकन की सटीक भविष्यवाणी करने के लिए पुरस्कृत करता है। कई डोमेन में, विशेष रूप से फाइनेंस में, सही निर्णय और सबसे संभावित अगला टोकन एक ही चीज़ नहीं होते हैं।
मैंने ऐसे मॉडल देखे जो ट्रेनिंग प्रोज़ (prose) को खूबसूरती से दोहराते थे लेकिन हर बार गलत दिशात्मक दांव (directional bet) चुनते थे। लॉस कम हो गया। उसके साथ ही बैंकरोल (bankroll) भी कम हो गया। अपने वास्तविक दुनिया के कार्य के आधार पर अपना मूल्यांकन मीट्रिक (evaluation metric) चुनें। यदि आप दस्तावेज़ों को रैंक कर रहे हैं, तो रैंकिंग की गुणवत्ता मापें। यदि आप परिणामों की भविष्यवाणी कर रहे हैं, तो निर्णय की सटीकता मापें। कभी भी eval_loss को अपने लिए मॉडल चुनने न दें।
फाइन-ट्यूनिंग केवल विदेशी शब्दावली पर ही चमकती है
मैंने दो अलग-अलग प्रकार के टेक्स्ट पर एम्बेडर फाइन-ट्यूनिंग परीक्षण किए। पहले में मानक वित्तीय समाचार और सार्वजनिक फाइलिंग का उपयोग किया गया था। फाइन-ट्यून किया गया एम्बेडर और ऑफ-द-शेल्फ (off-the-shelf) संस्करण समान रूप से प्रदर्शन करते थे। बेस मॉडल पहले से ही इस भाषा को जानता था। मैं परिचित क्षेत्र में ट्यूनिंग कर रहा था।
दूसरा डेटासेट निजी शब्दावली (jargon), आंतरिक कोडनेम और डोमेन-विशिष्ट संक्षिप्त शब्दों से भरा था जो कभी भी खुले इंटरनेट पर नहीं दिखे। यहाँ, फाइन-ट्यूनिंग ने रिट्रीवल सटीकता में 79 प्रतिशत का सुधार किया। बेस मॉडल को बस यह नहीं पता था कि इन शब्दों का क्या अर्थ है। फाइन-ट्यूनिंग ने उसे स्थानीय शब्दावली सिखाई।
इसने मेरे लिए पूरे अभ्यास को एक नया रूप दे दिया। फाइन-ट्यूनिंग का अर्थ मॉडल को किसी सामान्य अर्थ में स्मार्ट बनाना नहीं है। यह उसे एक नई शब्दावली, एक नया फॉर्मेट, या एक हाउस स्टाइल सिखाने के बारे में है। यदि आपका डेटा इंटरनेट जैसा दिखता है, तो फाइन-ट्यूनिंग छोड़ दें। यदि आपका डेटा ऐसी भाषा बोलता है जिसे बेस मॉडल ने कभी नहीं देखा है, तो फाइन-ट्यूनिंग अनिवार्य हो जाती है।
RAG आपको निश्चितता देता है, सत्य नहीं
मैंने प्रेडिक्शन कार्यों के लिए आठ अलग-अलग RAG कॉन्फ़िगरेशन का परीक्षण किया। कुल मिलाकर, रिट्रीवल जोड़ने से मॉडल के निर्णयों में लगभग 30 प्रतिशत का बदलाव आया। यह प्रभावशाली लगता है। लेकिन ऐसा नहीं था। वे बदलाव केवल शोर (noise) थे। समग्र सटीकता (accuracy) में कोई सुधार नहीं हुआ। जो चीज़ बदली, वह थी मॉडल का आत्मविश्वास (confidence)। RAG ने सिस्टम को अधिक निश्चित दिखाने, अधिक स्रोतों का हवाला देने और लंबे स्पष्टीकरण देने के काबिल बना दिया। और यह सब करते हुए भी वह उतना ही गलत था।
यह अति-आत्मविश्वास एक प्रोडक्ट रिस्क (product risk) है। एक उपयोगकर्ता साइटेशन (citations) देखता है और मान लेता है कि मॉडल ने अपनी तैयारी पूरी कर ली है। वास्तव में, वह केवल परिष्कृत दिखने वाला अनुमान (guesswork) लगा रहा था।
सबसे कड़वा सबक एक RAG वेरिएंट के बैकटेस्टिंग (backtesting) से मिला। इसने 11 प्रतिशत वार्षिक लाभ दिखाया। सतही तौर पर, यह एक जीतने वाली रणनीति लगती है। लेकिन इसका AUC, जो ROC कर्व के नीचे का क्षेत्र और वर्गीकरण कौशल का एक माप है, 0.486 था। यह सिक्का उछालने (coin flip) से भी बदतर है, जो 0.500 पर होता है। लाभ उस विशिष्ट बाजार अवधि का एक इत्तेफाक (fluke) था, न कि कोई दोहराने योग्य बढ़त (repeatable edge)। केवल P&L को एक मेट्रिक के रूप में उपयोग करना खतरनाक है। बाजार हर समय भाग्यशाली दौर (lucky streaks) प्रदान करते रहते हैं। आपको इत्तेफाक और क्षमता के बीच अंतर करने के लिए सांख्यिकीय कौशल मेट्रिक्स (statistical skill metrics) की आवश्यकता होती है।
जानें कि प्रत्येक टूल वास्तव में क्या करता है
तो यह हमें कहाँ छोड़ता है? फाइन-ट्यूनिंग (fine-tuning) का उपयोग तब करें जब मॉडल को नए शब्द, विशिष्ट फॉर्मेट या एक अलग शैली सीखने की आवश्यकता हो। RAG का उपयोग तब करें जब मॉडल को तथ्यों, कोड रिपॉजिटरी (code repositories) या संस्थागत स्मृति (institutional memory) तक पहुँच की आवश्यकता हो जो उसके वेट्स (weights) के बाहर रहती है। ऐसे डेटा में सिग्नल (signal) खोजने के लिए किसी भी टूल का उपयोग न करें जिसमें कोई सिग्नल ही न हो। यदि अंतर्निहित पैटर्न वहां नहीं है, तो रिट्रीवल और फाइन-ट्यूनिंग केवल शोर को एक बेहतर लिबास में सजाने में आपकी मदद करेंगे।
असली बाधा (The Real Bottleneck)
फाइन-ट्यूनिंग और RAG के लिए इंफ्रास्ट्रक्चर को सेटअप करना पहले कभी इतना आसान नहीं रहा। आप एक दोपहर में पाइपलाइन तैयार कर सकते हैं। तकनीक अब बाधा नहीं है। मूल्यांकन (Evaluation) है। अधिकांश टीमें कठिन सांख्यिकीय कार्य को छोड़ देती हैं और इसके बजाय वैनिटी मेट्रिक्स (vanity metrics) का जश्न मनाती हैं। वे ऐसे सिस्टम लॉन्च करते हैं जो सुनने में स्मार्ट लगते हैं लेकिन चुपचाप विफल हो जाते हैं।
पैसा खर्च करने से पहले ईमानदार परीक्षण करें। अपने मेट्रिक्स पर सवाल उठाएं। ओवरफिटिंग (overfitting) की जांच करें। सुनिश्चित करें कि मॉडल वास्तव में बेहतर है,
