Route-Align-Verify for Functional Correctness in Code Generation
यह शोध पत्र RAV को प्रस्तुत करता है, जो एक हल्का और मॉड्यूलर फ्रेमवर्क है जो बैकबोन आर्किटेक्चर को संशोधित किए बिना, टास्क-अवेयर प्रॉम्प्ट रूटिंग, अलाइन्ड LoRA एडेप्टेशन और एक्जीक्यूशन-बेस्ड वेरिफिकेशन को एकीकृत करके लार्ज लैंग्वेज मॉडल्स में कोड जनरेशन की कार्यात्मक शुद्धता को बढ़ाता है, जिससे MBPP बेंचमार्क पर महत्वपूर्ण प्रदर्शन लाभ प्राप्त होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक बुद्धिमान, सुपर-फास्ट रोबोट को कंप्यूटर कोड लिखना सिखा रहे हैं। यह रोबोट, जिसे लार्ज लैंग्वेज मॉडल (LLM) के रूप में जाना जाता है, इंटरनेट की लगभग हर किताब और वेबसाइट को पढ़ चुका है। यह अगला शब्द क्या होना चाहिए, इसका अनुमान लगाने में अद्भुत है, बिल्कुल एक उन्नत ऑटो-कम्प्लीट की तरह। लेकिन पेचीदा हिस्सा यह है कि सिर्फ इसलिए कि रोबोट ऐसा कोड लिखता है जो सही दिखता है, इसका मतलब यह नहीं है कि वह वास्तव में काम भी करता है। यह एक ऐसा वाक्य लिख सकता है जो सुनने में तो एकदम सटीक लगे, लेकिन जैसे ही आप उसे चलाने की कोशिश करते हैं, वह क्रैश हो जाता है। इसे ठीक करने के लिए, वैज्ञानिक "बेंचमार्क" का उपयोग करते हैं, जो अभ्यास परीक्षाओं की तरह होते हैं जहाँ कोड को वास्तव में परीक्षणों (tests) के विरुद्ध चलाया जाता है। यदि कोड परीक्षण पास कर लेता है, तो उसे एक अंक मिलता है; यदि वह क्रैश हो जाता है या गलत उत्तर देता है, तो वह विफल हो जाता है। इस क्षेत्र का बड़ा सवाल यह है: हम इन रोबोट्स को न केवल स्मार्ट दिखने वाला, बल्कि वास्तव में समस्याओं को हल करने के लिए इतना स्मार्ट कैसे बनाएं कि हमें उनके पूरे मस्तिष्क को फिर से बनाने की आवश्यकता न पड़े?
यहाँ एक नया अध्ययन है जो सुझाव देता है कि हमें रोबोट के मस्तिष्क को फिर से बनाने की आवश्यकता नहीं है। इसके बजाय, शोधकर्ता एरक्सुए झोउ, जिंगशियांग मेंग और एओफ़ान लियू एक चतुर तीन-चरणीय ट्रिक प्रस्तावित करते हैं जिसे RAV कहा जाता है (जिसका अर्थ है Route, Align, और Verify)। इसे एक छात्र को बड़े टेस्ट के लिए तैयार करने जैसा समझें। पहले, आप उन्हें केवल एक सामान्य अध्ययन मार्गदर्शिका नहीं देते; आप यह पता लगाते हैं कि वे किस प्रकार की समस्या का सामना कर रहे हैं और उन्हें सही प्रकार का संकेत देते हैं (Route)। दूसरा, आप यह सुनिश्चित करते हैं कि जिस तरह से आपने उन्हें कक्षा में पढ़ाया है, वह ठीक वैसा ही हो जैसा टेस्ट के प्रश्न लिखे गए हैं, ताकि वे शब्दावली के कारण भ्रमित न हों (Align)। अंत में, उन्हें केवल एक उत्तर देने देने के बजाय, आप उन्हें दस अलग-अलग समाधान लिखने के लिए कहते हैं, प्रत्येक पर एक त्वरित जांच करते हैं, और उस एक को चुनते हैं जो वास्तव में काम करता है (Verify)। पेपर सुझाव देता है कि इन तीन चरणों को समन्वित करके, आप मूल मॉडल को बदले बिना बहुत बेहतर परिणाम प्राप्त कर सकते हैं।
तीन-चरणीय जादू का खेल
शोधकर्ताओं ने अपने विचार का परीक्षण कोडिंग चुनौतियों के एक लोकप्रिय सेट पर किया जिसे MBPP कहा जाता है। उन्होंने एक मानक, शक्तिशाली कोडिंग मॉडल (Qwen2.5-Coder-7B-Instruct) से शुरुआत की और पूछा: "क्या हम केवल इससे बात करने के तरीके और उसके उत्तरों को चुनने के तरीके को बदलकर इस विशिष्ट मॉडल को टेस्ट पास करने में बेहतर बना सकते हैं?"
यहाँ उनका तीन-चरणीय ढांचा एक मनोरंजक उपमा का उपयोग करते हुए दिया गया है:
1. Route: स्मार्ट रिसेप्शनिस्ट
एक व्यस्त कार्यालय की कल्पना करें जहाँ एक रिसेप्शनिस्ट को हजारों अलग-अलग अनुरोध मिलते हैं। यदि आप बस "मुझे एक समस्या में मदद चाहिए" कहते हैं, तो रिसेप्शनिस्ट आपको एक सामान्य उत्तर दे सकता है जो फिट नहीं बैठता। लेकिन क्या होगा यदि रिसेप्शनिस्ट आपके अनुरोध को देख सके और कह सके, "ओह, आप अक्षरों की एक स्ट्रिंग (string) के साथ काम कर रहे हैं? चलिए 'स्ट्रिंग स्पेशलिस्ट' गाइड का उपयोग करते हैं!" या "आप गणित कर रहे हैं? चलिए 'मैथ विजार्ड' गाइड पर स्विच करते हैं!"
पेपर में, यह Route चरण है। मॉडल के कोड लिखने से पहले ही, एक हल्का "रूटर" कार्य को देखता है। यदि कार्य टेक्स्ट को बदलने (जैसे पैलिंड्रोम ढूंढना) के बारे में है, तो यह एक विशिष्ट प्रॉम्प्ट स्टाइल का उपयोग करता है। यदि यह गणित या एल्गोरिदम के बारे में है, तो यह एक अलग स्टाइल में बदल जाता है। यह सुनिश्चित करता है कि मॉडल को काम के विशिष्ट प्रकार के लिए सही "फ्लेवर" के निर्देश मिलें, न कि एक ही जैसा प्रॉम्प्ट मिले।
2. Align: अभ्यास मैच
अब, कल्पना कीजिए कि आपने एक सॉकर खिलाड़ी को उन ड्रिल्स (drills) के माध्यम से प्रशिक्षित किया जो वास्तविक खेल से बिल्कुल अलग थे। आपने एक भारी गेंद और कीचड़ भरे मैदान पर अभ्यास किया, लेकिन वास्तविक खेल घास पर हल्की गेंद के साथ खेला जाता है। खिलाड़ी ड्रिल्स में तो बहुत अच्छा हो सकता है लेकिन खेल में खराब। यह एक "बेमेल" (mismatch) स्थिति है।
AI की दुनिया में, मॉडल अक्सर एक प्रकार के निर्देश पर प्रशिक्षित होते हैं लेकिन दूसरे प्रकार पर उनका परीक्षण किया जाता है। Align चरण इसे ठीक करता है। शोधकर्ताओं ने अपने प्रशिक्षण डेटा को लिया और निर्देशों को फिर से लिखा ताकि वे ठीक वैसे ही दिखें जैसे "रूटेड" प्रॉम्प्ट जो मॉडल टेस्ट के दौरान देखेगा। उन्होंने LoRA (एक तरीका जिससे आप मॉडल को उसका पूरा मस्तिष्क बदले बिना नए कौशल सिखा सकते हैं) नामक तकनीक का उपयोग किया ताकि मॉडल को विशेष रूप से इन नए, कार्य-विशिष्ट स्टाइल्स के प्रति जवाब देना सिखाया जा सके। यह खिलाड़ी को ऐसे अभ्यास ड्रिल देने जैसा है जो वास्तविक खेल की स्थितियों की सटीक नकल करते हैं।
3. Verify: सुरक्षा जाल
अंत में, सबसे अच्छे प्रशिक्षण और सही संकेतों के साथ भी, मॉडल पहली कोशिश में गलती कर सकता है। अतीत में, लोग अक्सर केवल मॉडल द्वारा दिए गए पहले उत्तर को ले लेते थे। लेकिन क्या होगा यदि मॉडल दस अलग-अलग उत्तर लिख सके, और हम सबसे अच्छे को चुनें?
यह Verify चरण है। मॉडल कोड के कई संस्करण (एक "कैंडिडेट पूल") बनाता है। फिर, सिस्टम प्रत्येक संस्करण को समस्या में शामिल सार्वजनिक परीक्षणों के विरुद्ध चलाता है। यह एक शिक्षक की तरह है जो दस अलग-अलग निबंधों को ग्रेड करता है और केवल उसी को जमा करता है जिसे 'A' मिला हो। सिस्टम उस कोड को चुनता है जो वास्तव में परीक्षण पास करता है। यदि दो कोड पास होते हैं, तो यह छोटा वाला कोड चुनता है। यह चरण एक "शायद" को "हाँ" में बदल देता है।
उन्होंने क्या पाया
जब शोधकर्ताओं ने अपने तीनों चरणों को एक साथ रखा, तो परिणाम प्रभावशाली थे। उन्होंने MBPP बेंचमार्क पर अपने पूर्ण RAV पाइपलाइन का परीक्षण किया।
- MBPP Sanitized सेट (टेस्ट का एक साफ संस्करण) पर, उनकी विधि ने 0.8911 का स्कोर प्राप्त किया।
- MBPP Full सेट (पूर्ण, कठिन संस्करण) पर, वे 0.8520 तक पहुँचे।
इसे समझने के लिए, मूल मॉडल जिसने इन ट्रिक्स के बिना सैनिटाइज्ड सेट पर 0.8276 और फुल सेट पर 0.7528 स्कोर किया था, से तुलना करें। इसका मतलब है कि RAV विधि ने सैनिटाइज्ड सेट पर सफलता दर में 6.35 प्रतिशत अंक और फुल सेट पर भारी 9.92 प्रतिशत अंक का सुधार किया।
गुप्त नुस्खा: यह मिलकर क्यों काम करता है
इस अध्ययन का सबसे दिलचस्प हिस्सा वह है जो तब हुआ जब उन्होंने चरणों को अकेले आजमाया।
- यदि उन्होंने केवल Route और Align का उपयोग किया लेकिन उत्तरों की जाँच नहीं की (कोई Verify नहीं), तो सुधार बहुत कम था। यह एक बेहतरीन छात्र होने जैसा था जो अभी भी अपनी गलतियों की जाँच किए बिना अपना होमवर्क का पहला ड्राफ्ट जमा कर देता है।
- हालाँकि, जब उन्होंने Route या Align को Verify के साथ जोड़ा, तो स्कोर काफी बढ़ गया।
यह सुझाव देता है कि Route और Align जरूरी नहीं कि मॉडल को पहली कोशिश में ही परफेक्ट उत्तर लिखने के लिए प्रेरित करें। इसके बजाय, वे मॉडल को एक बेहतर विकल्पों की सूची लिखने में मदद करते हैं। वे इस संभावना को बढ़ाते हैं कि एक सही उत्तर उत्पन्न किए गए कोड के ढेर में कहीं छिपा हुआ है। फिर, Verify एक जासूस की तरह काम करता है जो उस छिपे हुए सही उत्तर को खोजता है और उसे चुनता है।
लेखकों ने यह सुनिश्चित करने के लिए परीक्षण कई बार किए कि परिणाम केवल किस्मत नहीं थे। कठिन "Full" सेट पर, सुधार बहुत स्थिर था। उन्होंने यह भी जाँच की कि मॉडल ने प्रशिक्षण डेटा से उत्तरों को याद तो नहीं कर लिया (जिसे "कंटैमिनेशन" कहा जाता है), और उन्हें ऐसा कोई सबूत नहीं मिला।
निष्कर्ष
यह पेपर सुझाव देता है कि बेहतर कोड प्राप्त करने के लिए हमें एक नया, विशाल, अत्यधिक महंगा रोबोट मस्तिष्क बनाने की आवश्यकता नहीं है। इसके बजाय, हम बेहतर परिणाम प्राप्त कर सकते हैं यदि हम सवाल पूछने के तरीके (Route), मॉडल के साथ अभ्यास करने के तरीके (Align), और अंतिम उत्तर चुनने के तरीके (Verify) के बारे में अधिक स्मार्ट बनें। यह एक याद दिलाता है कि कभी-कभी, किसी सिस्टम को बेहतर बनाने का सबसे अच्छा तरीका एक बड़ा इंजन बनाना नहीं होता, बल्कि ड्राइवर, मानचित्र और गंतव्य चेक-इन प्रक्रिया को ट्यून करना होता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।