HEJ-Robust: A Robustness Benchmark for LLM-Based Automated Program Repair
यह शोध पत्र HEJ-Robust को प्रस्तुत करता है, जो अर्थ-संरक्षण करने वाले कोड रूपांतरणों (semantics-preserving code transformations) का उपयोग करने वाला एक नया बेंचमार्क है, जो यह प्रकट करता है कि वर्तमान LLM-आधारित स्वचालित प्रोग्राम रिपेयर मॉडल मामूली सिंटैक्टिक विविधताओं का सामना करने पर 50% से अधिक की महत्वपूर्ण प्रदर्शन गिरावट का शिकार होते हैं, जो मौजूदा दृष्टिकोणों में मजबूती (robustness) की गंभीर कमी को उजागर करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक बहुत ही प्रतिभाशाली मैकेनिक है जिसे एक विशिष्ट प्रकार की टूटी हुई खिलौना कार को ठीक करने के लिए प्रशिक्षित किया गया है। यह मैकेनिक एक AI (एक लार्ज लैंग्वेज मॉडल) है जिसने टूटी हुई कारों के हजारों उदाहरणों और उन्हें कैसे ठीक किया जाए, इसका अध्ययन किया है। अतीत में, शोधकर्ताओं ने इस मैकेनिक का परीक्षण करने के लिए उसे हर बार बिल्कुल वही टूटी हुई कार दिखाई। मैकेनिक ने बहुत अच्छा काम किया, और हर बार 100% मामलों में कार को ठीक किया।
लेकिन यहाँ एक पेंच है: वास्तविक दुनिया में, लोग हमेशा टूटी हुई कारों का वर्णन बिल्कुल एक ही तरह से नहीं करते हैं। कभी-कभी वे कहते हैं "बायां पहिया निकल गया है" बजाय इसके कि "अगला-बायां पहिया निकल गया है।" कभी-कभी वे इंजन को थोड़ा अलग जगह पर रख देते हैं लेकिन वह फिर भी समान रूप से काम करता है।
समस्या: "परफेक्ट" टेस्ट बनाम वास्तविक जीवन
इस शोध पत्र के लेखकों, फाज़ले रब्बी और जिंक्यू यांग ने महसूस किया कि इन AI मैकेनिक्स को प्रशिक्षित करने और ग्रेड देने के लिए उपयोग किए जाने वाले परीक्षण बहुत कठोर थे। वे एक ड्राइविंग टेस्ट की तरह थे जहाँ आपको हमेशा एक विशिष्ट लाल बत्ती पर ही बाएं मुड़ना पड़ता था। यदि आप बत्ती को हरा कर देते, या दाएं मुड़ने के लिए कहते, तो AI भ्रमित हो सकता था, भले ही ड्राइविंग कौशल वही हो।
यह पेपर तर्क देता है कि जबकि ये AI मरम्मत उपकरण तब बहुत अच्छे होते हैं जब कोड बिल्कुल वैसा ही दिखता है जैसा उन्होंने पहले देखा है, वे आश्चर्यजनक रूप से नाजुक (fragile) हैं। यदि आप कोड में मामूली, हानिरहित बदलाव करते हैं (जैसे किसी वेरिएबल का नाम x से बदलकर count कर देना), तो AI अक्सर पूरी तरह से विफल हो जाता है।
समाधान: HEJ-Robust (एक "स्ट्रेस टेस्ट")
इसे साबित करने के लिए, लेखकों ने एक नया परीक्षण मैदान बनाया जिसे HEJ-Robust कहा जाता है। इसे एक "स्ट्रेस टेस्ट" के रूप में समझें।
उन्होंने 164 टूटे हुए जावा प्रोग्राम (जो "खिलौने" हैं) लिए और प्रत्येक पर आठ अलग-अलग प्रकार के हानिरहित रूपांतरण (transformations) लागू किए। ये रूपांतरण कार का रंग बदलने या सीटों को पुनर्व्यवस्थित करने जैसे हैं—सब कुछ बिल्कुल एक जैसा काम करता है, लेकिन यह अलग दिखता है। आठ परिवर्तनों में शामिल थे:
- चीजों का नाम बदलना: एक वेरिएबल को
countके बजायtempकहना। - संरचना बदलना: एक
forलूप कोwhileलूप में बदलना (जैसे एक घेरे में गाड़ी चलाने बनाम एक वर्ग में गाड़ी चलाने जैसा)। - शोर (Noise) जोड़ना: एक हानिरहित लॉग संदेश डालना (जैसे मैकेनिक द्वारा डैशबोर्ड पर एक नोट लिखना)।
- पुनर्व्यवस्था करना: स्थितियों के क्रम को बदलना (जैसे यह कहना कि "यदि बारिश हो रही है और मेरे पास छाता है" बनाम "यदि मेरे पास छाता है और बारिश हो रही है")।
उन्होंने इन टूटे हुए प्रोग्रामों का परीक्षण करने के लिए 1,450 नए संस्करण बनाए।
परिणाम: AI टूट गया
लेखकों ने इस नए स्ट्रेस टेस्ट पर पांच अलग-अलग AI मॉडल्स का परीक्षण किया। परिणाम चौंकाने वाले थे।
- गिरावट: जब कोड को थोड़ा नाम दिया गया या पुनर्गठित किया गया, तो AI की सफलता दर 50% से अधिक गिर गई।
- उपमा (Analogy): यह ऐसा है जैसे मैकेनिक कार को पूरी तरह से ठीक कर सकता था जब स्टीयरिंग व्हील बाईं ओर था, लेकिन यदि आपने स्टीयरिंग व्हील को दाईं ओर स्थानांतरित कर दिया (भले ही कार अभी भी समान रूप से चलती है), तो मैकेनिक भूल गया कि इसे कैसे ठीक किया जाए।
- आकार मायने नहीं रखता: बड़े, अधिक शक्तिशाली AI मॉडल भी इसमें बेहतर नहीं थे। वास्तव में, कभी-कभी "सबसे स्मार्ट" मॉडल छोटे मॉडल्स की तुलना में अधिक बार विफल हुए जब कोड थोड़ा अलग दिख रहा था।
- गलत मीट्रिक: इस पेपर ने यह भी पाया कि मानक "ग्रामर चेकर" (CodeBLEU जैसे मीट्रिक) ने AI के विफल होने को नोटिस नहीं किया। AI ऐसा कोड लिख रहा था जो सही उत्तर के समान दिखता था, लेकिन वह वास्तव में काम नहीं करता था। यह एक छात्र की तरह है जो एक निबंध लिखता है जो एकदम सही दिखता है लेकिन गलत बात कहता है; व्याकरण ठीक है, लेकिन तर्क (logic) टूटा हुआ है।
निष्कर्ष
पेपर यह निष्कर्ष निकालता है कि वर्तमान AI उपकरण कोड को ठीक करने के लिए मजबूत (robust) नहीं हैं। वे उन छात्रों की तरह हैं जिन्होंने एक विशिष्ट परीक्षा के उत्तर रट लिए हैं लेकिन वास्तव में विषय को नहीं समझते हैं। यदि आप प्रश्न की शब्दावली में थोड़ा सा भी बदलाव करते हैं, तो वे विफल हो जाते हैं।
लेखकों ने अपना नया बेंचमार्क (HEJ-Robust) जारी किया है ताकि अन्य शोधकर्ता इसका उपयोग ऐसे AI मैकेनिक बनाने के लिए कर सकें जो वास्तव में लचीले हों और वास्तविक दुनिया के जटिल, विविध सॉफ्टवेयर को संभाल सकें, न कि केवल कठोर, पूर्ण परीक्षणों को पास कर सकें।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।