DeepMind a lansat codul sursă pentru S6, un compilator JIT pentru Python

s6-deepmind

S6, este o bibliotecă de compilare JIT autonomă pentru CPython

minte adâncă, cunoscut pentru evoluțiile sale în domeniul inteligenței artificiale, a anunțat recent că a luat decizia de a lansa codul sursă al proiectului S6, care este el dezvoltat dintr-un compilator JIT pentru limbajul Python.

Proiectul este interesant deoarece este conceput ca o bibliotecă de extensie care poate fi integrat cu CPython standard, care oferă compatibilitate completă cu CPython și nu necesită modificare a codului interpretului. Proiectul este în dezvoltare din 2019, dar, din păcate, a fost redus și nu mai este în dezvoltare.

S6 a fost un proiect început în DeepMind în 2019 pentru a accelera CPython cu compilarea just-in-time ("JIT"). Aceste funcții ar fi furnizate ca o bibliotecă Python obișnuită și nu ar fi necesare modificări la interpretul CPython. S6 a intenționat să facă pentru Python ceea ce a făcut V8 pentru Javascript (numele este un omagiu adus V8). Lucrarea s-a bazat pe versiunea CPython 3.7. În funcție de volumul de lucru, am observat creșteri de viteză de până la 9.5 ori în benchmark-urile comune.

Motivul principal pentru care s-a decis lansarea codului sursă, unul dintre ele și după cum sa menționat deja a fost că proiectul a încetat să mai aibă suport, un alt motiv principal a fost dat că, pe baza dezvoltărilor create, acestea pot fi în continuare utile pentru îmbunătățirea python-ului. .

Am încetat să lucrăm pe S6 intern. Ca atare, acest depozit a fost arhivat și nu acceptăm solicitări de extragere sau probleme. Am oferit sursă deschisă și am oferit o prezentare generală a designului mai jos pentru a stimula conversațiile în cadrul comunității Python și a inspira munca viitoare pentru îmbunătățirea Python.

În ceea ce privește funcționarea lui S6, trebuie să menționăm că S6 pentru Python se compară cu motorul V8 pentru JavaScript în ceea ce priveşte sarcinile pe care le rezolvă. Biblioteca înlocuiește driverul de interpretor bytecode ceval.c existent cu propria sa implementare care utilizează compilarea JIT pentru a accelera execuția.

S6 verifică dacă funcția curentă a fost deja compilată și, dacă da, execută codul compilat, iar dacă nu, execută funcția într-un mod de interpretare bytecode similar interpretului CPython. Interpretarea numără numărul de instrucțiuni executate și apeluri asociate cu funcția care este procesată.

După atingerea unei anumite etape, procesul de construire este început pentru a accelera codul care rulează frecvent. Compilarea este efectuată pe reprezentarea intermediară strongjit, care, după optimizare, este convertită în instrucțiuni de mașină a sistemului țintă folosind biblioteca asmjit.

În funcție de natura încărcăturii, în condiții optime, S6 demonstrează o creștere a vitezei de execuție a testului de până la 9,5 ori față de CPython obișnuit.

Când sunt executate 100 de iterații din suita de teste Richards, există o accelerație de 7 ori, iar când rulați testul Raytrace, care conține multă matematică, este de 3 până la 4,5 ori mai rapid.

Sarcini greu de optimizat cu S6 sunt proiectele care folosesc API-ul C, precum NumPy, precum și operațiuni legate de necesitatea verificării tipurilor unui număr mare de valori.

Performanța slabă este observată și pentru apelurile cu o singură funcție care consumă multe resurse datorită utilizării implementării neoptimizate a interpretului S6 Python (dezvoltarea nu a ajuns în stadiul de optimizare a modului de interpretare).

De exemplu, în testul Unpack Sequence, care despachetează seturi mari de matrice/tupluri, un singur apel arată o încetinire de până la 5 ori, iar un apel ciclic produce 0,97 de la CPython.

În cele din urmă pentru cei interesați să afle mai multe despre asta, trebuie să știți că codul compilatorului JIT este scris în C++ și se bazează în prezent pe CPython 3.7, pe lângă faptul că codul sursă este deja deschis sub licența Apache 2.0 și poate fi consultat din linkul de mai jos.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.