DeepMind ने S6 साठी सोर्स कोड जारी केला, Python साठी JIT कंपाइलर

S6- खोल मन

S6, CPython साठी एक स्वतंत्र JIT कंपाइलर लायब्ररी आहे

खोल मन, आर्टिफिशियल इंटेलिजन्सच्या क्षेत्रातील प्रगतीसाठी ओळखले जाणारे, नुकतेच जाहीर केले S6 प्रकल्पाचा स्त्रोत कोड सोडण्याचा निर्णय घेतला आहे, जे त्याने Python भाषेसाठी JIT कंपायलरमधून विकसित केले आहे.

प्रकल्प मनोरंजक आहे कारण विस्तार लायब्ररी म्हणून डिझाइन केलेले आहे जे मानक CPython सह एकत्रित केले जाऊ शकते, जे पूर्ण CPython सुसंगतता प्रदान करते आणि सुधारणा आवश्यक नाही इंटरप्रिटर कोडचा. हा प्रकल्प 2019 पासून विकासात आहे, परंतु दुर्दैवाने तो कमी केला गेला आहे आणि आता विकासात नाही.

S6 हा 2019 मध्ये DeepMind मध्ये जस्ट-इन-टाइम ("JIT") संकलनासह CPython वेगवान करण्यासाठी सुरू केलेला प्रकल्प होता. ही कार्ये सामान्य पायथन लायब्ररी म्हणून प्रदान केली जातील आणि CPython इंटरप्रिटरमध्ये कोणतेही बदल आवश्यक नाहीत. V6 ने Javascript साठी जे केले ते Python साठी S8 ने करायचे आहे (नाव V8 ला श्रद्धांजली आहे). काम CPython आवृत्ती 3.7 वर आधारित होते. वर्कलोडवर अवलंबून, आम्ही सामान्य बेंचमार्कमध्ये 9.5x पर्यंत स्पीडअप पाहिले.

स्त्रोत कोड सोडण्याचा निर्णय घेण्याचे मुख्य कारण म्हणजे त्यापैकी एक आणि आधीच नमूद केल्याप्रमाणे प्रकल्पाला समर्थन मिळणे बंद झाले, आणखी एक मुख्य कारण असे दिले गेले की तयार केलेल्या घडामोडींवर आधारित, ते अजुनही अजगर सुधारण्यासाठी उपयुक्त ठरू शकतात. .

आम्ही अंतर्गत S6 वर काम करणे थांबवले आहे. यामुळे, हे भांडार संग्रहित केले गेले आहे आणि आम्ही पुल विनंत्या किंवा समस्या स्वीकारत नाही. पायथन समुदायातील संभाषणांना चालना देण्यासाठी आणि पायथन सुधारण्यासाठी भविष्यातील कार्यास प्रेरणा देण्यासाठी आम्ही खाली ओपन सोर्स केलेले आणि डिझाइन विहंगावलोकन प्रदान केले.

S6 च्या ऑपरेशनबद्दल, आम्ही याचा उल्लेख केला पाहिजे Python साठी S6 ची तुलना JavaScript साठी V8 इंजिनशी होते कार्यांच्या बाबतीत ते सोडवते. लायब्ररी सध्याच्या ceval.c बायटेकोड इंटरप्रिटर ड्रायव्हरला त्याच्या स्वत:च्या अंमलबजावणीसह बदलते जे अंमलबजावणीला गती देण्यासाठी JIT संकलन वापरते.

S6 वर्तमान कार्य आधीच संकलित केले गेले आहे का ते तपासते आणि, तसे असल्यास, संकलित कोड कार्यान्वित करतो, आणि नसल्यास, CPython इंटरप्रिटर प्रमाणेच बायकोड इंटरप्रिटेशन मोडमध्ये फंक्शन कार्यान्वित करतो. इंटरप्रिटेशन प्रक्रिया केलेल्या फंक्शनशी संबंधित निष्पादित विधाने आणि कॉलची संख्या मोजते.

ठराविक मैलाचा दगड गाठल्यानंतर, कोडची गती वाढवण्यासाठी बिल्ड प्रक्रिया सुरू केली जाते जे वारंवार चालते. स्ट्राँगजीट इंटरमीडिएट रिप्रेझेंटेशनवर संकलन केले जाते, जे ऑप्टिमायझेशन नंतर, asmjit लायब्ररी वापरून लक्ष्य प्रणाली मशीन सूचनांमध्ये रूपांतरित केले जाते.

लोडच्या स्वरूपावर अवलंबून, इष्टतम परिस्थितीत, S6 नियमित CPython च्या तुलनेत चाचणी अंमलबजावणी गती 9,5 पट वाढ दर्शवते.

जेव्हा 100 पुनरावृत्ती अंमलात आणली जातात रिचर्ड्स टेस्ट सूटमधून, 7 पट प्रवेग आहे, आणि Raytrace चाचणी चालवताना, ज्यामध्ये बरेच गणित असते, ते 3 ते 4,5 पट वेगवान असते.

ऑप्टिमाइझ करणे कठीण असलेली कार्ये S6 सह C API वापरणारे प्रकल्प आहेत, जसे की NumPy, तसेच मोठ्या संख्येच्या मूल्यांचे प्रकार तपासण्याच्या आवश्यकतेशी संबंधित ऑपरेशन्स.

सिंगल फंक्शन कॉलसाठी देखील खराब कामगिरी दिसून येते जे S6 पायथन इंटरप्रिटरच्या अयोग्य अंमलबजावणीच्या वापरामुळे भरपूर संसाधने वापरतात (विकास इंटरप्रिट मोड ऑप्टिमायझेशनच्या टप्प्यावर पोहोचलेला नाही).

उदाहरणार्थ, अनपॅक सिक्वेन्स चाचणीमध्ये, जे अ‍ॅरे/ट्यूपल्सचे मोठे संच अनपॅक करते, एक कॉल 5 पट पर्यंत मंदगती दर्शवतो आणि एक चक्रीय कॉल CPython कडून 0,97 उत्पन्न करतो.

शेवटी याबद्दल अधिक जाणून घेण्यास इच्छुक असलेल्यांसाठी, तुम्हाला माहित असले पाहिजे की JIT कंपाइलर कोड C++ मध्ये लिहिलेला आहे आणि सध्या तो CPython 3.7 वर आधारित आहे, या व्यतिरिक्त स्त्रोत कोड आधीच Apache 2.0 लायसन्स अंतर्गत खुला आहे आणि त्याचा सल्ला घेतला जाऊ शकतो. खालील दुव्यावरून


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.