HarnessLLM: Rust Verification Harness Generation with Large Language Models
HarnessLLM एक स्वचालित फ्रेमवर्क है जो मौजूदा टेस्ट सूट्स से रस्ट (Rust) वेरिफिकेशन हार्नेस उत्पन्न करने और उन्हें पुनरावृत्ति से परिष्कृत करने के लिए लार्ज लैंग्वेज मॉडल्स का लाभ उठाता है, जो पिछले दृष्टिकोणों की तुलना में काफी अधिक सटीकता और दक्षता के साथ वास्तविक दुनिया के मेमोरी सेफ्टी बग्स का सफलतापूर्वक पता लगाता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कंप्यूटर प्रोग्रामिंग की दुनिया को कोड से बने एक विशाल, हलचल भरे शहर के रूप में कल्पना करें। इस शहर में, रस्ट (Rust) भाषा एक अत्यंत सख्त वास्तुकार (architect) के रूप में प्रसिद्ध है। इसमें सुरक्षा के अंतर्निहित नियम हैं जो इमारतों को ढहने या सड़कों के गायब होने से रोकते हैं, यह सुनिश्चित करते हुए कि शहर बिना किसी दुर्घटना के चलता रहे। हालाँकि, इस सुव्यवस्थित शहर में भी, "अनसेफ ज़ोन" (unsafe zones) हैं—ऐसे विशेष क्षेत्र जहाँ शक्तिशाली कार्य करने के लिए नियमों को अस्थायी रूप से हटाया जा सकता है। यदि कोई निर्माता इन क्षेत्रों में सावधान नहीं रहता है, या यदि कोई ट्रैफिक लाइट खराब हो जाती है, तो पूरा शहर एक बड़ी आपदा का शिकार हो सकता है, जैसे कि मेमोरी लीक या अचानक पैनिक (panic)। शहर को सुरक्षित रखने के लिए, इंजीनियर "फॉर्मल वेरिफिकेशन" (formal verification) नामक एक विधि का उपयोग करते हैं, जो एक अत्यंत सख्त सिमुलेशन चलाने जैसा है, यह साबित करने के लिए कि चाहे कुछ भी हो जाए, इमारतें नहीं गिरेंगी। लेकिन यहाँ एक पेंच है: सिमुलेशन चलाने के लिए, आपको पहले एक "हार्नेस" (harness) बनाना होगा। हार्नेस को एक टेस्ट ट्रैक या ट्रेनिंग डमी की तरह समझें। आपको मैन्युअल रूप से यह ट्रैक बनाना पड़ता है, जिसमें आपको सिमुलेटर को ठीक-ठीक बताना होता है कि कौन सी कारें चलानी हैं, कितनी तेज़ चलानी हैं, और उनमें कौन सी बाधाएं डालनी हैं। इसे हाथ से करना धीमा, उबाऊ और गलतियों से भरा होता है, खासकर जब शहर बहुत बड़ा और जटिल हो।
यहाँ एक नए शोधकर्ता दल का प्रवेश होता है जिन्होंने कुछ अलग करने का निर्णय लिया: उन्होंने एक सुपर-स्मार्ट एआई (AI) से पूछा, जिसे लार्ज लैंग्वेज मॉडल (LLM) के रूप में जाना जाता है, कि वे उनके लिए ये टेस्ट ट्रैक बनाएं। ये एआई डिजिटल जीनियस की तरह हैं जिन्होंने लगभग हर किताब और कोड स्निपेट को पढ़ा है, जिससे वे निर्देशों को समझने और कोड लिखने में उत्कृष्ट बन जाते हैं। लेकिन एक समस्या थी। जब शोधकर्ताओं ने पहली बार एआई से ये टेस्ट ट्रैक बनाने के लिए कहा, तो एआई भ्रमित हो गया। वह कभी-कभी ऐसे नकली हिस्से बना देता था जो अस्तित्व में ही नहीं थे, कार्यों के क्रम को गलत कर देता था, या उन जटिल, यादृच्छिक (random) परिदृश्यों को बनाने में विफल रहता था जो वास्तव में शहर की सुरक्षा का परीक्षण करने के लिए आवश्यक थे। एआई कोड लिखने में तो अच्छा था, लेकिन वह सुरक्षा परीक्षण के लिए आवश्यक विशिष्ट, कठोर नियमों का पालन करने में उतना सक्षम नहीं था।
यहीं पर "HarnessLLM" पेपर आता है। लेखक, मिंगहुआ वांग, यूवेई लियू और लिन हुआंग ने केवल एआई से यह नहीं कहा कि "जाओ एक टेस्ट ट्रैक बनाओ।" इसके बजाय, उन्होंने एक चतुर, चरण-दर-चरण वर्कफ़्लो बनाया जो एआई के लिए एक प्रोजेक्ट मैनेजर की तरह कार्य करता है। वे समझ गए कि रस्ट कोडबेस में पहले से ही सूचनाओं का एक खजाना मौजूद है: मानव डेवलपर्स द्वारा लिखे गए मौजूदा टेस्ट केस। ये टेस्ट ब्लूप्रिंट की तरह हैं जो दिखाते हैं कि कोड का उपयोग कैसे किया जाना चाहिए। HarnessLLM इन मौजूदा टेस्ट्स को देखकर यह पता लगाता है कि विशिष्ट "कॉलिंग सिनेरियो" (calling scenarios)—यानी वे सटीक क्षण जहाँ कोड को काम पर लगाया जाता है—क्या हैं। फिर यह उन क्षणों को अलग करता है और उन्हें एआई के लिए एक साफ, सरल रेसिपी में बदल देता है।
असली जादू तब होता है जब एआई को "नॉन-डिटरमिनिस्टिक" (nondeterministic) आर्गुमेंट्स बनाने की आवश्यकता होती है। सरल शब्दों में, इसका अर्थ है कि एआई को कोड पर फेंकने के लिए रैंडम इनपुट का आविष्कार करना होगा ताकि यह देखा जा सके कि क्या वह टूटता है। यदि कोड एक साधारण संख्या की अपेक्षा करता है, तो एआई आसानी से एक रैंडम संख्या का अनुमान लगा सकता है। लेकिन यदि कोड एक जटिल, कस्टम-मेड ऑब्जेक्ट की अपेक्षा करता है जिसमें कई चलते-फिरते हिस्से हों, तो एआई अक्सर भटक जाता है। इसे ठीक करने के लिए, HarnessLLM एक "डिपेंडेंसी ग्राफ" (dependency graph) बनाता है। कल्पना कीजिए कि यह एक मानचित्र है जो दिखाता है कि पहेली का प्रत्येक हिस्सा दूसरे से कैसे जुड़ता है। सिस्टम फिर एआई को एक "चेन-ऑफ-थॉट" (Chain-of-Thought) निर्देश देता है, जो एक चरण-दर-चरण रेसिपी कार्ड की तरह है। यह एआई को बताता है: "पहले, छोटी ईंट बनाओ। फिर, उस ईंट का उपयोग करके दीवार बनाओ। अंत में, उस दीवार का उपयोग करके घर बनाओ।" यह एआई को नींव रखे बिना छत बनाने की कोशिश करने से रोकता है।
इसके अलावा, सिस्टम में एक "फैक्ट-चेकर" (fact-checker) भी बना हुआ है। जब एआई कोड लिखता है, तो उसे कंपाइल (कंप्यूटर द्वारा चलने योग्य प्रारूप में अनुवादित) किया जाता है। यदि कंप्यूटर को कोई त्रुटि मिलती है, तो सिस्टम केवल यह नहीं कहता कि "इसे ठीक करो"; बल्कि यह विशेष रूप से एआई को बताता है, "आपने एक ऐसा टाइप बना दिया जो मौजूद नहीं है," या "आपने कोड के उस हिस्से को बदल दिया जो पहले से ही सही था।" यह एआई को नकली समाधानों की कल्पना करने से रोकता है और उसे केवल वास्तविक त्रुटियों पर ध्यान केंद्रित करने के लिए मजबूर करता है।
शोधकर्ताओं ने इस सिस्टम का परीक्षण 9 वास्तविक दुनिया की रस्ट लाइब्रेरीज़ पर किया, जो शहर के विभिन्न जिलों की तरह हैं। उन्होंने 494 मौजूदा टेस्ट केस से शुरुआत की और HarnessLLM को उन्हें वेरिफिकेशन हार्नेस में बदलने के लिए कहा। परिणाम प्रभावशाली थे। सिस्टम ने 94.66% की सटीकता के साथ 294 विशिष्ट कॉलिंग सिनेरियो सफलतापूर्वक निकाले। इसके बाद इसने उन सभी सिनेरियो के लिए एक वर्किंग हार्नेस तैयार किया, जिससे 100% सफलता दर प्राप्त हुई। प्रत्येक हार्नेस को जेनरेट करने में औसतन लगभग 145 सेकंड लगे। इसकी तुलना में, Autoharness नामक एक मौजूदा टूल केवल उन्हीं सिनेरियो में से लगभग 41% के लिए हार्नेस बनाने में सक्षम था, मुख्य रूप से इसलिए क्योंकि वह जटिल, कस्टम प्रकारों को नहीं संभाल सका जिसे HarnessLLM संभाल सकता था।
शायद सबसे महत्वपूर्ण बात यह है कि यह केवल एक सैद्धांतिक अभ्यास नहीं था। जब शोधकर्ताओं ने जेनरेट किए गए हार्नेस को कोड के विरुद्ध चलाया, तो उन्होंने 6 वास्तविक दुनिया के मेमोरी सेफ्टी बग्स पाए। इनमें से पांच बग्स को डेवलपर्स द्वारा पहले ही ठीक किया जा चुका है, और एक वर्तमान में समीक्षा के अधीन है। यह साबित करता है कि यह टूल केवल सुंदर कोड नहीं बनाता; यह वास्तव में खतरनाक खामियों को खोज निकालता है जो वास्तविक समस्याएं पैदा कर सकती थीं। यह पेपर सुझाव देता है कि मौजूदा ज्ञान (टेस्ट सूट्स) को एआई की रचनात्मक शक्ति के साथ जोड़कर, सख्त नियमों और फीडबैक लूप द्वारा निर्देशित करके, हम सॉफ्टवेयर सुरक्षा के उबाऊ और कठिन कार्य को स्वचालित कर सकते है, जिससे हमारे डिजिटल शहर रहने के लिए बहुत सुरक्षित स्थान बन सकें।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।