DeepMind اوپن سورس S6، هڪ لائبريري سان گڏ هڪ JIT ڪمپيلر عمل درآمد لاءِ CPython

ڊيپ مائنڊ، مصنوعي ذهانت جي ميدان ۾ پنهنجي ترقي لاءِ مشهور آهي، ايس 6 پروجيڪٽ جو سورس ڪوڊ کوليو آهي، جنهن پيٿون ٻولي لاءِ JIT ڪمپلر تيار ڪيو آهي. پروجيڪٽ دلچسپ آهي ڇاڪاڻ ته اها هڪ ايڪسٽينشن لائبريري جي طور تي ٺهيل آهي جيڪا معياري CPython سان ضم ٿي، CPython سان مڪمل مطابقت کي يقيني بڻائي ٿي ۽ مترجم ڪوڊ جي ترميم جي ضرورت ناهي. پروجيڪٽ 2019 کان ترقي ڪري رهيو آهي، پر بدقسمتي سان اهو بند ڪيو ويو ۽ هاڻي ترقي نه ڪري رهيو آهي. جيئن ته پيدا ٿيل ترقيات پائٿون کي بهتر بڻائڻ لاءِ ڪارائتو ٿي سگهي ٿي، اهو فيصلو ڪيو ويو ته ڪوڊ کي کولڻ جو ذريعو. JIT گڏ ڪرڻ وارو ڪوڊ C++ ۾ لکيل آهي ۽ CPython 3.7 تي ٻڌل آهي. ۽ Apache 2.0 لائسنس تحت کليل ذريعو آهي.

ڪمن جي لحاظ کان اهو حل ڪري سگھي ٿو، S6 لاء Python جاوا اسڪرپٽ لاء V8 انجڻ جي مقابلي ۾. لائبريري موجوده بائيٽ ڪوڊ مترجم هينڊلر ceval.c کي ان جي پنهنجي عمل سان تبديل ڪري ٿي جيڪا عمل کي تيز ڪرڻ لاءِ JIT ڪمپليشن استعمال ڪري ٿي. S6 چيڪ ڪري ٿو ته ڇا موجوده فنڪشن اڳ ۾ ئي مرتب ٿيل آهي ۽، جيڪڏهن ائين آهي، ته مرتب ڪيل ڪوڊ تي عمل ڪري ٿو، ۽ جيڪڏهن نه، فنڪشن کي هلائي ٿو bytecode تعبير واري موڊ ۾، CPython مترجم وانگر. تفسير جي دوران، عمل جي عمل سان لاڳاپيل هدايتون ۽ ڪالز جو تعداد شمار ڪيو ويندو آهي. هڪ خاص سنگ ميل تائين پهچڻ کان پوءِ، هڪ تاليف جو عمل شروع ڪيو ويندو آهي تيزيءَ سان جاري ڪيل ڪوڊ کي. تاليف هڪ وچولي مضبوطجٽ نمائندگي ۾ ڪيو ويندو آهي، جيڪو، اصلاح کان پوء، اسمجٽ لائبريري استعمال ڪندي ٽارگيٽ سسٽم جي مشين جي هدايتن ۾ تبديل ڪيو ويندو آهي.

ڪم لوڊ جي نوعيت تي مدار رکندي، S6 بهترين حالتن ۾ باقاعده CPython جي مقابلي ۾ 9.5 ڀيرا ٽيسٽ جي عمل جي رفتار ۾ اضافو ڏيکاري ٿو. جڏهن رچرڊز ٽيسٽ سوٽ جي 100 ورهاڱي کي هلائيندي، هڪ 7x اسپيڊ اپ ڏٺو ويندو آهي، ۽ جڏهن Raytrace ٽيسٽ کي هلائيندي، جنهن ۾ رياضياتي حسابن جي وڏي مقدار شامل هوندي آهي، هڪ 3-4.5x اسپيڊ اپ ڏٺو ويندو آهي.

انهن ڪمن ۾ جيڪي S6 استعمال ڪندي بهتر ڪرڻ ۾ مشڪل آهن اهي منصوبا آهن جيڪي C API استعمال ڪن ٿا، جهڙوڪ NumPy، ۽ انهي سان گڏ آپريشن سان لاڳاپيل عملن جي وڏي تعداد جي قسمن کي جانچڻ جي ضرورت آهي. Python مترجم جي S6 جي پنهنجي غير اصلاحي عمل جي استعمال جي ڪري وسيلن جي گھڻائي واري ڪم جي واحد ڪالن لاءِ گھٽ ڪارڪردگي پڻ ڏسڻ ۾ اچي ٿي (ترقي تعبير واري موڊ کي بهتر ڪرڻ جي اسٽيج تي نه پهچي وئي آهي). مثال طور، Unpack Sequence ٽيسٽ ۾، جيڪو صفن/ٽپلز جي وڏين سيٽن کي انپيڪ ڪري ٿو، ھڪڙي ھڪڙي ڪال سان 5 ڀيرا تائين سستي آھي، ۽ ھڪڙي سائيڪل ڪال سان ڪارڪردگي CPython کان 0.97 آھي.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو