ClozeMaster: Fuzzing Rust Compiler by Harnessing LLMs for Infilling Masked Real Programs
यह शोध पत्र ClozeMaster को पेश करता है, जो एक ऐसा फ़ज़िंग टूल है जो ऐतिहासिक बग रिपोर्टों से मास्क किए गए कोड स्निपेट्स को निकालने और उन्हें भरने के लिए लार्ज लैंग्वेज मॉडल्स का लाभ उठाकर वैध रस्ट (Rust) टेस्ट प्रोग्रामों को संश्लेषित करता है, जिससे यह मौजूदा फ़ज़र्स से बेहतर प्रदर्शन करता है और 27 पुष्ट कंपाइलर बग्स की खोज करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक बहुत ही सख्त, उच्च श्रेणी का शेफ है (Rust कंपाइलर) जो अपनी अविश्वसनीय रूप से सुरक्षित और तेज़ भोजन बनाने के लिए प्रसिद्ध है। उसके नियमों का एक विशिष्ट सेट है: यदि आप सामग्री को गलत क्रम में रखते हैं, किसी वर्जित मसाले का उपयोग करते हैं, या ऐसी बनावटों को मिलाते हैं जो आपस में नहीं होनी चाहिए, तो वह केवल "नहीं" नहीं कहता। कभी-कभी, शेफ आपकी अजीब मांग से इतना भ्रमित हो जाता है कि वह पूरी ट्रे गिरा देता है, चिल्लाने लगता है, या पूरी तरह से जम (freeze) जाता है। ये वे "बग्स" (bugs) हैं जिनके बारे में पेपर बात करता है।
समस्या यह है कि इस शेफ को बेवकूफ बनाना बहुत कठिन है। यदि आप बस उन्हें यादृच्छिक (random) सामग्रियां फेंकते हैं (जैसे कि एक मानक "फज़र" या स्वचालित टेस्टर), तो वे आमतौर पर आपको केवल अनदेखा कर देते हैं या विनम्रता से "अमान्य क्रम" कहते हैं। वे शायद ही कभी इतने भ्रमित होते हैं कि क्रैश हो जाएं।
यहाँ ClozeMaster आता है, जो शोधकर्ताओं द्वारा प्रस्तावित एक नया तरीका है। यह कैसे काम करता है, इसके लिए एक सरल उपमा (analogy) का उपयोग करें:
"मैड लिब्स" (Mad Libs) रणनीति
शेफ से शून्य से यह अनुमान लगाने के लिए कहने के बजाय कि आप क्या चाहते हैं, शोधकर्ताओं ने पिछले गलतियों को देखने का निर्णय लिया। वे शेफ के शिकायत लॉग (बग रिपोर्ट) में गए और उन रेसिपीज़ को खोजा जिन्होंने पहले शेफ को क्रैश या फ्रीज कर दिया था।
उन्होंने महसूस किया कि इन "क्रैश रेसिपीज़" की एक विशेष संरचना थी। वे मैड लिब्स (एक शब्द खेल जहाँ आप खाली स्थान भरते हैं) के खेल की तरह थे।
मास्किंग (खाली स्थान): शोधकर्ताओं ने एक ऐसी रेसिपी ली जिसने एक बार शेफ को क्रैश कर दिया था। उन्होंने कोष्ठकों, ब्रैकेट और कर्ली ब्रेसेस (जैसे
( ),{ },[ ]) के अंदर के हिस्सों को देखा। उन्होंने उन विशिष्ट हिस्सों को एक "मास्क" (खाली स्थान) से ढक दिया, जिससे बाकी की रेसिपी बरकरार रही।- उपमा: कल्पना कीजिए कि एक रेसिपी कहती है: "आटे को ______ के साथ मिलाएं और बेक करें।" बोल्ड वाला हिस्सा खाली स्थान है। बाकी का वाक्य (संरचना) सुरक्षित और व्याकरण की दृष्टि से सही है।
AI फिलर (The AI Filler): उन्होंने उन खाली स्थानों को भरने के लिए एक स्मार्ट AI (एक लार्ज लैंग्वेज मॉडल) का उपयोग किया। लेकिन उन्होंने AI से केवल एक रैंडम वाक्य लिखने के लिए नहीं कहा। उन्होंने पहले AI को उन सभी पुरानी, टूटी हुई रेसिपीज़ पर "प्रशिक्षित" किया ताकि AI ने उस विशिष्ट "फ्लेवर" को सीख लिया जो Rust शेफ को भ्रमित करता है।
- उपमा: AI एक ऐसे छात्र की तरह है जिसने हर उस बार का अध्ययन किया है जब शेफ क्रोधित हुआ था। जब खाली स्थान भरने के लिए पूछा जाता है, तो AI केवल "चीनी" नहीं लिखता; यह कुछ अजीब जैसा लिख सकता है जैसे "एक जीवित ऑक्टोपस" क्योंकि वह जानता है कि अजीब संयोजनों से शेफ भ्रमित हो जाता है।
परिणाम: क्योंकि रेसिपी की संरचना एकदम सही थी (यह एक वास्तविक, काम करने वाली रेसिपी पर आधारित थी), शेफ ने इसे स्वीकार कर लिया। लेकिन क्योंकि भरा हुआ हिस्सा अजीब और जटिल था, शेफ भ्रमित हो गया और क्रैश हो गया। इसने एक नया बग उजागर कर दिया।
इसकी आवश्यकता क्यों थी
शोधकर्ताओं ने पाया कि Rust एक बहुत ही जटिल व्याकरण नियमों वाली भाषा है।
- पुराने तरीके अंधे होकर बोर्ड पर तीर चलाने जैसे थे। वे शायद ही कभी लक्ष्य (बग) को हिट कर पाते थे क्योंकि नियम बहुत सख्त हैं।
- प्रत्यक्ष AI जनरेशन एक छात्र को बिना किसी उदाहरण को देखे शून्य से रेसिपी लिखने के लिए कहने जैसा था। छात्र (AI) को Rust के सख्त नियमों के बारे में पर्याप्त जानकारी नहीं थी और उसने कुछ ऐसा लिखा जिसे शेफ ने तुरंत खारिज कर दिया।
- ClozeMaster एक छात्र को आंशिक रूप से लिखी गई, जटिल रेसिपी देने और उसे केवल एक कठिन वाक्य पूरा करने के लिए कहने जैसा था। छात्र को संदर्भ पता था, इसलिए उसने ऐसा कुछ लिखा जो नियमों में फिट बैठता था लेकिन फिर भी इतना अजीब था कि वह शेफ को तोड़ सके।
उन्होंने क्या पाया
टीम ने ClozeMaster नामक एक प्रोटोटाइप टूल बनाया और इसे दो संस्करणों (आधिकारिक और एक कम्युनिटी-निर्मित) पर टेस्ट किया।
- उन्होंने 37 नए बग्स (क्रैश या फ्रीज़) पाए जो पहले किसी ने नहीं देखे थे।
- डेवलपर्स ने उनमें से 27 की पुष्टि की और 10 को ठीक किया।
- उनका टूल पिछले सर्वश्रेष्ठ उपकरणों की तुलना में इन बग्स को खोजने और शेफ की "किचन" (कोड कवरेज) को एक्सप्लोर करने में बहुत बेहतर था।
मुख्य निष्कर्ष (The Takeaway)
पेपर का दावा है कि पुरानी, टूटी हुई कोड को लेने, उसके विशिष्ट हिस्सों को छिपाने और उन हिस्सों को भरने के लिए AI का उपयोग करने से, वे नए, ट्रिकी टेस्ट बना सकते हैं जो Rust कंपाइलर की छिपी हुई कमजोरियों को उजागर करते हैं। यह इतिहास का उपयोग यह अनुमान लगाने के लिए करने का एक तरीका है कि भविष्य की गलतियाँ कहाँ छिपी हो सकती हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।