DeepMind zveřejnil zdrojový kód pro S6, kompilátor JIT pro Python

S6-hluboká mysl

S6, je samostatná knihovna kompilátoru JIT pro CPython

hluboká mysl, známý pro svůj vývoj v oblasti umělé inteligence, to nedávno oznámil se rozhodla uvolnit zdrojový kód projektu S6, který vyvinul z JIT kompilátoru pro jazyk Python.

Projekt je zajímavý protože je navržena jako rozšiřující knihovna který lze integrovat se standardním CPythonem, který poskytuje plnou kompatibilitu s CPython a nevyžaduje úpravy kódu interpreta. Projekt je ve vývoji od roku 2019, ale bohužel byl zmenšen a již se nevyvíjí.

S6 byl projekt zahájený v rámci DeepMind v roce 2019 s cílem urychlit CPython pomocí kompilace just-in-time („JIT“). Tyto funkce by byly poskytovány jako běžná knihovna Pythonu a nebyly by vyžadovány žádné změny v interpretu CPythonu. S6 zamýšlel udělat pro Python to, co V8 udělal pro Javascript (název je poctou V8). Práce byla založena na CPythonu verze 3.7. V závislosti na zátěži jsme v běžných benchmarcích zaznamenali až 9.5násobné zrychlení.

Hlavním důvodem, proč bylo rozhodnuto uvolnit zdrojový kód, jedním z nich a jak již bylo zmíněno, bylo, že projekt přestal mít podporu, dalším z hlavních důvodů bylo to, že na základě vytvořeného vývoje mohou být stále užitečné pro vylepšení pythonu .

Na S6 jsme přestali pracovat interně. Jako takový byl tento repozitář archivován a nepřijímáme žádosti o stažení ani problémy. Otevřeli jsme zdroj a níže jsme poskytli přehled návrhu, abychom stimulovali konverzace v rámci komunity Pythonu a inspirovali budoucí práci na vylepšení Pythonu.

Pokud jde o provoz S6, měli bychom zmínit, že S6 pro Python je srovnatelný s V8 enginem pro JavaScript z hlediska úkolů, které řeší. Knihovna nahrazuje stávající ovladač interpretu bytecode ceval.c svou vlastní implementací, která využívá kompilaci JIT k urychlení provádění.

S6 zkontroluje, zda již byla aktuální funkce zkompilována a pokud ano, provede zkompilovaný kód, a pokud ne, provede funkci v režimu interpretace bajtkódu, který je podobný interpretru CPython. Interpretace počítá počet provedených příkazů a volání spojených se zpracovávanou funkcí.

Po dosažení určitého milníku se spustí proces sestavení, aby se kód urychlil která jezdí často. Kompilace se provádí na střední reprezentaci strongjit, která se po optimalizaci převede na strojové instrukce cílového systému pomocí knihovny asmjit.

V závislosti na charakteru zátěže, za optimálních podmínek, S6 prokazuje zvýšení rychlosti provádění testu až 9,5krát ve srovnání s běžným CPythonem.

Když se provede 100 iterací z Richardsovy testovací sady, existuje zrychlení 7krát, a při spuštění testu Raytrace, který obsahuje hodně matematiky, je 3 až 4,5krát rychlejší.

Úkoly, které je obtížné optimalizovat s S6 jsou projekty, které používají C API, jako je NumPy, a také operace související s nutností kontrolovat typy velkého množství hodnot.

Špatný výkon je také vidět u volání jedné funkce které spotřebovávají mnoho zdrojů díky použití neoptimalizované implementace interpretu S6 Python (vývoj nedospěl do fáze optimalizace interpretačního režimu).

Například v testu Unpack Sequence, který rozbaluje velké sady polí/ntic, jedno volání ukazuje zpomalení až 5krát a cyklické volání dává 0,97 z CPythonu.

Konečně pro ty, kteří se o tom chtějí dozvědět více, měli byste vědět, že kód kompilátoru JIT je napsán v C++ a v současné době je založen na CPythonu 3.7, kromě toho, že zdrojový kód je již otevřen pod licencí Apache 2.0 a lze jej konzultovat z níže uvedeného odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.