DeepMind lanzou o código fonte para S6, un compilador JIT para Python

S6-mente profunda

S6, é unha biblioteca de compiladores JIT independente para CPython

mente profunda, coñecida polos seus desenvolvementos no campo da intelixencia artificial, anunciou recentemente que tomou a decisión de lanzar o código fonte do proxecto S6, que desenvolveu a partir dun compilador JIT para a linguaxe Python.

O proxecto é interesante porque está deseñado como unha biblioteca de extensión que se pode integrar con CPython estándar, que ofrece compatibilidade total con CPython e non require modificación do código do intérprete. O proxecto estivo en desenvolvemento desde 2019, pero lamentablemente reduciuse e xa non está en desenvolvemento.

S6 foi un proxecto iniciado dentro de DeepMind en 2019 para acelerar CPython coa compilación xusto a tempo ("JIT"). Estas funcións proporcionaríanse como unha biblioteca de Python normal e non se precisarían cambios no intérprete de CPython. S6 pretendía facer para Python o que fixo V8 para Javascript (o nome é unha homenaxe a V8). O traballo baseouse na versión 3.7 de CPython. Dependendo da carga de traballo, vimos aceleracións de ata 9.5 veces nos puntos de referencia comúns.

O principal motivo polo que se decidiu liberar o código fonte, un deles e como xa se comentou foi que o proxecto deixou de ter soporte, outro dos principais motivos deuse por que en función dos desenvolvementos creados, estes aínda poden ser útiles para mellorar python. .

Deixamos de traballar en S6 internamente. Como tal, este repositorio foi arquivado e non aceptamos solicitudes de extracción ou problemas. A continuación ofrecemos unha visión xeral do deseño de código aberto para estimular as conversas dentro da comunidade de Python e inspirar o traballo futuro para mellorar Python.

En canto ao funcionamento do S6, debemos mencionalo S6 para Python compárase co motor V8 para JavaScript en canto ás tarefas que resolve. A biblioteca substitúe o controlador de intérprete de bytecode ceval.c existente pola súa propia implementación que utiliza a compilación JIT para acelerar a execución.

S6 comproba se a función actual xa foi compilada e, de ser así, executa o código compilado e, se non, executa a función nun modo de interpretación de bytecode similar ao intérprete CPython. A interpretación conta o número de instrucións executadas e chamadas asociadas á función que se está a procesar.

Despois de alcanzar un determinado fito, iníciase o proceso de compilación para acelerar o código que corre con frecuencia. A compilación realízase na representación intermedia de strongjit, que, despois da optimización, convértese en instrucións da máquina do sistema de destino mediante a biblioteca asmjit.

Dependendo da natureza da carga, en condicións óptimas, S6 demostra un aumento da velocidade de execución das probas de ata 9,5 veces en comparación co CPython normal.

Cando se executan 100 iteracións da suite de probas de Richards, hai unha aceleración de 7 veces, e cando se executa a proba Raytrace, que contén moitas matemáticas, é de 3 a 4,5 veces máis rápido.

Tarefas difíciles de optimizar con S6 son os proxectos que usan a API C, como NumPy, así como operacións relacionadas coa necesidade de comprobar os tipos dun gran número de valores.

Tamén se observa un rendemento deficiente para as chamadas de función única que consomen moitos recursos debido ao uso da implementación non optimizada do intérprete S6 Python (o desenvolvemento non chegou á fase de optimización do modo de interpretación).

Por exemplo, na proba Secuencia de desempaquetado, que desempaqueta grandes conxuntos de matrices/tuplas, unha única chamada mostra unha desaceleración de ata 5 veces e unha chamada cíclica produce 0,97 de CPython.

Finalmente para os interesados ​​en saber máis sobre el, debes saber que o código do compilador JIT está escrito en C++ e que actualmente está baseado en CPython 3.7, ademais de que o código fonte xa está aberto baixo a licenza Apache 2.0 e pódese consultar dende a seguinte ligazón.


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

Sexa o primeiro en opinar sobre

Deixa o teu comentario

Enderezo de correo electrónico non será publicado.

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.