DeepMind ochiq manbali S6, CPython uchun JIT kompilyatori ilovasiga ega kutubxona

Sun'iy intellekt sohasidagi ishlanmalari bilan tanilgan DeepMind kompaniyasi Python tili uchun JIT kompilyatorini ishlab chiqqan S6 loyihasining manba kodini ochdi. Loyiha qiziqarli, chunki u standart CPython bilan integratsiyalashgan, CPython bilan toʻliq muvofiqlikni taʼminlovchi va tarjimon kodini oʻzgartirishni talab qilmaydigan kengaytmali kutubxona sifatida yaratilgan. Loyiha 2019 yildan beri ishlab chiqilmoqda, ammo afsuski, u to'xtatildi va endi rivojlanmayapti. Yaratilgan ishlanmalar Python-ni takomillashtirish uchun foydali bo'lishi mumkinligi sababli, kodni ochishga qaror qilindi. JIT kompilyator kodi C++ da yozilgan va CPython 3.7 ga asoslangan. va Apache 2.0 litsenziyasi ostida ochiq manba hisoblanadi.

U hal qilishi mumkin bo'lgan vazifalar nuqtai nazaridan Python uchun S6 JavaScript uchun V8 dvigateli bilan taqqoslanadi. Kutubxona mavjud ceval.c bayt-kod tarjimon ishlovchisini o'zining bajarilishini tezlashtirish uchun JIT kompilyatsiyasidan foydalanadigan o'rniga almashtiradi. S6 joriy funktsiya allaqachon kompilyatsiya qilinganligini tekshiradi va agar shunday bo'lsa, kompilyatsiya qilingan kodni bajaradi va agar bo'lmasa, CPython tarjimoniga o'xshash funktsiyani bayt kodini talqin qilish rejimida ishlaydi. Tarjima qilish jarayonida bajarilgan ko'rsatmalar va ishlov berilayotgan funktsiya bilan bog'liq qo'ng'iroqlar soni hisobga olinadi. Muayyan bosqichga erishgandan so'ng, tez-tez bajariladigan kodni tezlashtirish uchun kompilyatsiya jarayoni boshlanadi. Kompilyatsiya oraliq kuchli jit ko'rinishida amalga oshiriladi, u optimallashtirilgandan so'ng asmjit kutubxonasi yordamida maqsadli tizimning mashina ko'rsatmalariga aylantiriladi.

Ish yukining xususiyatiga qarab, optimal sharoitlarda S6 oddiy CPython bilan solishtirganda testni bajarish tezligini 9.5 baravarga oshirishni namoyish etadi. Richards test to'plamining 100 ta takrorlanishini bajarishda 7 marta tezlashuv kuzatiladi va katta hajmdagi matematik hisoblarni o'z ichiga olgan Raytrace testini bajarishda 3-4.5 marta tezlashishi kuzatiladi.

S6 yordamida optimallashtirish qiyin bo'lgan vazifalar orasida NumPy kabi C API-dan foydalanadigan loyihalar, shuningdek, ko'p sonli qiymatlar turlarini tekshirish zarurati bilan bog'liq operatsiyalar mavjud. S6-ning o'zining Python tarjimonining optimallashtirilmagan ilovasidan foydalanish tufayli resurs talab qiladigan funktsiyalarning bir martalik qo'ng'iroqlari uchun past unumdorlik ham kuzatilmoqda (ishlab chiqish sharhlash rejimini optimallashtirish bosqichiga etib bormagan). Masalan, massivlar/kortejlarning katta to'plamlarini ochadigan Unpack Sequence testida bitta qo'ng'iroqda 5 martagacha sekinlashuv kuzatiladi va tsiklik qo'ng'iroq bilan ishlash CPython'dan 0.97 ni tashkil qiladi.

Manba: opennet.ru

a Izoh qo'shish