أصدرت DeepMind شفرة المصدر لـ S6 ، مترجم JIT لبيثون

S6- ديب مايند

S6 ، هي مكتبة مترجم JIT مستقلة لـ CPython

العقل العميق، المعروف بتطوراته في مجال الذكاء الاصطناعي ، أعلن ذلك مؤخرًا اتخذ قرارًا بإصدار الكود المصدري لمشروع S6، والذي تم تطويره من مترجم JIT للغة Python.

المشروع مثير للاهتمام لأن تم تصميمه كمكتبة ملحق والتي يمكن أن تتكامل مع معيار CPython ، والذي يوفر توافقًا كاملاً مع برنامج CPython ولا يتطلب أي تعديل من رمز المترجم. كان المشروع قيد التطوير منذ عام 2019 ، ولكن للأسف تم تقليصه ولم يعد قيد التطوير.

كان S6 عبارة عن مشروع بدأ في DeepMind في عام 2019 لتسريع CPython من خلال التجميع في الوقت المناسب ("JIT"). سيتم توفير هذه الوظائف كمكتبة Python عادية ولن تكون هناك حاجة لإجراء تغييرات على مترجم CPython. قصد S6 أن يفعل لبايثون ما فعله V8 لجافا سكريبت (الاسم هو تكريم لـ V8). استند العمل إلى الإصدار 3.7 من CPython. اعتمادًا على حجم العمل ، رأينا تسريعًا يصل إلى 9.5x في المعايير المشتركة.

السبب الرئيسي وراء قرار إصدار الكود المصدري ، أحدها وكما ذكرنا سابقًا هو أن المشروع توقف عن الحصول على الدعم ، وقد تم تقديم سبب آخر وهو أنه بناءً على التطورات التي تم إنشاؤها ، يمكن أن تكون هذه مفيدة لتحسين Python .

لقد توقفنا عن العمل على S6 داخليًا. على هذا النحو ، تمت أرشفة هذا المستودع ونحن لا نقبل طلبات السحب أو المشكلات. نفتح المصدر وقدمنا ​​نظرة عامة على التصميم أدناه لتحفيز المحادثات داخل مجتمع Python وإلهام العمل المستقبلي لتحسين Python.

فيما يتعلق بتشغيل S6 ، يجب أن نذكر ذلك يقارن S6 لـ Python بمحرك V8 لجافا سكريبت من حيث المهام التي يحلها. تستبدل المكتبة برنامج تشغيل مترجم ceval.c bytecode الحالي بتطبيقه الخاص الذي يستخدم تجميع JIT لتسريع التنفيذ.

يتحقق S6 مما إذا كانت الوظيفة الحالية قد تم تجميعها بالفعل وإذا كان الأمر كذلك ، ينفذ الكود المترجم ، وإذا لم يكن كذلك ، ينفذ الوظيفة في وضع تفسير بايت كود مشابه لمترجم CPython. يحسب التفسير عدد العبارات المنفذة والمكالمات المرتبطة بالوظيفة التي تتم معالجتها.

بعد الوصول إلى معلم معين ، تبدأ عملية الإنشاء لتسريع الكود الذي يعمل بشكل متكرر. يتم إجراء التجميع على التمثيل الوسيط strongjit ، والذي ، بعد التحسين ، يتم تحويله إلى تعليمات آلة النظام المستهدفة باستخدام مكتبة asmjit.

اعتمادًا على طبيعة الحمل ، في ظل الظروف المثلى ، يوضح S6 زيادة في سرعة تنفيذ الاختبار تصل إلى 9,5 مرة مقارنةً بـ CPython العادي.

عندما يتم تنفيذ 100 تكرار من جناح اختبار ريتشاردز ، هناك تسارع 7 مرات ، وعند إجراء اختبار Raytrace ، الذي يحتوي على الكثير من الرياضيات ، يكون أسرع من 3 إلى 4,5 مرات.

المهام التي يصعب تحسينها مع S6 هي المشاريع التي تستخدم C API، مثل NumPy ، وكذلك العمليات المتعلقة بالحاجة إلى التحقق من أنواع عدد كبير من القيم.

يظهر الأداء الضعيف أيضًا للمكالمات ذات الوظيفة الواحدة التي تستهلك الكثير من الموارد بسبب استخدام التنفيذ غير الأمثل لمترجم S6 Python (لم يصل التطوير إلى مرحلة تحسين وضع الترجمة).

على سبيل المثال ، في اختبار Unpack Sequence ، الذي يفك حزم مجموعات كبيرة من المصفوفات / المجموعات ، تظهر مكالمة واحدة تباطؤًا يصل إلى 5 مرات ، وتنتج المكالمة الدورية 0,97 من CPython.

أخيرا للراغبين في معرفة المزيد عنها، يجب أن تعلم أن كود مترجم JIT مكتوب بلغة C ++ ويعتمد حاليًا على CPython 3.7 ، بالإضافة إلى حقيقة أن الكود المصدري مفتوح بالفعل بموجب ترخيص Apache 2.0 ويمكن الرجوع إليه من الرابط أدناه.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.