La versión candidata de PyTorch 1.o presenta Torch Script, un subconjunto de Python que se puede compilar en JIT con C++ u otro código de alta velocidad.

Una versión candidata para PyTorch 1.0, el marco de trabajo de Python para Deep Learning creado por Facebook, está disponible para pruebas de los desarrolladores. Una de las principales características y la más promocionadas para esta nueva versión es la capacidad de definir modelos al escribir código Python que se pueda acelerar de forma selectiva, similar a cómo funcionan los frameworks de la competencia.

El rol tradicional de Python en Machine Learning ha sido envolver las bibliotecas de código de back-end de alta velocidad con una sintaxis front-end fácil de usar. Cualquiera que escriba módulo de Machine Learning en Python descubre rápidamente que Python nativo no es lo suficientemente rápido para todos los trabajos de investigación de rendimiento crítico o uso en producción.

Los desarrolladores de PyTorch han introducido una caracteristíca en PyTorch 1.0, denominada Torch Script, que brinda un balance entre una sintaxis accesible de Python y código con mejor rendimiento. Torch Script es un sub conjunto de Python que PyTorch puede compilar en tiempo de ejecución (just-in-time) a código nativo que no se basa en el tiempo de ejecución de Python.

Torch Script funciona de una de las dos siguiente maneras. El nuevo código se puede escribir utilizando el lenguaje de Torch Script, que por diseño se puede compilar fácilmente en código nativo. También es posible tomar código Python existente, y utilizar el decorador @torch.jit.trace, y compilarlo justo a tiempo (just-in-time) en código nativo. Sin embargo, no es tan eficiente como utilizar Torch Script.

De acuerdo a la documentación de Torch Script. “[Torch Script] este hace posible entrenar modelos en PyTorch usando herramientas conocidas, y luego exporta el modelo a un entorno de producción donde no es una buena idea ejecutar modelos como programas de Python para altos rendimientos y procesos multi hilos”.

El enfoque de Torch Script hace eco de algunos de los otros métodos para desarrollar software de alto rendimiento en Python. Por ejmplo, la librería Numba de Anaconda compila determinadas funciones a código nativo, utilizando una compilación just-in-time o anticipada. La biblioteca Numba se puede usar para generar código que se ejecuta sin la presencia de Numba, pero en general tiene dependencias de tiempo de ejecución en Numpy y Python.

Otro paquete de uso común, Cython, permite que Python se convierta gradualmente en C por medio de declaraciones de sintaxis personalizadas. Cython puede trabajar con toda la gama de tipos de Python y C, así como con toda la sintaxis de Python, pero Torch Script está restringido a operaciones en los tensores, enteros y números de punto flotante de PyTorch. Y Torch Script no puede utilizar construcciones como excepciones.


Este artículo se encuentra basado en PyTorch 1.0 accelerates Python machine learning with native code.

PyTorch 1.0 acelera Machine Learning en Python con código nativo
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Google+
Google+
Etiquetado en:        

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook