अप्रैल 26, 2024

Rajneeti Guru

राजनीति, व्यापार, मनोरंजन, प्रौद्योगिकी, खेल, जीवन शैली और अधिक पर भारत से आज ही नवीनतम भारत समाचार और ताज़ा समाचार प्राप्त करें

AI सिस्टम एक दशक से अधिक समय में कोड सॉर्टिंग में पहला सुधार करता है – Ars Technica

AI सिस्टम एक दशक से अधिक समय में कोड सॉर्टिंग में पहला सुधार करता है – Ars Technica
स्क्रीन पर कंप्यूटर चिह्न छवि।

इसमें कोई संदेह नहीं है कि जिस किसी ने भी बुनियादी कंप्यूटर विज्ञान का अध्ययन किया है, उसने एक छँटाई एल्गोरिथ्म – कोड तैयार करने में समय बिताया है जो वस्तुओं की एक अनियंत्रित सूची लेता है और उन्हें आरोही या अवरोही क्रम में रखता है। यह एक दिलचस्प चुनौती है क्योंकि ऐसा करने के बहुत सारे तरीके हैं और क्योंकि लोगों ने यह पता लगाने में बहुत समय लगाया है कि इस छँटाई को यथासंभव कुशलता से कैसे किया जाए।

क्रमबद्ध करना इतना बुनियादी है कि एल्गोरिदम को प्रोग्रामिंग भाषाओं के अधिकांश मानक पुस्तकालयों में बनाया गया है। और एलएलवीएम कंपाइलर के साथ उपयोग की जाने वाली सी ++ लाइब्रेरी के मामले में, कोड को एक दशक से अधिक समय में छुआ नहीं गया है।

लेकिन Google के डीपमाइंड एआई समूह ने अब एक सुदृढीकरण सीखने का उपकरण विकसित किया है जो पहले मानव कोड उदाहरणों पर प्रशिक्षित किए बिना अत्यधिक अनुकूलित एल्गोरिदम विकसित कर सकता है। चाल उसे एक खेल के रूप में प्रोग्रामिंग का इलाज करने के लिए तैयार करना था।

यह सब एक खेल है

डीपमाइंड, अन्य बातों के अलावा, सॉफ्टवेयर विकसित करने के लिए जाना जाता है जो खुद को गेम खेलना सिखाता है। यह दृष्टिकोण अत्यधिक प्रभावी साबित हुआ है, शतरंज जैसे विविध खेलों को जीतना, ज्ााता हैऔर स्टार क्राफ्ट. जबकि विवरण उस खेल के आधार पर भिन्न होता है जिसके साथ यह काम कर रहा है, कार्यक्रम खुद खेलकर सीखता है और उन विकल्पों को खोजता है जो इसे स्कोर को अधिकतम करने की अनुमति देते हैं।

क्योंकि इसे मनुष्यों द्वारा खेले जाने वाले खेलों पर प्रशिक्षित नहीं किया गया है, डीपमाइंड सिस्टम उन खेलों को खेलने के तरीकों का पता लगा सकता है जिनके बारे में मनुष्य ने सोचा भी नहीं है। बेशक, चूंकि यह हमेशा खुद के खिलाफ खेलता है, ऐसे उदाहरण हैं जहां इसने अंधे धब्बे विकसित किए हैं जिनका मनुष्य शोषण कर सकता है।

यह दृष्टिकोण प्रोग्रामिंग से निकटता से संबंधित है। महान भाषा प्रतिमान कुशल कोड लिखते हैं क्योंकि उन्होंने बहुत सारे मानवीय उदाहरण देखे हैं। लेकिन उसके कारण, वे कुछ ऐसा विकसित करने की बहुत संभावना नहीं रखते हैं जो मनुष्य ने पहले नहीं किया है। यदि हम अच्छी तरह से समझे जाने वाले एल्गोरिदम में सुधार करना चाहते हैं, जैसे कि सॉर्ट फ़ंक्शंस, मौजूदा मानव कोड पर कुछ आधारित करना, तो आपको बेहतर प्रदर्शन मिलेगा। लेकिन वास्तव में एक नया दृष्टिकोण चुनने के लिए आप एआई कैसे प्राप्त करते हैं?

