Generative Compilation: On-the-Fly Compiler Feedback as AI Generates Code
यह शोध पत्र "जेनरेटिव कंपाइलेशन" (generative compilation) प्रस्तुत करता है, जो एक हल्के "सीलर" (sealor) रूपांतरण का उपयोग करने वाला एक नवीन दृष्टिकोण है ताकि मानक कंपाइलर को एआई कोड जनरेशन के दौरान आंशिक प्रोग्रामों पर वास्तविक समय में फीडबैक प्रदान करने में सक्षम बनाया जा सके, जिससे व्हाइट-बॉक्स मॉडल एक्सेस की आवश्यकता के बिना रस्ट (Rust) जैसी जटिल भाषाओं के लिए त्रुटि कैस्केड (error cascades) को कम किया जा सके और कार्यात्मक शुद्धता में सुधार किया जा सके।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक बहुत ही प्रतिभाशाली, लेकिन थोड़े जल्दबाज़ रोबोट को कहानी लिखना सिखा रहे हैं। यह रोबोट, एक लार्ज लैंग्वेज मॉडल (LLM) है, जो वाक्य में अगले शब्द का अनुमान लगाने में बहुत माहिर है, लेकिन उसे व्याकरण या तर्क के नियमों का वास्तव में ज्ञान नहीं है। यह एक ऐसा वाक्य लिख सकता है जो सुनने में काव्यमय लगे लेकिन भौतिकी के नियमों को तोड़ दे, या कोडिंग की दुनिया में, यह एक ऐसा प्रोग्राम लिख सकता है जो दिखने में शानदार हो लेकिन कंप्यूटर को क्रैश कर दे। इसे ठीक करने के लिए, हम आमतौर पर रोबोट को पूरी कहानी खत्म करने देते हैं, फिर उसे एक सख्त संपादक (एक कंपाइलर) को सौंप देते हैं जो नियमों की जांच करता है। यदि संपादक को कोई गलती मिलती है, तो वह पूरी कहानी को लाल पेन के साथ वापस भेज देता है, और रोबोट को फिर से शुरू करना पड़ता है या उस गड़बड़ को ठीक करने की कोशिश करनी पड़ती है। समस्या यह है कि जब तक संपादक बोलता है, तब तक रोबोट ने उस एक छोटी सी गलती के आधार पर पचास और वाक्य लिख दिए होंगे, जिससे एक बड़ा, उलझा हुआ जाल बन जाता है जिसे सुलझाना कठिन होता है।
यह शोधपत्र रोबोट की मदद करने का एक नया तरीका बताता है: बजाय इसके कि अंत तक प्रतीक्षा की जाए, क्या होगा यदि संपादक रोबोट के लिखते समय ही सुधारों की फुसफुसाहट कर सके? लेखक, जो कंप्यूटर वैज्ञानिकों की एक टीम है, इस तकनीक को "जेनरेटिव कंपाइलेशन" (Generative Compilation) कहते हैं। उन्होंने एक चतुर तरकीब निकाली जिससे मानक, तैयार-मिलने वाले कोड एडिटर्स (कंपाइलर्स) को रोबोट के काम को होते हुए जांचने की अनुमति मिलती है, बिना एडिटर को फिर से बनाए या रोबोट के दिमाग के अंदर झाँके। उन्होंने इसका परीक्षण रस्ट (Rust) भाषा पर किया, जो अपनी सुरक्षा के प्रति बहुत सख्त होने के लिए प्रसिद्ध है लेकिन इसे सही रूप में लाना भी बहुत कठिन है। उनके निष्कर्ष बताते हैं कि गलतियों को जल्दी पकड़ने से, रोबोट कम गलतियाँ करता है, बेहतर कोड लिखता है, और अपने कार्यों को तेज़ी से पूरा करता है, और वह भी बिना किसी अत्यधिक महंगे, कस्टम-निर्मित एडिटर के।
समस्या: "बहुत देर से आने वाला" संपादक
कोड लिखने को एक बहुत ही सख्त आर्किटेक्ट के साथ घर बनाने जैसा समझें। पुराने तरीके में (जिसे "पोस्ट-जनरेशन फीडबैक" कहा जाता है), निर्माता (AI) बिना मदद मांगे ईंट-दर-ईंट पूरा घर बनाता है। एक बार जब छत लग जाती है, तो आर्किटेक्ट अंदर आता है, देखता है कि नींव में दरार है, और कहता है, "फिर से शुरू करो।" निर्माता को पूरी चीज़ को गिराना पड़ता है, भले ही गलती पहली ईंट में हुई हो। यह बर्बादी और निराशाजनक है।
एक अन्य विधि, जिसे "कन्स्ट्रेंड डिकोडिंग" (Constrained Decoding) कहा जाता है, निर्माता को गलत ईंट बिछाने से रोकने की कोशिश करती है। लेकिन इसके लिए निर्माता का पारदर्शी (जैसे कि कांच का घर) होना आवश्यक है ताकि आर्किटेक्ट देख सके कि निर्माता क्या सोच रहा है और उसे कदम उठाने से पहले रोक सके। आज के अधिकांश बेहतरीन AI निर्माता "ब्लैक बॉक्स" हैं—हम उनके दिमाग के अंदर नहीं देख सकते, इसलिए हम इस विधि का उपयोग नहीं कर सकते। इसके अलावा, एक कस्टम आर्किटेक्ट बनाना जो रस्ट जैसी जटिल भाषा के हर संभव नियम को समझ सके, अत्यंत कठिन और महंगा है।
समाधान: "सील-ऑर" (Seal-or) की तरकीब
लेखक एक मध्य मार्ग पेश करते हैं जिसे जेनरेटिव कंपाइलेशन कहा जाता है। उनका गुप्त हथियार एक टूल है जिसे वे सील-ऑर (शब्द "सील" का एक खेल) कहते हैं।
कल्पना कीजिए कि AI एक पत्र लिख रहा है, लेकिन वह वाक्य के बीच में ही रुक जाता है: "बिल्ली बैठी थी..."
एक सामान्य कंपाइलर (सख्त संपादक) इस अधूरे वाक्य को देखेगा और कहेगा, "मैं इसे ग्रेड नहीं कर सकता; यह एक वास्तविक वाक्य नहीं है।"
सील-ऑर एक चतुर अनुवादक है। यह उस अधूरे वाक्य को लेता है और तुरंत उसमें "डमी" शब्द भर देता है जो वाक्य को व्याकरणिक रूप से पूर्ण बनाते हैं, बस एक पल के लिए। यह "बिल्ली बैठी थी..." को "बिल्ली बैठी थी [मैजिक प्लेसहोल्डर] पर।" में बदल देता है।
अब, सख्त कंपाइलर इस "सील" किए गए वाक्य को देख सकता है। यदि व्याकरण गलत है (उदाहरण के लिए, बिल्ली मैजिक प्लेसहोल्डर पर नहीं बैठ सकती), तो कंपाइलर चिल्लाएगा, "हे, बिल्ली उस प्लेसहोल्डर पर नहीं बैठ सकती!" सील-ऑर फिर उस शिकायत को AI तक अनुवादित करता है: "आप बिल्ली को प्लेसहोल्डर पर नहीं रख सकते; दूसरा शब्द आज़माएं।" AI फिर तुरंत अपनी गलती सुधार लेता है, इससे पहले कि वह अगला वाक्य लिखे।
सील-ऑर का जादू यह है कि इसे बहुत सावधान रहने के लिए डिज़ाइन किया गया है। यह केवल उन्हीं चीजों से खाली जगहों को भरता है जो सही हो सकती हैं। यदि AI का आंशिक वाक्य अंततः एक पूर्ण वाक्य बन सकता है, तो सील-ऑर यह सुनिश्चित करता है कि कंपाइलर उसे केवल इसलिए खारिज न करे क्योंकि वह अधूरा है। लेकिन यदि AI ने कोई घातक गलती की है (जैसे रस्ट में एक "बॉरोइंग" त्रुटि, जहाँ एक वेरिएबल का उपयोग एक साथ दो जगहों पर किया जाता है), तो सील-ऑर यह सुनिश्चित करता है कि कंपाइलर उसे तुरंत पकड़ ले।
उन्होंने क्या पाया: गलतियों को जल्दी पकड़ना
टीम ने वास्तविक दुनिया के कोडिंग कार्यों पर इस विचार का परीक्षण किया, जिसमें सात अलग-अलग AI मॉडल्स को रस्ट प्रोग्राम लिखने के लिए कहा गया। उन्होंने तीन विधियों की तुलना की:
- केवल AI: सिर्फ अनुमान लगाना।
- AI + पोस्ट-जनरेशन फीडबैक: AI पूरी चीज़ लिखता है, सुधारा जाता है, और फिर से प्रयास करता है।
- AI + जेनरेटिव कंपाइलेशन: सील-ऑर AI के लिखते समय ही काम की जाँच करता है।
परिणाम प्रभावशाली थे। जेनरेटिव कंपाइलेशन का उपयोग करने पर:
- कम क्रैश: प्रोग्रामों की संख्या जो कंपाइल होने में विफल रहे, काफी कम हो गई। कुछ मॉडल्स के लिए, त्रुटि दर 60% से अधिक से घटकर एकल अंकों में आ गई।
- बेहतर कोड: जो प्रोग्राम चलते थे, वे अधिक बार सही ढंग से काम करते थे।
- तेज़ सुधार: AI ने बेकार कोड बनाने में कम समय बिताया। क्योंकि सील-ऑर ने गलतियों को जल्दी पकड़ा (अक्सर गलती होने के कुछ ही लाइनों बाद), AI ने एक गलत विचार पर आधारित पूरा अध्याय लिखने में समय बर्बाद नहीं किया।
- छोटी शिकायतें: अंत में गलतियों की एक लंबी सूची मिलने के बजाय, AI को विशिष्ट गलती के बारे में छोटे, केंद्रित संकेत मिले, जिससे यह समझना आसान हो गया कि क्या गलत हुआ था।
यह क्यों महत्वपूर्ण है
यह दृष्टिकोण एक बड़ी बात है क्योंकि इसके लिए हमें AI या कंपाइलर को फिर से बनाने की आवश्यकता नहीं है। यह उन "ब्लैक बॉक्स" मॉडल्स के साथ काम करता है जो हमारे पास पहले से मौजूद हैं और उन मानक कंपाइलर्स का उपयोग करता है जिन पर प्रोग्रामर्स पहले से भरोसा करते हैं। यह कंपाइलर को एक "अंतिम न्यायाधीश" से बदलकर एक "लाइव कोच" में बदल देता है।
लेखकों ने गणितीय रूप से (लीन नामक एक औपचारिक भाषा का उपयोग करके) सिद्ध किया है कि उनका सील-ऑर सुरक्षित है: यह कंपाइलर को गलत कोड स्वीकार करने के लिए धोखा नहीं देगा, और न ही ऐसे कोड को खारिज करेगा जिसे सुधारा जा सकता था। उन्होंने फिर वास्तविक रस्ट भाषा के लिए एक कार्यात्मक संस्करण बनाया और दिखाया कि यह व्यवहार में काम करता है।
संक्षेप में, जेनरेटिव कंपाइलेशन AI को एक सुरक्षा जाल देने जैसा है जो उसे गिरने से पहले पकड़ लेता है, बजाय इसके कि गिरने के बाद उसे बताया जाए कि वह गिर गया है। यह AI को कोडिंग के लिए सुरक्षित, तेज़ और अधिक विश्वसनीय बनाता है, विशेष रूप से उन भाषाओं के लिए जिनमें उच्च सटीकता की आवश्यकता होती है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।