Pull Requests as a Training Signal for Repo-Level Code Editing
यह शोध पत्र Clean-PR को प्रस्तुत करता है, जो एक मिड-ट्रेनिंग प्रतिमान (paradigm) है जो पुनर्गठित (reconstructed) GitHub पुल रिक्वेस्ट के एक विशाल संग्रह का लाभ उठाता है ताकि मॉडल रिपॉजिटरी-स्तरीय कोड संपादन क्षमताओं को आत्मसात कर सकें, जो जटिल एजेंट स्कैफोल्डिंग पर निर्भर हुए बिना SWE-bench पर बेसलाइन से काफी बेहतर प्रदर्शन करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
यहाँ शोध पत्र "Pull Requests as a Training Signal for Repo-Level Code Editing" का सरल भाषा और रचनात्मक उपमाओं के साथ विवरण दिया गया है।
बड़ी समस्या: "ओवर-इंजीनियर्ड" समाधान
कल्पना कीजिए कि आप एक रोबोट को एक टूटी हुई कार ठीक करना सिखाना चाहते हैं। वर्तमान में, सबसे अच्छे रोबोट केवल रिंच घुमाना ही नहीं जानते। इसके बजाय, वे एक अराजक निर्माण स्थल (construction site) की तरह बनाए गए हैं: उनके पास एक मैनेजर ("एजेंट") होता है जो लगातार मानचित्रों की जाँच करता है, औजारों के लिए पुकारता है, खुद से बहस करता है, और इंजन को ठीक करने के दस अलग-अलग तरीके आज़माता है।
यह काम तो करता है, लेकिन यह धीमा, महंगा और भ्रमित करने वाला है। यह बताना कठिन है कि क्या रोबोट स्मार्ट है, या क्या वह केवल भाग्यशाली है क्योंकि उसके पास सहायकों की एक विशाल टीम है।
शोधकर्ताओं ने एक मौलिक प्रश्न पूछा: क्या हम रोबोट को इतना स्मार्ट बना सकते हैं कि वह उस अराजक मैनेजर के बिना, अपने दम पर कार ठीक कर सके? क्या हम उस "जानने की क्षमता" (know-how) को सीधे रोबोट के मस्तिष्क में समाहित कर सकते हैं?
समाधान: "Clean-PR" (एक उच्च गुणवत्ता वाली पाठ्यपुस्तक)
रोबोट को सिखाने के लिए, आपको अच्छी पाठ्यपुस्तकों की आवश्यकता होती है। लेकिन इंटरनेट अव्यवस्थित, शोर भरे कोड से भरा है। GitHub पर अधिकांश कोड परिवर्तन किसी किताब के हाशिए में लिखे गए बिखरे हुए शब्दों की तरह हैं:
- कुछ बॉट्स (इंसानों द्वारा नहीं) द्वारा लिखे गए हैं।
- कुछ केवल कवर आर्ट (डॉक्यूमेंटेशन) बदलने जैसे हैं, कहानी (कोड) नहीं।
- कुछ कभी पूरे नहीं किए गए (unmerged)।
लेखकों ने Clean-PR नामक एक प्रक्रिया बनाई। इसे एक कठोर संपादन टीम के रूप में समझें जो लाखों बिखरे हुए GitHub "पुल रिक्वेस्ट" (प्रस्तावित कोड परिवर्तन) के माध्यम से जाती है और उन्हें पूर्ण, सत्यापित पाठों में बदल देती है।
उन्होंने डेटा को कैसे साफ किया:
- शोर को हटाना (Filtering the Noise): उन्होंने बॉट-लिखित सामग्री, अधूरे ड्राफ्ट और गैर-कोड परिवर्तनों को हटा दिया। उन्होंने केवल उन "कोर" कोड परिवर्तनों को रखा जो वास्तव में लॉजिक को ठीक करते हैं।
- "सर्च एंड रिप्लेस" विधि: रोबोट को लाइन नंबर गिनना सिखाने के बजाय (जो बहुत नाजुक है—यदि आप एक लाइन भी जोड़ते हैं, तो पूरा नक्शा बिगड़ जाता है), उन्होंने इसे विशिष्ट अद्वितीय वाक्यांशों को खोजने और उन्हें बदलने के लिए सिखाया। यह एक लाइब्रेरियन को यह बताने जैसा है, "उस पैराग्राफ को खोजें जो 'Once upon a time' से शुरू होता है और 'happily ever after' पर समाप्त होता है, और बीच के वाक्य को बदल दें," बजाय इसके कि "पेज 42, लाइन 3 पर जाओ।"
- संदर्भ जोड़ना (Adding Context): अक्सर, एक कोड परिवर्तन यह स्पष्ट नहीं करता कि वह क्यों किया गया था। लेखकों ने कोड परिवर्तन को मूल "इश्यू" (बग रिपोर्ट) से जोड़ा। यह छात्र को न केवल उत्तर कुंजी देने जैसा है, बल्कि मूल परीक्षा प्रश्न भी देने जैसा है।
प्रशिक्षण: दो-चरणीय सीखना
उन्होंने इस डेटा को केवल AI में डाल नहीं दिया। उन्होंने एक दो-चरणीय प्रशिक्षण प्रक्रिया का उपयोग किया:
चरण 1: मिड-ट्रेनिंग (सामान्य शिक्षा)
उन्होंने AI को इस विशाल, साफ किए गए डेटासेट (20 लाख उदाहरण) से प्रशिक्षित किया। इसने AI को सॉफ्टवेयर रिपॉजिटरी कैसे काम करती है और कोड को आमतौर पर कैसे संपादित किया जाता है, इसकी सामान्य "व्याकरण" सिखाई। यह हजारों मरम्मत नियमावलियों (repair manuals) को पढ़ने जैसा है ताकि यह समझा जा सके कि इंजन कैसे बने होते हैं।
चरण 2: विशेष फाइन-ट्यूनिंग (व्यावहारिक परीक्षा)
इसके बाद उन्होंने AI को एक विशिष्ट, सरल वर्कफ़्लो जिसे "Agentless" कहा जाता है, का पालन करने के लिए प्रशिक्षित किया। एक अराजक मैनेजर के बजाय, AI एक सख्त तीन-चरणीय चेकलिस्ट का पालन करता है:
- लोकेट (Locate): सही फ़ाइल खोजें।
- नेविगेट (Navigate): कोड की सही लाइनें खोजें।
- एडिट (Edit): सुधार करें।
"एरर-ड्रिवन" ट्विस्ट:
AI को मजबूत बनाने के लिए, उन्होंने इसे केवल आदर्श उदाहरण ही नहीं दिखाए। उन्होंने इसे गलतियाँ भी दिखाईं। उन्होंने उन फ़ाइलों को लिया जिनमें सुधार की आवश्यकता नहीं थी और AI को उन्हें अप्रासंगिक पहचानने के लिए मजबूर किया। यह एक जासूस को रेड हेरिंग्स (भटकाने वाली चीजों) को अनदेखा करना सिखाने जैसा है। यदि AI यह सीख जाता है कि, "यह फ़ाइल संदिग्ध दिखती है, लेकिन यह अपराधी नहीं है," तो वह वास्तविक समस्या खोजने में बहुत बेहतर हो जाता है।
परिणाम: कठिन नहीं, स्मार्ट
शोधकर्ताओं ने सॉफ्टवेयर इंजीनियरिंग कौशल के लिए एक मानक परीक्षण, SWE-bench पर अपने AI का परीक्षण किया।
- बेसलाइन: एक मानक AI मॉडल (Qwen2.5-Coder) जिसे इस विशेष प्रशिक्षण के बिना इस्तेमाल किया गया।
- प्रतिद्वंद्वी: अन्य शीर्ष स्तर के AI सिस्टम जो जटिल, भारी "एजेंट" प्रबंधकों का उपयोग करते हैं।
परिणाम:
उनके AI ने, जो एक सरल, सीधा दृष्टिकोण अपनाता है, जटिल प्रणालियों को हरा दिया।
- इसने "Lite" टेस्ट पर 24.3% और "Verified" टेस्ट पर 30.6% समस्याओं को हल किया।
- इसने अपने आकार से दोगुने मॉडल (72B पैरामीटर्स बनाम उनका 32B) को पीछे छोड़ दिया जो भारी स्कैफोल्डिंग (scaffolding) पर निर्भर थे।
यह क्यों महत्वपूर्ण है
यह शोध पत्र सिद्ध करता है कि AI को कोड ठीक करने के लिए सक्षम बनाने के लिए आपको हमेशा एक जटिल, बहु-चरणीय "मैनेजर" सिस्टम की आवश्यकता नहीं होती है। उच्च-गुणवत्ता वाले, सत्यापित डेटा (Clean-PR) को खिलाकर और इसे विकर्षणों को अनदेखा करना (Error-Driven Augmentation) सिखाकर, आप इस क्षमता को सीधे मॉडल के वेट्स (weights) में समाहित कर सकते हैं।
संक्षेप में: एक शोर मचाने वाले मैनेजर के साथ एक अनाड़ी रोबोट बनाने के बजाय, उन्होंने एक शांत, केंद्रित विशेषज्ञ बनाया जो जानता है कि कहाँ देखना है और इसे कैसे ठीक करना है, क्योंकि उसके पास एक बहुत ही साफ और बहुत ही सख्त पाठ्यपुस्तक है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।