डीपमाइंड के लोगों ने वही तरीका अपनाया है जो उन्होंने शतरंज और के साथ किया था ज्ााता है: उन्होंने कोड ऑप्टिमाइज़ेशन को एक गेम में बदल दिया। AlphaDev सिस्टम ने x86 संकलन एल्गोरिदम विकसित किया है जो कोड विलंबता को एक हिट के रूप में मानता है और यह सुनिश्चित करते हुए उस हिट को कम करने की कोशिश करता है कि कोड त्रुटियों के बिना पूरा हो गया है। सुदृढीकरण सीखने के माध्यम से, अल्फाडेव धीरे-धीरे अत्यधिक कुशल और मजबूत कोड लिखने की क्षमता विकसित करता है।

अल्फादेव के अंदर

यह कहना कि सिस्टम विलंबता में सुधार करता है यह समझाने की तुलना में काफी अलग मामला है कि यह कैसे काम करता है। अधिकांश अन्य जटिल AI सिस्टमों की तरह, AlphaDev कई अलग-अलग घटकों से बना है। एक प्रतिनिधित्व कार्य है, जो कोड के समग्र प्रदर्शन को ट्रैक करता है क्योंकि इसे विकसित किया जा रहा है। इसमें एल्गोरिथ्म की समग्र संरचना, साथ ही साथ x86 रजिस्टरों और मेमोरी का उपयोग शामिल है।

सिस्टम असेंबली निर्देशों को व्यक्तिगत रूप से जोड़ता है, जिसे a द्वारा चुना जाता है मोंटे कार्लो के पेड़ का पता लगाएं– फिर से, गेमिंग सिस्टम से उधार लिया गया एक दृष्टिकोण। इस दृष्टिकोण का “पेड़” पहलू सिस्टम को संभावित निर्देशों की एक बड़ी श्रृंखला से एक सीमित क्षेत्र में जल्दी से कम करने की अनुमति देता है, जबकि मोंटे कार्लो उस शाखा से चुने गए सटीक निर्देशों के लिए यादृच्छिकता की एक डिग्री जोड़ता है। (ध्यान दें कि इस संदर्भ में “सहायता” में वैध, पूर्ण असेंबली बनाने के लिए चुने गए विशिष्ट रिकॉर्ड जैसी चीजें शामिल हैं।)

प्रणाली तब विलंबता और वैधता के लिए असेंबली कोड की स्थिति का मूल्यांकन करती है और इसे एक अंक प्रदान करती है, और इसकी तुलना पिछले स्कोर के स्कोर से करती है। और सुदृढीकरण सीखने के माध्यम से, यह इस बारे में जानकारी से संबंधित है कि कार्यक्रम की स्थिति को देखते हुए पेड़ की विभिन्न शाखाएँ कैसे काम करती हैं। समय के साथ, आप “सीखते हैं” कि अधिकतम स्कोर के साथ एक जीतने वाली खेल स्थिति – क्रमबद्ध पूर्ण – कैसे प्राप्त करें, जिसका अर्थ है न्यूनतम विलंबता।

इस प्रणाली का मुख्य लाभ यह है कि इसमें प्रशिक्षण के लिए कोई कोड उदाहरण शामिल नहीं करना पड़ता है। इसके बजाय, सिस्टम अपने स्वयं के कोड उदाहरण उत्पन्न करता है और फिर उनका मूल्यांकन करता है। इस प्रक्रिया में, यह सूचना पर लटका हुआ है कि कौन से निर्देश सेट छँटाई में प्रभावी हैं।

उपयोगी कोड

जटिल कार्यक्रमों में छंटनी वस्तुओं के बड़े, मनमाने समूहों को संभाल सकती है। लेकिन मानक पुस्तकालयों के स्तर पर, वे बहुत विशिष्ट कार्यों के एक बड़े समूह से निर्मित होते हैं जो केवल एक स्थिति या कुछ मामलों को संभालते हैं। उदाहरण के लिए, तीन वस्तुओं, चार वस्तुओं और पाँच वस्तुओं को छाँटने के लिए अलग-अलग एल्गोरिदम हैं। और कार्यों का एक और सेट है जो अधिकतम तक वस्तुओं की मनमानी संख्या को संभाल सकता है – जिसका अर्थ है कि आप चार वस्तुओं तक को कॉल कर सकते हैं, लेकिन अब और नहीं।

