DeepMind te pibliye kòd sous la pou S6, yon du JIT pou Python

s6-deepmind

S6, se yon bibliyotèk du JIT otonòm pou CPython

fon lespri, li te ye pou devlopman li yo nan jaden an nan entèlijans atifisyèl, dènyèman te anonse ke te pran desizyon pou lage kòd sous pwojè S6 la, ki se li devlope nan yon du JIT pou lang Python.

Pwojè a enteresan paske fèt kòm yon bibliyotèk ekstansyon ki ka entegre ak estanda CPython, ki bay tout konpatibilite CPython epi li pa bezwen modifikasyon nan kòd entèprèt la. Pwojè a te nan devlopman depi 2019, men li malerezman te redwi e li pa nan devlopman ankò.

S6 se te yon pwojè ki te kòmanse nan DeepMind nan 2019 pou akselere CPython ak konpilasyon jis-in-time ("JIT"). Fonksyon sa yo ta dwe bay kòm yon bibliyotèk Python nòmal epi pa gen okenn chanjman nan entèprèt CPython ta nesesè. S6 te gen entansyon fè pou Python sa V8 te fè pou Javascript (non an se yon omaj a V8). Travay la te baze sou CPython vèsyon 3.7. Tou depan de kantite travay la, nou te wè vitès ki rive jiska 9.5x nan referans komen.

Rezon prensipal ki fè li te deside lage kòd sous la, youn nan yo ak kòm deja mansyone se ke pwojè a sispann gen sipò, yon lòt nan rezon prensipal yo te bay ki baze sou devlopman yo te kreye, sa yo ka toujou itil pou amelyore python. .

Nou te sispann travay sou S6 intern. Kòm sa yo, depo sa a te achiv epi nou pa aksepte demann rale oswa pwoblèm. Nou louvri sous epi nou bay yon apèsi sou konsepsyon anba a pou ankouraje konvèsasyon nan kominote Python ak enspire travay nan lavni pou amelyore Python.

Konsènan operasyon S6, nou ta dwe mansyone sa S6 pou Python konpare ak motè V8 pou JavaScript an tèm de travay li rezoud. Bibliyotèk la ranplase chofè entèprèt ceval.c bytecode ki egziste deja ak pwòp aplikasyon li ki itilize konpilasyon JIT pou pi vit ekzekisyon an.

S6 tcheke si fonksyon aktyèl la te deja konpile epi, si se konsa, egzekite kòd la konpile, epi si se pa sa, egzekite fonksyon an nan yon mòd entèpretasyon bytecode ki sanble ak entèprèt CPython la. Entèpretasyon an konte kantite deklarasyon egzekite ak apèl ki asosye ak fonksyon yo ap trete a.

Apre yo rive nan yon sèten etap enpòtan, pwosesis konstriksyon an kòmanse akselere kòd la ki kouri souvan. Konpilasyon fèt sou reprezantasyon entèmedyè strongjit, ki, apre optimize, konvèti nan enstriksyon machin sistèm sib lè l sèvi avèk bibliyotèk asmjit la.

Tou depan de nati chaj la, nan kondisyon optimal, S6 demontre yon ogmantasyon nan vitès ekzekisyon tès la ki rive jiska 9,5 fwa konpare ak CPython regilye.

Lè 100 iterasyon yo egzekite soti nan suite tès Richards la, gen yon akselerasyon 7 fwa, epi lè w ap fè tès Raytrace a, ki gen anpil matematik, li se 3 a 4,5 fwa pi vit.

Travay ki difisil pou optimize ak S6 se pwojè ki sèvi ak C API, tankou NumPy, osi byen ke operasyon ki gen rapò ak bezwen nan tcheke kalite yo nan yon gwo kantite valè.

Pèfòmans pòv tou wè pou apèl fonksyon sèl ki konsome yon anpil nan resous akòz itilize nan aplikasyon an unoptimized nan entèprèt la S6 Python (devlopman pa te rive nan etap nan entèprete mòd optimize).

Pa egzanp, nan tès Depake Sekans, ki dekonpoze gwo seri etalaj/tuples, yon sèl apèl montre yon ralentissement jiska 5 fwa, epi yon apèl siklik bay 0,97 soti nan CPython.

Finalman pou moun ki enterese nan konnen plis bagay sou li, ou ta dwe konnen ke kòd la du JIT ekri nan C++ ak se kounye a ki baze sou CPython 3.7, nan adisyon a lefèt ke kòd sous la deja louvri anba lisans Apache 2.0 epi yo ka konsilte. soti nan lyen ki anba a.


Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

Se pou premye a fè kòmantè

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye.

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.