Contextualized Code Pretraining for Code Generation
यह शोध पत्र "कॉन्टेक्स्टुअलाइज़्ड कोड प्रीट्रेनिंग" का प्रस्ताव करता है, जो एक इनवोकेशन-अवेयर फ्रेमवर्क है जो कॉलर-कली पेयर्स (caller-callee pairs) को निकालने के लिए स्टैटिक एनालिसिस का लाभ उठाता है ताकि कॉलरजेन (CallerGen) मॉडल को प्रशिक्षित किया जा सके, जो यह प्रदर्शित करता है कि मौजूदा मॉडलों की तुलना में वास्तविक बेंचमार्क पर कॉलिंग कॉन्टेक्स्ट को एकीकृत करने से कोड जनरेशन प्रदर्शन में महत्वपूर्ण सुधार होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
एक बड़ी समस्या: "खाली कैनवास" वाली गलती
कल्पना कीजिए कि आप एक मास्टर शेफ हैं जिन्हें एक विशिष्ट व्यंजन बनाने के लिए काम पर रखा गया है। आमतौर पर, जब आप किसी AI शेफ को खाना बनाने के लिए कहते हैं, तो आप उसे एक रेसिपी कार्ड देते हैं जिसमें लिखा होता है, "एक मसालेदार पास्ता बनाओ।" AI अपने पास्ता की रेसिपी के विशाल पुस्तकालय को देखता है और अनुमान लगाता है कि क्या करना है।
लेकिन सॉफ्टवेयर डेवलपमेंट की वास्तविक दुनिया में, चीजें अलग तरह से काम करती हैं। एक डेवलपर शायद ही कभी खाली रेसिपी कार्ड के साथ शुरुआत करता है। इसके बजाय, वे आमतौर पर पहले से ही एक भोजन के बीच में होते हैं। उन्होंने मुख्य कोर्स ( "caller" कोड) लिख लिया है, और अब उन्हें एक विशिष्ट साइड डिश ( "callee" फंक्शन) बनाने की आवश्यकता है जो उस भोजन में पूरी तरह फिट बैठ सके।
- पुराना तरीका: AI को साइड डिश का नाम दिया जाता है और उससे सामग्री का अनुमान लगाने के लिए कहा जाता है। वह एक बेहतरीन पास्ता बना सकता है, लेकिन यदि मुख्य कोर्स समुद्री भोजन का स्टू (seafood stew) है, तो AI गलती से पनीर डाल सकता है, जिससे पूरा भोजन खराब हो सकता है।
- वास्तविक दुनिया: डेवलपर ने पहले ही मुख्य कोर्स लिख लिया है। वह साइड डिश को कॉल कर रहा है और कह रहा है, "मुझे चाहिए कि तुम इस सॉस को लो और इसे एक गार्निश में बदल दो।" AI को यह समझने के लिए कि साइड डिश को वास्तव में क्या करने की आवश्यकता है, यह देखना होगा कि मुख्य कोर्स साइड डिश का उपयोग कैसे कर रहा है।
वर्तमान AI मॉडल रेसिपी कार्ड (प्राकृतिक भाषा विवरण) का पालन करने में बहुत अच्छे हैं, लेकिन वे यह देखने में बहुत खराब हैं कि मुख्य कोर्स को साइड डिश से वास्तव में क्या चाहिए।
समाधान: "CallerGen" (संदर्भ-जागरूक शेफ)
पेकिंग यूनिवर्सिटी और अन्य संस्थानों के शोधकर्ताओं ने CallerGen नामक एक नया AI सिस्टम बनाया है। CallerGen को एक ऐसे शेफ के रूप में सोचें जिसे विशेष रूप से साइड डिश पकाने से पहले मुख्य कोर्स को देखने के लिए प्रशिक्षित किया गया है।
केवल रेसिपी बुक्स से सीखने के बजाय, उन्होंने CallerGen को लाखों वास्तविक दुनिया के उदाहरण दिखाकर सिखाया जहाँ एक फंक्शन (साइड डिश) को कोड के अन्य हिस्सों (मुख्य कोर्स) द्वारा पहले से ही उपयोग किया जा रहा था।
उन्होंने यह कैसे किया:
- जासूसी कार्य: उन्होंने स्टैटिक एनालिसिस (static analysis) नामक एक विशेष टूल का उपयोग करके वास्तविक कोड की विशाल लाइब्रेरी को स्कैन किया। उन्होंने जासूसों की तरह काम किया, हर बार जब एक फंक्शन को "कॉल" किया गया था, उसे खोजा और उस कोड को देखा जिसने उसे कॉल किया था।
- प्रशिक्षण: उन्होंने AI को सिखाया: "यह मुख्य कोर्स (caller) है। यह साइड डिश को क्या करने के लिए कह रहा है। अब, तुम साइड डिश पकाओ।"
- परिणाम: AI ने सीखा कि साइड डिश केवल एक स्वतंत्र रेसिपी नहीं है; यह एक पहेली का हिस्सा है। इसने "कॉलिंग कोड" में दिए गए "सुरागों" पर ध्यान देना सीखा, जैसे कि क्या डेटा पास किया जा रहा है और कॉलर (caller) बदले में क्या वापस पाने की अपेक्षा करता है।
नया परीक्षण: "CallerEval" (वास्तविक दुनिया की रसोई)
यह साबित करने के लिए कि उनका नया शेफ बेहतर था, वे पुराने रेसिपी कार्ड (मानक बेंचमार्क जैसे HumanEval) का उपयोग नहीं कर सकते थे। वे परीक्षण बहुत सरल हैं; उनमें देखने के लिए कोई "मुख्य कोर्स" नहीं है।
इसलिए, उन्होंने एक नई टेस्ट किचन बनाई जिसे CallerEval कहा जाता है।
- इस परीक्षण में, AI को एक कार्य दिया जाता है जहाँ "मुख्य कोर्स" कोड पहले से ही लिखा हुआ और तैयार है।
- AI को "साइड डिश" (लुप्त फंक्शन) लिखना होगा ताकि वह मौजूदा कोड के साथ पूरी तरह से काम करे।
- यह एक कुकिंग प्रतियोगिता की तरह है जहाँ आपका निर्णय इस आधार पर नहीं किया जाता कि आपका व्यंजन अलग से कितना स्वादिष्ट है, बल्कि इस आधार पर किया जाता है कि वह पहले से मेज पर रखे व्यंजन के साथ कितनी अच्छी तरह घुलता-मिलता है।
परिणाम: छोटे शेफ, बड़ी जीत
पेपर ने CallerGen का परीक्षण अन्य प्रसिद्ध AI शेफ (जैसे CodeGen, DeepSeek, और Qwen) के विरुद्ध किया।
- आश्चर्य: भले ही CallerGen एक "छोटा" शेफ था (जिसने कम कंप्यूटर संसाधनों का उपयोग किया), इसने पुराने तरीके (केवल रेसिपी कार्ड) से प्रशिक्षित बहुत "बड़े" शेफ को भी पीछे छोड़ दिया।
- जादू: जब AI को कॉलिंग कॉन्टेक्स्ट (मुख्य कोर्स) देखने की अनुमति दी गई, तो इसका प्रदर्शन आसमान छू गया।
- उपमा: यह एक ऐसे छोटे शेफ की तरह है जो जानता है कि ग्राहक को वास्तव में क्या चाहिए क्योंकि वह ग्राहक की प्लेट देख सकता है, और वह एक विशाल शेफ को हरा देता है जो केवल एक अस्पष्ट ऑर्डर के आधार पर अनुमान लगा रहा है।
- कैच (Catch): यदि आप कॉलिंग कॉन्टेक्स्ट को हटा देते हैं (उन्हें केवल रेसिपी कार्ड देते हैं), तो AI अभी भी अच्छा प्रदर्शन करता है, लेकिन वह अपनी अतिरिक्त बढ़त खो देता है। यह साबित करता है कि "कॉलिंग कॉन्टेक्ट" एक सुपरपावर है जिसका वर्तमान मॉडल पूरी तरह से उपयोग नहीं कर रहे हैं।
यह क्यों मायने रखता है
यह पेपर तर्क देता है कि सॉफ्टवेयर डेवलपमेंट शायद ही कभी शून्य में कोडिंग करने के बारे में होता है। यह मौजूदा पहेलियों में नए टुकड़ों को फिट करने के बारे में है।
- पुराना AI: "यहाँ एक फंक्शन का नाम है। इसे काम करने लायक बनाओ।" (अक्सर पहेली में फिट होने में विफल रहता है)।
- नया AI (CallerGen): "यहाँ एक फंक्शन का नाम है, और यहाँ ठीक वही है कि प्रोग्राम का बाकी हिस्सा इसका उपयोग कैसे कर रहा है। इसे काम करने लायक बनाओ इस विशिष्ट स्थिति के लिए।" (पहेली में फिट होने में सफल होता है)।
AI को "कॉलिंग कॉन्टेक्स्ट" पर ध्यान देने के लिए सिखाकर—उन सुरागों पर जो फंक्शन का उपयोग करने वाले कोड द्वारा छोड़े गए हैं—शोधकर्ताओं ने एक ऐसी प्रणाली बनाई है जो ऐसे कोड उत्पन्न करती है जिसके वास्तविक दुनिया के प्रोजेक्ट्स में सही ढंग से काम करने की संभावना बहुत अधिक होती है, और इसके लिए भारी मात्रा में कंप्यूटिंग पावर की आवश्यकता भी नहीं होती।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।