डीपमाइंड ने इनमें से प्रत्येक कार्य के लिए अल्फाडेव निर्धारित किया है, लेकिन वे बहुत अलग तरीके से काम करते हैं। उन कार्यों के लिए जो निर्दिष्ट संख्या में तत्वों को संभालते हैं, बिना किसी शाखा के कोड लिखना संभव है जहां यह चर की स्थिति के आधार पर अलग-अलग कोड निष्पादित करता है। नतीजतन, इस कोड का प्रदर्शन आम तौर पर आवश्यक निर्देशों की संख्या के अनुपात में होता है। AlphaDev सभी सॉर्ट-3, सॉर्ट-5, और सॉर्ट-8 निर्देश, और इससे भी अधिक सॉर्ट-6 और सॉर्ट-7 निर्देश शेव करने में सक्षम था। केवल एक (रैंक 4) था जहां उसे मानव कोड में सुधार करने का कोई तरीका नहीं मिला। वास्तविक सिस्टम पर कोड को बार-बार चलाने से पता चलता है कि कम निर्देशों के परिणामस्वरूप बेहतर प्रदर्शन हुआ।

प्रविष्टियों की एक चर संख्या को क्रमबद्ध करने में कोड में ब्रांचिंग शामिल है, और विभिन्न प्रोसेसरों के पास इन शाखाओं को संभालने के लिए समर्पित हार्डवेयर की अलग-अलग मात्रा होती है। इसलिए, 100 विभिन्न उपकरणों पर इसके प्रदर्शन के आधार पर कोड का मूल्यांकन किया गया था। यहाँ फिर से, AlphaDev ने अतिरिक्त प्रदर्शन में निचोड़ने के तरीके खोजे हैं, और हम इसे एक स्थिति में कैसे करें, इस पर एक नज़र डालेंगे: एक फ़ंक्शन जो चार आइटम तक सॉर्ट करता है।

सी ++ लाइब्रेरी में वर्तमान कार्यान्वयन में, कोड यह देखने के लिए परीक्षणों की एक श्रृंखला चलाता है कि तत्वों की संख्या के लिए कस्टम सॉर्ट फ़ंक्शन को सॉर्ट करने और कॉल करने के लिए कितने तत्वों की आवश्यकता है। संशोधित कोड कुछ अजनबी भी करता है। यदि दो तत्व हैं तो परीक्षण करें और यदि आवश्यक हो तो उन्हें क्रमबद्ध करने के लिए एक अलग फ़ंक्शन कॉल करें। यदि संख्या दो से अधिक है, तो कोड पहले तीन को क्रमबद्ध करने के लिए कहता है। यदि तीन आइटम हैं, तो इस प्रकार के परिणाम लौटाए जाएँगे।

हालाँकि, यदि सॉर्ट करने के लिए चार आइटम हैं, तो यह विशेष कोड चलाता है जो चौथे आइटम को तीन सॉर्ट किए गए आइटमों की एक सरणी के भीतर उपयुक्त स्थान पर सम्मिलित करने में बहुत कुशल है। यह एक अजीब दृष्टिकोण की तरह लगता है, लेकिन यह मेरे मौजूदा कोड से लगातार बेहतर प्रदर्शन कर रहा है।

उत्पादन में

क्योंकि AlphaDev ने अधिक कुशल कोड का उत्पादन किया, टीम इसे LLVM मानक C++ लाइब्रेरी में पुन: एकीकृत करना चाहती थी। यहां समस्या यह है कि कोड सी ++ की बजाय असेंबली में था। इसलिए, उन्हें पीछे की ओर काम करना पड़ा और यह पता लगाना पड़ा कि कौन सा सी ++ कोड एक ही असेंबली का उत्पादन करेगा। एक बार यह हो जाने के बाद, कोड को एलएलवीएम टूलचैन में विलय कर दिया गया था – पहली बार कुछ कोड को एक दशक से अधिक समय में संशोधित किया गया था।

नतीजतन, शोधकर्ताओं ने अनुमान लगाया है कि अल्फाडेव कोड को अब एक दिन में खरबों बार निष्पादित किया जा रहा है।

प्रकृति, 2023। डीओआई: 10.1038/स41586-023-06004-9 (डीओआई के बारे में)।