DeepMind allibero el codi font de S6, un compilador JIT per a Python

S6-deepmind

S6, és una biblioteca de compilador JIT independent per a CPython

DeepMind, coneguda pels seus desenvolupaments en el camp de la intel·ligència artificial, va donar a conèixer recentment que ha pres la decisió d'alliberar el codi font del projecte S6, que és ell va desenvolupar d'un compilador JIT per al llenguatge Python.

El projecte és interessant perquè està dissenyat com a biblioteca d'extensió que es pot integrar amb CPython estàndard, cosa que brinda compatibilitat total amb CPython i no requereix la modificació del codi de lintèrpret. El projecte s'ha desenvolupat des del 2019, però malauradament es va reduir i ja no s'està desenvolupant.

S6 va ser un projecte que va començar dins de DeepMind el 2019 per accelerar CPython amb compilació just a temps («JIT»). Aquestes funcions es proporcionarien com una biblioteca de Python normal i no caldria fer canvis a l'intèrpret de CPython. S6 pretenia fer per Python el que V8 va fer per Javascript (el nom és un homenatge a V8). El treball es va basar en CPython versió 3.7. Depenent de la càrrega de treball, vam veure acceleracions de fins a 9.5x en punts de referència comuns.

La raó principal del perquè es va decidir alliberar el codi font, una d'elles i com ja es va esmentar va ser que el projecte deixo de tenir suport, una altra de les raons principals va ser atès que amb base als desenvolupaments creats, aquests encara poden ser útils per millorar Python.

Hem deixat de treballar a S6 internament. Com a tal, aquest repositori ha estat arxivat i no estem acceptant sol·licituds dextracció o problemes. Obrim el codi i proporcionem una descripció general del disseny a continuació per estimular les converses dins de la comunitat de Python i inspirar el treball futur per millorar Python.

Pel que fa al funcionament de S6, cal esmentar que S6 per a Python es compara amb el motor V8 per a JavaScript en termes de tasques que resol. La biblioteca reemplaça el controlador de l'intèrpret de codi de bytes ceval.c existent amb la seva implementació que utilitza la compilació JIT per accelerar l'execució.

S6 verifica si la funció actual ja s'ha compilat i, si és així, executa el codi compilat i, si no és així, executa la funció en un mode d'interpretació de bytecode similar a l'intèrpret de CPython. La interpretació compta amb el nombre d'instruccions executades i trucades associades amb la funció que s'està processant.

Després d'assolir una fita determinada, s'inicia el procés de compilació per accelerar el codi que sexecuta amb freqüència. La compilació es fa a la representació intermèdia de strongjit, que, després de l'optimització, es converteix en instruccions de màquina del sistema de destinació utilitzant la biblioteca asmjit.

Depenent de la naturalesa de la càrrega, en condicions òptimes, S6 demostra un augment en la velocitat dexecució de la prova de fins a 9,5 vegades en comparació amb el CPython habitual.

Quan s'executen 100 iteracions del conjunt de proves de Richards, hi ha una acceleració de 7 vegades, i quan sexecuta la prova Raytrace, que conté una gran quantitat de càlculs matemàtics, és de 3 a 4,5 vegades més ràpida.

Les tasques que són difícils d'optimitzar amb S6 són els projectes que usen l'API de C, com NumPy, així com les operacions relacionades amb la necessitat de verificar els tipus duna gran quantitat de valors.

També s'observa un rendiment deficient per a trucades úniques de funcions que consumeixen molts recursos a causa de l'ús de la implementació no optimitzada de l'intèrpret de Python de S6 (el desenvolupament no ha aconseguit l'etapa d'optimització del mode d'interpretació).

Per exemple, al test Unpack Sequence, que desempaqueta grans conjunts d'arrays/tuples, amb una sola trucada s'observa un alentiment de fins a 5 vegades, i amb una trucada cíclica el rendiment és de 0,97 des de CPython.

Finalment per als que estiguin interessats en poder conèixer més a l'respecte, han de saber que el codi del compilador JIT està escrit en C++ i actualment està basat en CPython 3.7, a més de què el codi font ja està obert sota la llicència Apache 2.0 i es pot consultar des del següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.