A DeepMind kiadta az S6 forráskódját, a Python JIT-fordítóját

s6-deepmind

Az S6 egy önálló JIT fordítókönyvtár a CPythonhoz

mély elme, a mesterséges intelligencia terén elért fejlesztéseiről ismert, nemrég bejelentette, hogy úgy döntött, hogy kiadja az S6 projekt forráskódját, amelyet egy JIT fordítóból fejlesztett ki a Python nyelvhez.

A projekt érdekes mert bővítménykönyvtárnak készült amely integrálható a szabványos CPython-nal, amely teljes CPython-kompatibilitást biztosít, és nem igényel módosítást a tolmácskódból. A projekt 2019 óta fejlesztés alatt áll, de sajnos visszafogták, és már nincs fejlesztés alatt.

Az S6 a DeepMind keretein belül 2019-ben indult projekt volt a CPython felgyorsítására a just-in-time (JIT) fordítással. Ezeket a funkciókat normál Python-könyvtárként biztosítanák, és nem kellene módosítani a CPython-értelmezést. Az S6 azt tervezte, hogy a Python esetében ugyanaz, mint a V8 a Javascript esetében (a név tisztelgés a V8 előtt). A munka a CPython 3.7-es verzióján alapult. A munkaterheléstől függően akár 9.5-szeres gyorsulást tapasztaltunk a közös benchmarkokban.

A fő ok, amiért a forráskód kiadása mellett döntöttek, az egyik és ahogy már említettük, hogy a projekt támogatása megszűnt, a másik fő ok az volt, hogy a létrehozott fejlesztések alapján ezek még hasznosak lehetnek a python fejlesztésében. .

Az S6-on belüli munkát leállítottuk. Mint ilyen, ez az adattár archiválva van, és nem fogadunk el lehívási kéréseket vagy problémákat. Az alábbiakban nyílt forráskódú és tervezési áttekintést adtunk, hogy ösztönözzük a Python közösségen belüli beszélgetéseket, és ösztönözzük a Python fejlesztésére irányuló jövőbeli munkát.

Az S6 működésével kapcsolatban meg kell említenünk, hogy Az S6 for Python összehasonlítható a JavaScript V8-as motorjával feladatokat tekintve megoldja. A könyvtár lecseréli a meglévő ceval.c bájtkód értelmező illesztőprogramot egy saját megvalósítására, amely JIT fordítást használ a végrehajtás felgyorsítására.

Az S6 ellenőrzi, hogy az aktuális függvényt már lefordították-e és ha igen, akkor végrehajtja a lefordított kódot, és ha nem, akkor a függvényt a CPython interpreterhez hasonló bájtkód értelmezési módban hajtja végre. Az értelmezés megszámolja a feldolgozott függvényhez tartozó végrehajtott utasítások és hívások számát.

Egy bizonyos mérföldkő elérése után elindul az építési folyamat a kód felgyorsítása érdekében amely gyakran fut. A fordítás a strongjit köztes reprezentáción történik, amely az optimalizálás után az asmjit könyvtár segítségével célrendszergépi utasításokká konvertálódik.

A terhelés jellegétől függően, optimális körülmények között az S6 akár 9,5-szeresére növeli a teszt végrehajtási sebességét a normál CPythonhoz képest.

Ha 100 iterációt hajtanak végre a Richards tesztkészletből, 7-szeres gyorsulás van, a sok matematikát tartalmazó Raytrace teszt futtatásakor pedig 3-4,5-szer gyorsabb.

Nehezen optimalizálható feladatok S6-el azok a projektek, amelyek a C API-t használják, mint például a NumPy, valamint a nagyszámú érték típusának ellenőrzésével kapcsolatos műveletek.

Gyenge teljesítmény az egyfunkciós hívásoknál is látható amelyek sok erőforrást emésztenek fel az S6 Python interpreter optimalizálatlan implementációjának használata miatt (a fejlesztés még nem jutott el az értelmezési mód optimalizálás stádiumába).

Például a Unpack Sequence tesztben, amely nagy tömb-/tuple-készletet bont ki, egyetlen hívás akár 5-szörös lassulást mutat, a ciklikus hívás pedig 0,97-et eredményez a CPythontól.

Végül azok számára, akik többet szeretnének tudni róla, tudnia kell, hogy a JIT fordítókód C++ nyelven íródott, és jelenleg a CPython 3.7-re épül, amellett, hogy a forráskód már meg van nyitva Apache 2.0 licenc alatt, és megtekinthető az alábbi linkről.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.