PROBE: Benchmarking Code Generation in Large Language Models
यह शोध पत्र PROBE को प्रस्तुत करता है, जो एक व्यापक बेंचमार्क फ्रेमवर्क है जो कार्यात्मक शुद्धता, समाधान निकटता और कोड गुणवत्ता के माध्यम से लार्ज लैंग्वेज मॉडल्स में कोड जनरेशन का मूल्यांकन करता है, और यह प्रकट करता है कि जहाँ मॉडल आशाजनक दिखते हैं, वहीं वे अक्सर जटिल समस्याओं, कम संसाधनों वाली भाषाओं और मौलिक त्रुटियों के साथ संघर्ष करते हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक रोबोट को खाना बनाना सिखा रहे हैं। आप केवल यह नहीं चाहते कि रोबोट एक रेसिपी का पालन करे; आप चाहते हैं कि वह यह समझे कि सामग्री आपस में क्यों मिल रही है, वह व्यंजन को चख सके और जान सके कि क्या इसमें नमक पर्याप्त है, और यह भी सुनिश्चित करे कि वह गलती से रसोई में आग न लगा दे। यह लार्ज लैंग्वेज मॉडल्स (LLMs) की दुनिया है, जो सॉफ्टवेयर इंजीनियरिंग में काम आते हैं। इन मॉडल्स को ऐसे सुपर-स्मार्ट रोबोट के रूप में सोचें जिन्होंने अब तक लिखी गई लगभग हर कुकबुक (कोड) पढ़ ली है। वे "सैंडविच बनाओ" जैसा विवरण देखकर तुरंत उसके निर्देश (कोड) लिख सकते हैं। लेकिन यहाँ एक पेंच है: सिर्फ इसलिए कि एक रोबोट निर्देश लिख सकता है, इसका मतलब यह नहीं है कि सैंडविच स्वादिष्ट होगा, या निर्देश आपको चाकू के बजाय आरी (chainsaw) का उपयोग करने के लिए नहीं कहेंगे। वैज्ञानिक इस बात पर बहुत गहराई से ध्यान देते हैं क्योंकि जैसे-जैसे हम इन रोबोटों को अपना अधिक से अधिक सॉफ्टवेयर लिखने की अनुमति दे रहे हैं, हमें यह जानने की आवश्यकता है कि क्या वे वास्तव में विश्वसनीय हैं या वे केवल अनुमान लगा रहे हैं और बेहतर होने की उम्मीद कर रहे हैं।
प्रवेश होता है PROBE का, जो इन कोड लिखने वाले रोबोटों के लिए एक नया, अत्यंत व्यवस्थित "टेस्ट-टेस्ट" (स्वाद परीक्षण) है। इससे पहले, अधिकांश परीक्षण कुछ इस तरह के थे जैसे किसी रोबोट से पूछना, "क्या आपने सैंडविच बनाया?" और केवल यह जांचना कि क्या रोबोट ने "हाँ" कहा। यदि सैंडविच जल गया था या उसमें ब्रेड नहीं थी, तो परीक्षण को इसकी परवाह नहीं थी जब तक कि रोबोट ने दावा किया कि वह हो गया है। PROBE के पीछे के शोधकर्ताओं ने महसूस किया कि यह निष्पक्ष नहीं था। उन्होंने एक बहुत ही सख्त, अधिक रंगीन मूल्यांकन प्रणाली बनाई जो तीन चीजों की जांच करती है: क्या कोड वास्तव में काम कर रहा था (कार्यात्मक शुद्धता/Functional Correctness)? रोबोट की रेसिपी एक आदर्श मानव रेसिपी के कितने करीब थी (निकटता/Proximity)? और क्या कोड अव्यवस्थित था या सुरुचिपूर्ण (कोड की गुणवत्ता/Code Quality)?
टीम ने छह अलग-अलग रोबोटों—कुछ छोटे और ओपन-सोर्स, कुछ विशाल और प्रोप्रायटरी—को पांच अलग-अलग "भाषाओं" (Python, C++, Java, C, और Rust) में उनकी क्षमताओं के माध्यम से परखा। उन्होंने रोबोट से बात करने के तीन अलग-अलग तरीके आजमाए: केवल एक कमांड देना, पहले एक उदाहरण दिखाना, या रोबोट को कोशिश करने, विफल होने और फिर त्रुटि संदेशों के आधार पर अपनी गलतियों को सुधारने देना।
उन्होंने क्या पाया, यह उत्साहजनक प्रगति और कुछ बहुत ही मजेदार, बहुत मानवीय गलतियों का मिश्रण है। सबसे पहले, बड़े रोबोट आमतौर पर बेहतर प्रदर्शन करते थे, लेकिन सबसे स्मार्ट वाले भी पूर्ण नहीं थे। उन्होंने आसान समस्याओं को लगभग 70% हल किया लेकिन कठिन समस्याओं के साथ वे बुरी तरह संघर्ष करते दिखे। दूसरा, रोबोट को पहले एक उदाहरण दिखाना (एक तकनीक जिसे "इन-कॉन्टेक्स्ट लर्निंग" कहा जाता है) बहुत कम मददगार रहा। यह एक शेफ को सैंडविच बनाने के लिए कहने से पहले उसे सैंडविच की तस्वीर दिखाने जैसा था; वे पहले से ही जानते थे कि इसे कैसे करना है, इसलिए तस्वीर से ज्यादा फर्क नहीं पड़ा। हालांकि, रोबोट को कोशिश करने, विफल होने और फिर उसे त्रुटि संदेश देकर सुधारने देना (फीडबैक इनकॉर्पोरेशन/Feedback Incorporation) एक गेम-चेंजर साबित हुआ। इसने रोबोट को सरल गलतियाँ ठीक करने में मदद की, जैसे कि किसी टूल को इम्पोर्ट करना भूल जाना, और उनकी सफलता दर को लगभग 5% बढ़ा दिया।
लेकिन असली कहानी गलतियों में है। रोबोट अक्सर ऐसे तरीकों से विफल हुए जो आश्चर्यजनक रूप से बुनियादी थे। उन्होंने बहुत अधिक ईंटों के साथ घर बनाने की कोशिश की (मेमोरी एरर), दरवाजे की चाबियाँ लाना भूल गए (मिसिंग इम्पोर्ट्स), या समुद्र तट पर रेत के हर कण को गिनने के चक्कर में लूप में फंस गए (अकुशल एल्गोरिदम)। एक रोबोट ने तो एक ऐसी संख्या की गणना करने की कोशिश की जो इतनी बड़ी थी कि सिस्टम घबरा गया, ठीक वैसे ही जैसे शून्य से विभाजित करने पर कैलकुलेटर टूट जाता है। दिलचस्प बात यह है कि रोबोट Python में बहुत अच्छे थे लेकिन Rust में बहुत खराब थे, जो एक ऐसी भाषा है जो सुरक्षा के मामले में बहुत सख्त है, जिससे पता चलता है कि उन्होंने अभी तक पर्याप्त "Rust कुकबुक्स" नहीं पढ़ी हैं।
सबसे महत्वपूर्ण बात यह है कि शोधकर्ताओं ने पाया कि भले ही रोबोटों ने कोड को "काम करने योग्य" बना दिया था, कोड अक्सर उस तुलना में सरल और छोटा था जो एक इंसान लिखता। हालांकि यह अच्छा लगता है, लेकिन इसका मतलब कभी-कभी यह था कि रोबोट शॉर्टकट ले रहे थे जो वास्तविक दुनिया में टिक नहीं पाएंगे। अध्ययन निष्कर्ष निकालता है कि हालांकि ये AI उपकरण बेहतर हो रहे हैं, वे अभी भी मूर्खतापूर्ण, टालने योग्य गलतियाँ करने के प्रति प्रवृत्त हैं। वे अभी तक रसोई में अकेले छोड़े जाने के लिए तैयार नहीं हैं; उन्हें दुनिया को परोसने से पहले एक मानव शेफ द्वारा रेसिपी की दोबारा जांच करने की आवश्यकता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।