DeepMind išleido S6, JIT kompiliatoriaus, skirto Python, šaltinio kodą

S6 - gilus protas

S6 yra atskira JIT kompiliatoriaus biblioteka, skirta CPython

gilus protas, žinomas dėl savo pasiekimų dirbtinio intelekto srityje, neseniai paskelbė, kad priėmė sprendimą išleisti S6 projekto šaltinio kodą, kurią jis sukūrė iš JIT kompiliatoriaus Python kalbai.

Projektas įdomus nes sukurtas kaip pratęsimo biblioteka kurį galima integruoti su standartiniu CPython, kuris užtikrina visišką CPython suderinamumą ir jo nereikia keisti vertėjo kodo. Projektas buvo kuriamas nuo 2019 m., bet, deja, buvo sumažintas ir nebevykdomas.

S6 buvo 2019 m. „DeepMind“ pradėtas projektas, skirtas pagreitinti „CPython“ naudojant „just-in-time“ („JIT“) kompiliavimą. Šios funkcijos būtų teikiamos kaip įprasta Python biblioteka ir nereikės jokių CPython interpretatoriaus pakeitimų. S6 ketino padaryti Python, ką V8 padarė su Javascript (pavadinimas yra pagarba V8). Darbas buvo paremtas CPython 3.7 versija. Priklausomai nuo darbo krūvio, bendruose etalonuose pastebėjome iki 9.5 karto pagreitintą.

Pagrindinė priežastis, kodėl buvo nuspręsta išleisti šaltinio kodą, viena iš jų ir kaip jau minėta buvo ta, kad projektas nustojo palaikyti, kita iš pagrindinių priežasčių buvo nurodyta, kad remiantis sukurtais patobulinimais, jie vis dar gali būti naudingi tobulinant python .

Mes nustojome dirbti su S6 viduje. Taigi ši saugykla buvo suarchyvuota ir mes nepriimame ištraukimo užklausų ar problemų. Toliau pateikiame atvirojo kodo ir dizaino apžvalgą, kad paskatintume pokalbius Python bendruomenėje ir įkvėptume būsimus darbus tobulinant Python.

Kalbant apie S6 veikimą, turėtume tai paminėti S6, skirtas Python, lyginamas su V8 ​​varikliu, skirtu „JavaScript“. kalbant apie užduotis, kurias ji išsprendžia. Biblioteka pakeičia esamą ceval.c baito kodo interpretatoriaus tvarkyklę savo diegimu, kuris naudoja JIT kompiliavimą, kad pagreitintų vykdymą.

S6 patikrina, ar dabartinė funkcija jau buvo sukompiliuota ir, jei taip, vykdo sukompiliuotą kodą, o jei ne, vykdo funkciją baitinio kodo interpretavimo režimu, panašiu į CPython interpretatorių. Interpretacija skaičiuoja įvykdytų teiginių ir iškvietimų, susijusių su apdorojama funkcija, skaičių.

Pasiekus tam tikrą etapą, kūrimo procesas pradedamas pagreitinti kodą kuri veikia dažnai. Kompiliacija atliekama naudojant strongjit tarpinį atvaizdavimą, kuris po optimizavimo konvertuojamas į tikslinės sistemos mašinos instrukcijas naudojant asmjit biblioteką.

Priklausomai nuo apkrovos pobūdžio, optimaliomis sąlygomis S6 demonstruoja iki 9,5 karto padidintą bandymo vykdymo greitį, lyginant su įprastu CPython.

Kai įvykdoma 100 iteracijų iš Richardso testų komplekto, yra 7 kartų pagreitis, o vykdant Raytrace testą, kuriame yra daug matematikos, jis veikia 3–4,5 karto greičiau.

Užduotys, kurias sunku optimizuoti su S6 yra projektai, kuriuose naudojama C API, pvz., NumPy, taip pat operacijos, susijusios su būtinybe patikrinti daugelio reikšmių tipus.

Prastas našumas pastebimas ir vienos funkcijos skambučiams kurie sunaudoja daug resursų dėl neoptimizuoto S6 Python interpretatoriaus naudojimo (kūrimas nepasiekė interpretavimo režimo optimizavimo stadijos).

Pavyzdžiui, atliekant Unpack Sequence testą, kuris išpakuoja didelius masyvų / eilučių rinkinius, vienas iškvietimas rodo sulėtėjimą iki 5 kartų, o ciklinis iškvietimas duoda 0,97 iš CPython.

Pagaliau norintiems sužinoti apie tai daugiau, turėtumėte žinoti, kad JIT kompiliatoriaus kodas parašytas C++ ir šiuo metu yra pagrįstas CPython 3.7, be to, kad šaltinio kodas jau yra atidarytas pagal Apache 2.0 licenciją ir jį galima peržiūrėti iš žemiau pateiktos nuorodos.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.