Mut4All: Fuzzing Compilers via LLM-Synthesized Mutators Learned from Bug Reports
Mut4All एक पूर्णतः स्वचालित, भाषा-अज्ञेय (language-agnostic) फ्रेमवर्क है जो उच्च गुणवत्ता वाले म्यूटेटर्स को संश्लेषित और परिष्कृत करने के लिए लार्ज लैंग्वेज मॉडल्स और कंपाइलर बग रिपोर्ट्स का लाभ उठाता है, जो Rust और C++ कंपाइलर्स के लिए अद्वितीय कंपाइलर बग्स का पता लगाने और कवरेज में सुधार करने में मौजूदा तरीकों से काफी बेहतर प्रदर्शन करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, अविश्वसनीय रूप से जटिल मशीन (जैसे कि एक कंपाइलर, जो मानव कोड को कंप्यूटर निर्देशों में अनुवादित करने वाला सॉफ़्टवेयर है) में छिपी हुई दरारों को खोजने की कोशिश कर रहे हैं। पारंपरिक रूप से, इन दरारों को खोजने के लिए, आपको विशेषज्ञ मैकेनिकों की एक टीम की आवश्यकता होती है जो मशीन को चुटीले तरीकों से छेड़ने या परखने के लिए विशिष्ट उपकरण मैन्युअल रूप से डिज़ाइन करते हैं। यह धीमा, महंगा है और विशेषज्ञों के पास मशीन को छेड़ने के सीमित तरीके ही होते हैं।
Mut4All एक नया, पूरी तरह से स्वचालित सिस्टम है जो एक सुपर-स्मार्ट, अथक रोबोट टीम की तरह काम करता है। विशेषज्ञों को छेड़ने वाले उपकरण (poking tools) डिजाइन करने के लिए मानव विशेषज्ञों को काम पर रखने के बजाय, Mut4All लार्ज लैंग्वेज मॉडल्स (LLMs) का उपयोग करता है—वही तरह का AI जो टेक्स्ट और कोड लिख सकता है—अपने स्वयं के छेड़ने वाले उपकरणों को आविष्कार करने, बनाने और ठीक करने के लिए।
यह कैसे काम करता है, यहाँ सरल चरणों में दिया गया है:
1. "डिटेक्टिव" एजेंट (म्यूटेटर आविष्कार)
एक जासूस की कल्पना करें जो उन हजारों पुरानी पुलिस रिपोर्टों को पढ़ता है कि अतीत में मशीन कब और क्यों खराब हुई थी।
- यह क्या करता है: Mut4All ओपन-सोर्स समुदायों (जैसे GitHub) से वास्तविक बग रिपोर्टों को देखता है जहाँ लोगों ने कंपाइलर के क्रैश होने की शिकायत की थी।
- उपमा: मशीन को कहाँ छेड़ना है, इसका अनुमान लगाने के बजाय, जासूस कहता है, "हे, हर बार जब किसी ने एक विशिष्ट प्रकार के 'बॉक्स' (Rust में एक जेनेरिक टाइप) या एक 'सेल्फ-रेफरेंसिंग' क्लास (C++ में) का उपयोग करने की कोशिश की, तो मशीन खराब हो गई। चलिए एक ऐसा टूल बनाते हैं जो विशेष रूप से उन चीजों को फिर से तोड़ने की कोशिश करे।"
- परिणाम: यह एक नए छेड़ने वाले उपकरण (poking tool) के लिए एक "नुस्खा" (स्पेसिफिकेशन) लिखता है।
2. "बिल्डर" एजेंट (म्यूटेटर कार्यान्वयन)
एक बार जब जासूस नुस्खा लिख देता है, तो बिल्डर काम पर लग जाता है।
- यह क्या करता है: यह एजेंट उस नुस्खे को लेता है और छेड़ने वाले उपकरण के लिए वास्तविक कंप्यूटर कोड लिखता है।
- उपमा: इसे एक कुशल बढ़ई के रूप में सोचें जिसे कुछ चुनिकी, हाथ से बने आदर्श उपकरणों पर प्रशिक्षित किया गया है। बिल्डर यह सुनिश्चित करने के लिए इस प्रशिक्षण का उपयोग करता है कि नया उपकरण सही सामग्री के साथ बनाया जाए और वह मशीन में बिल्कुल फिट बैठे, न कि पुराने या टूटे हुए ब्लूप्रिंट का उपयोग करे।
- परिणाम: यह एक काम करने वाला कोड (एक "म्यूटेटर") तैयार करता है जो कंपाइलर का परीक्षण करने के लिए प्रोग्रामों को संशोधित कर सकता है।
3. "क्वालिटी कंट्रोल" एजेंट (म्यूटेटर परिशोधन)
कभी-कभी, बिल्डर कोई गलती कर देता है। उपकरण शायद थोड़ा बहुत बड़ा है या इसमें गलत पेंच (screw) का उपयोग किया गया है।
- यह क्या करता है: यह एजेंट एक परीक्षण कार्यक्रम पर नए उपकरण का उपयोग करने का प्रयास करता है। यदि उपकरण क्रैश हो जाता है या विफल हो जाता है, तो एजेंट त्रुटि संदेश (error message) को पढ़ता है, समझता है कि क्या गलत हुआ, और बिल्डर से उसे ठीक करने के लिए कहता है। यह लूप तब तक चलता रहता है जब तक कि टूल पूरी तरह से काम न करने लगे।
- उपमा: यह एक सख्त निरीक्षक की तरह है जो कहता है, "यह उपकरण गियर को जाम कर रहा है। यह रहा कारण कि यह क्यों विफल हुआ। जाओ इसे ठीक करो।"
"सीड" गार्डन (बीज उद्यान)
परीक्षण को और भी बेहतर बनाने के लिए, Mut4All केवल पुराने परीक्षण कार्यक्रमों का उपयोग नहीं करता है। यह एक एडेप्टिव सीड एन्हांसमेंट (Adaptive Seed Enhancement) तकनीक का उपयोग करता है।
- उपमा: कल्पना करें कि आपके पास पौधों का एक बगीचा (सीड प्रोग्राम) है। केवल उन्हें पानी देने के बजाय, Mut4All एक पौधे से एक शाखा लेता है और उसे दूसरे पौधे पर ग्राफ्ट (कलम) करता है, लेकिन केवल तभी जब वह ग्राफ्ट सफल होने की संभावना रखता हो (सफलतापूर्वक कंपाइल हो)। यह अद्वितीय परीक्षण मामलों का एक विशाल, विविध बगीचा बनाता है जो छिपे हुए बग्स को प्रकट करने की अधिक संभावना रखते हैं।
परिणाम: उन्होंने क्या पाया?
शोधकर्ताओं ने दो प्रमुख प्रोग्रामिंग भाषाओं: Rust और C++ पर इस सिस्टम का परीक्षण किया।
- दक्षता: उन्होंने 1,000 बग रिपोर्टों का विश्लेषण किया और स्वचालित रूप से 722 नए छेड़ने वाले उपकरण (Rust के लिए 319, C++ के लिए 403) बनाए।
- लागत: यह अविश्वसनीय रूप से सस्ता था। AI का उपयोग करके प्रत्येक टूल को बनाने की लागत केवल लगभग 8 सेंट थी।
- सफलता: जब उन्होंने इन उपकरणों का उपयोग वास्तविक दुनिया के कंपाइलरों (जैसे rustc, GCC, और Clang) का परीक्षण करने के लिए किया, तो उन्हें 96 बग मिले।
- इनमें से 58 बिल्कुल नए थे (जिनके बारे में पहले कोई नहीं जानता था)।
- 22 को डेवलपर्स द्वारा पहले ही ठीक किया जा चुका है।
- सिस्टम ने ऐसे बग ढूंढे जिन्हें अन्य टूल्स मिस कर गए थे, जिससे साबित होता है कि यह एक शक्तिशाली नया तरीका है।
यह एक बड़ी बात क्यों है?
Mut4All से पहले, इन बग्स को खोजने के लिए विशेषज्ञों को मैन्युअल रूप से जटिल नियम लिखने की आवश्यकता होती थी, जो धीमा था और सरल ट्रिक्स तक सीमित था। Mut4All इस पूरी प्रक्रिया को स्वचालित करता है। यह पिछली गलतियों से सीखता है, अपने स्वयं के उपकरण बनाता है, और अपनी गलतियों को ठीक करता है, जिससे यह उन गहरे और जटिल बग्स को खोजने में सक्षम होता है जिन्हें इंसान और पुराने टूल्स नहीं देख पाते थे। यह मानव मैकेनिकों की एक टीम से अपग्रेड होकर एक स्व-मरम्मत करने वाले, स्व-आविष्कार करने वाले रोबोट कारखाने में बदलने जैसा है जो कभी सोता नहीं है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।