DeepMind zverejnil zdrojový kód pre S6, kompilátor JIT pre Python

S6-hlboká myseľ

S6, je samostatná knižnica kompilátora JIT pre CPython

hlboká myseľ, známy pre svoj vývoj v oblasti umelej inteligencie, to nedávno oznámil sa rozhodla zverejniť zdrojový kód projektu S6, ktorý vyvinul z JIT kompilátora pre jazyk Python.

Projekt je zaujímavý pretože je navrhnutá ako rozširujúca knižnica ktorý možno integrovať so štandardným CPythonom, ktorý poskytuje plnú kompatibilitu s CPython a nevyžaduje úpravu tlmočníckeho kódu. Projekt je vo vývoji od roku 2019, ale bohužiaľ bol zmenšený a už sa nevyvíja.

S6 bol projekt spustený v rámci DeepMind v roku 2019 s cieľom urýchliť CPython kompiláciou just-in-time („JIT“). Tieto funkcie by sa poskytovali ako normálna knižnica Pythonu a neboli by potrebné žiadne zmeny v interprete CPythonu. S6 zamýšľal urobiť pre Python to, čo V8 urobil pre Javascript (názov je poctou V8). Práca bola založená na CPythone verzie 3.7. V závislosti od pracovného zaťaženia sme v bežných benchmarkoch zaznamenali zrýchlenie až 9.5x.

Hlavným dôvodom, prečo sa rozhodlo uvoľniť zdrojový kód, jedným z nich a ako už bolo spomenuté, bolo, že projekt prestal mať podporu, ďalším z hlavných dôvodov bolo, že na základe vytvoreného vývoja môžu byť stále užitočné pre zlepšenie pythonu .

Prestali sme pracovať na S6 interne. Ako taký bol tento archív archivovaný a neprijímame žiadosti o stiahnutie ani problémy. Otvorili sme zdroje a nižšie sme poskytli prehľad dizajnu, aby sme stimulovali konverzácie v rámci komunity Python a inšpirovali budúcu prácu na zlepšení Pythonu.

Čo sa týka fungovania S6, treba spomenúť, že S6 pre Python je porovnateľný s motorom V8 pre JavaScript z hľadiska úloh, ktoré rieši. Knižnica nahrádza existujúci ovládač interpretátora bajtového kódu ceval.c vlastnou implementáciou, ktorá využíva kompiláciu JIT na urýchlenie vykonávania.

S6 skontroluje, či už bola skompilovaná aktuálna funkcia a ak áno, vykoná kompilovaný kód a ak nie, vykoná funkciu v režime interpretácie bajtkódu podobnom interpreteru CPython. Interpretácia počíta počet vykonaných príkazov a volaní spojených so spracovávanou funkciou.

Po dosiahnutí určitého míľnika sa spustí proces zostavovania na zrýchlenie kódu ktorá beží často. Kompilácia sa vykonáva na strednej reprezentácii strongjit, ktorá sa po optimalizácii prevedie na strojové inštrukcie cieľového systému pomocou knižnice asmjit.

V závislosti od charakteru záťaže, za optimálnych podmienok, S6 vykazuje až 9,5-násobné zvýšenie rýchlosti vykonávania testu v porovnaní s bežným CPythonom.

Keď sa vykoná 100 opakovaní z Richardsovho testovacieho balíka, dochádza k 7-násobnému zrýchleniu, a pri spustení testu Raytrace, ktorý obsahuje veľa matematiky, je to 3 až 4,5 krát rýchlejšie.

Úlohy, ktoré sa ťažko optimalizujú s S6 sú projekty, ktoré používajú C API, ako je NumPy, ako aj operácie súvisiace s potrebou kontroly typov veľkého počtu hodnôt.

Slabý výkon sa prejavuje aj pri volaniach jednej funkcie ktoré spotrebúvajú veľa zdrojov kvôli použitiu neoptimalizovanej implementácie interpreta S6 Python (vývoj nedospel do štádia optimalizácie režimu interpreta).

Napríklad v teste Unpack Sequence, ktorý rozbaľuje veľké sady polí/níc, jedno volanie ukazuje spomalenie až 5-krát a cyklické volanie dáva 0,97 z CPythonu.

Konečne pre tých, ktorí majú záujem dozvedieť sa viac, mali by ste vedieť, že kód kompilátora JIT je napísaný v jazyku C++ a momentálne je založený na CPythone 3.7, okrem toho, že zdrojový kód je už otvorený pod licenciou Apache 2.0 a je možné si ho pozrieť z odkazu nižšie.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.