DeepMind lëshoi ​​​​kodin burimor për S6, një përpilues JIT për Python

s6-deepmind

S6, është një bibliotekë e pavarur përpiluesi JIT për CPython

mendje e thellë, e njohur për zhvillimet e saj në fushën e inteligjencës artificiale, së fundmi njoftoi se ka marrë vendimin për publikimin e kodit burimor të projektit S6, e cila është zhvilluar nga një përpilues JIT për gjuhën Python.

Projekti është interesant sepse është projektuar si një bibliotekë shtesë të cilat mund të integrohen me CPython standard, i cili siguron pajtueshmëri të plotë me CPython dhe nuk kërkon modifikim të kodit të përkthyesit. Projekti ka qenë në zhvillim që nga viti 2019, por fatkeqësisht është zvogëluar dhe nuk është më në zhvillim.

S6 ishte një projekt i nisur brenda DeepMind në 2019 për të shpejtuar CPython me përpilimin në kohë ("JIT"). Këto funksione do të ofroheshin si një bibliotekë normale Python dhe nuk do të kërkoheshin ndryshime në interpretuesin CPython. S6 synonte të bënte për Python atë që bëri V8 për Javascript (emri është një homazh për V8). Puna u bazua në versionin 3.7 të CPython. Në varësi të ngarkesës së punës, ne pamë shpejtësi deri në 9.5x në standardet e zakonshme.

Arsyeja kryesore pse u vendos të lëshohej kodi burimor, një prej tyre dhe siç u përmend tashmë ishte se projekti nuk kishte më mbështetje, një tjetër nga arsyet kryesore u dha se bazuar në zhvillimet e krijuara, këto mund të jenë ende të dobishme për përmirësimin e python .

Ne kemi ndaluar së punuari në S6 brenda. Si i tillë, ky depo është arkivuar dhe ne nuk po pranojmë kërkesa ose probleme për tërheqje. Ne kemi hapur burime dhe kemi ofruar një përmbledhje të dizajnit më poshtë për të stimuluar bisedat brenda komunitetit Python dhe për të frymëzuar punën e ardhshme për të përmirësuar Python.

Për sa i përket funksionimit të S6, duhet të përmendim se S6 për Python krahasohet me motorin V8 për JavaScript për sa i përket detyrave që zgjidh. Biblioteka zëvendëson drejtuesin ekzistues të interpretuesit të bajtkodit ceval.c me implementimin e vet që përdor përpilimin JIT për të shpejtuar ekzekutimin.

S6 kontrollon nëse funksioni aktual është kompiluar tashmë dhe, nëse po, ekzekuton kodin e përpiluar, dhe nëse jo, e ekzekuton funksionin në një mënyrë interpretimi bajtkodi të ngjashëm me interpretuesin CPython. Interpretimi numëron numrin e deklaratave të ekzekutuara dhe thirrjeve të lidhura me funksionin që përpunohet.

Pas arritjes së një pike të caktuar, procesi i ndërtimit fillon për të shpejtuar kodin e cila shkon shpesh. Kompilimi kryhet në paraqitjen e ndërmjetme të strongjit, e cila, pas optimizimit, konvertohet në udhëzimet e makinerive të sistemit të synuar duke përdorur bibliotekën asmjit.

Në varësi të natyrës së ngarkesës, në kushte optimale, S6 demonstron një rritje të shpejtësisë së ekzekutimit të provës deri në 9,5 herë në krahasim me CPython të rregullt.

Kur ekzekutohen 100 përsëritje nga grupi i testeve Richards, ka një nxitim prej 7 herë, dhe kur ekzekutoni testin Raytrace, i cili përmban shumë matematikë, është 3 deri në 4,5 herë më i shpejtë.

Detyrat që janë të vështira për t'u optimizuar me S6 janë projektet që përdorin C API, si NumPy, si dhe operacione që lidhen me nevojën për të kontrolluar llojet e një numri të madh vlerash.

Performanca e dobët shihet gjithashtu për thirrjet me një funksion të cilat konsumojnë shumë burime për shkak të përdorimit të zbatimit të pa optimizuar të interpretuesit S6 Python (zhvillimi nuk ka arritur në fazën e optimizimit të modalitetit të interpretimit).

Për shembull, në testin Unpack Sequence, i cili shpaketon grupe të mëdha vargjesh/tupash, një telefonatë e vetme tregon një ngadalësim deri në 5 herë dhe një thirrje ciklike jep 0,97 nga CPython.

Më në fund për ata që janë të interesuar të dinë më shumë për të, duhet të dini se kodi i përpiluesit JIT është shkruar në C++ dhe aktualisht bazohet në CPython 3.7, përveç faktit që kodi burimor është tashmë i hapur nën licencën Apache 2.0 dhe mund të konsultohet nga lidhja më poshtë.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.