JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

PyTorch: saber todo sobre el marco de trabajo de Deep Learning de Facebook

pytorch

Al ser el lenguaje Python uno de los más utilizados, contiene muchos frameworks y muchos los desarrolla exclusivamente para la Data Science. En este artículo, vamos a hablar detalladamente de uno de ellos. PyTorch.

La popularidad de la Data Science no ha dejado de crecer en los últimos años, y con ella una explosión de recursos puestos a disposición de los programadores: ya no es necesario escribir todo el código a mano. Entornos de programación como PyTorch, llamados “frameworks” o marcos de trabajo, permiten utilizar modelos complejos en muy pocas líneas.

La historia de PyTorch

Los frameworks permiten dar un marco y herramientas para facilitar la programación. Por lo general se desarrollan en “open source”, es decir que cualquier puede modificar y acceder al código, lo que permite fiabilidad, transparencia y un mantenimiento continuo.

PyTorch no es ninguna excepción. Basado en la antigua biblioteca Torch, PyTorch fue lanzado oficialmente en 2016 por un equipo del laboratorio de investigación de Facebook, y desde entonces se ha desarrollado en open source. El objetivo de este framework es permitir la implementación y el entrenamiento de modelos de Deep Learning de manera sencilla y eficiente. Su fusión en 2018 con Caffe2 (otro framework de Python) permitió mejorar aún más sus rendimientos.

En la actualidad un 17 % de los desarrolladores de Python utiliza PyTorch (estudio de la Python Foundation 2020) y también se usa en muchas empresas como Tesla, Uber, etc.

Pytorch vs Keras vs Tensorflow

Es difícil presentar PyTorch sin hablar de sus alternativas, todas ellas creadas con pocos años de intervalo, y prácticamente con el mismo objetivo, pero con métodos diferentes.

Keras fue desarrollado en marzo de 2015 por François Chollet, investigador de Google. Este framework se hizo rápidamente popular gracias a su API fácil de usar, inspirada en gran medida en scikit-learn, la biblioteca de Machine Learning estándar de Python.

Varios meses después, en noviembre de 2015, Google publicó una primera versión de TensorFlow y rápidamente se convirtió en el framework de referencia de Deep Learning, ya que permite utilizar Keras. Tensorflow también ha puesto a punto una serie de funcionalidades de aprendizaje profundo que los investigadores necesitaban para crear fácilmente redes neuronales complejas.

Por tanto Keras era muy fácil de usar, pero no tenia alguna funcionalidades básicas o algunas personalizaciones necesarias para los modelos punteros. Por el contrario, Tensorflow daba acceso a sus funciones, pero no se parecía al estilo habitual de Python y tenía una documentación muy complicada para los principiantes.

PyTorch resolvió esos problemas creando una API a la vez accesible y fácil de personalizar, que permitía crear nuevos tipos de redes, optimizadores y arquitecturas inéditas.

Dicho esto, las recientes evoluciones de esos frameworks han acercado muchísimo sus modos de funcionamiento. Antes de ponernos con los detalles técnicos de PyTorch, aquí tienes una tabla recapitulativa de las diferencias entre estas herramientas. Puesto que Keras y Tensorflow funcionan ahora juntos, conviene presentarlos conjuntamente.

tableau keras

Uso de PyTorch para el Deep Learning

Hemos hablado de la complejidad de los modelos y de las redes sin hablar de la velocidad de ejecución de los algoritmos. En efecto, PyTorch fue diseñado para minimizar ese tiempo y utilizar mejor las especificidades del hardware.

PyTorch representa los datos en forma de tablas multidimensionales, similares a las tablas NumPy, llamadas “tensores”. Los tensores almacenan los inputs de la red neuronal, los parámetros de los hidden layers y los outputs. A partir de esos tensores, PyTorch puede llevar, de manera oculta y eficaz, 4 etapas para entrenar la red:

  • Montar una gráfico a partir de los tensores de la red neuronal, lo que permite una estructura dinámica, es posible modificarla (número de nudos, conexiones entre ellos, etc.) durante el aprendizaje.
  • Efectuar las predicciones de la red (“forward pass”).
  • Calcular la pérdidas o error respecto a las predicciones
  • Atravesar la red en el sentido inverso: “backpropagation”, y ajustar los tensores para que la red haga predicciones más precisas basadas en la pérdida/error calculado.

Esta función de PyTorch llamada “Autograd” está muy optimizada, y es compatible con el uso de GPU y data parallelism, lo que acelera considerablemente los cálculos. Además, permite un uso en todas las clouds, mientras que Tensorflow, por ejemplo, solo está optimizado para GoogleCloud y sus TPU.

Recientemente, y en colaboración con AWS (Amazon Web Services), PyTorch ha desvelado 2 nuevas funcionalidades. La primera, bautizada TorchServe, permite gestionar eficazmente el despliegue de redes neuronales ya entrenadas. La segunda, TorchElastic, permite usar PyTorch en clústeres Kubernetes a la vez que resiste a las averías.

Estos 3 frameworks tienen así pues su propia especificidad. En particular PyTorch está muy adaptado para las redes neuronales complejas y profundas. Para descubrir PyTorch, la página web oficial propone tutoriales.

Para profundizar la práctica de ese framework, nuestro curso de Data Scientist propone módulos de enseñanza dedicados al Deep Learning con PyTorch.

¿Por qué utilizar PyTorch?

PyTorch es una biblioteca de aprendizaje automático bastante reciente, pero dispone de un gran número de manuales y de tutoriales en los que se pueden encontrar ejemplos. Dispone también de una comunidad que se desarrolla a pasos agigantados.

PyTorch cuenta con una interfaz muy sencilla para la creación de redes neuronales aunque haya que trabajar directamente con los tensores sin necesitar una biblioteca de mayor nivel como Keras para Theano o Tensorflow.

Al contrario que otras herramientas de aprendizaje automático como Tensorflow, PyTorch funciona con gráficos dinámicos en vez de estáticos. Eso significa que en el momento de la ejecución, las funciones se pueden modificar y que el cálculo de los gradientes variará con ellas. Sin embargo, en Tensorflow, primero hay que definir el gráfico de cálculo, y después utilizar la sesión para calcular los resultados del tensor, lo que hace que la depuración del código sea más difícil y la puesta en marcha más tediosa.

PyTorch es compatible con las tarjetas gráficas (GPU). Utiliza internamente CUDA, una API que conecta la CPU con la GPU y que fue desarrollada por NVIDIA.

Ventajas de PyTorch

Aunque PyTorch presenta muchas ventajas, aquí nos concentraremos solo en algunas.

    1. PyTorch y Python

La mayoría de los trabajos vinculados al aprendizaje automático y la inteligencia artificial se efectúa con ayuda de Python. Sin embargo, PyTorch y Python son de la misma familia, lo que significa que los desarrolladores de Python deberían sentirse más a gusto cuando escriben código con PyTorch que con otros frameworks de Deep Learning.

    1. Fácil de aprender

Como el lenguaje Python, se considera que PyTorch es relativamente más fácil de aprender respecto a otros frameworks. La razón principal se debe a su sintaxis fácil e intuitiva.

    1. Comunidad activa

Aunque PyTorch sea un framework relativamente reciente, ha desarrollado muy rápidamente una comunidad dedicada de desarrolladores. Además, su documentación está muy bien organizada y es útil para los principiantes.

    1. Depuración fácil

PyTorch está profundamente integrado en Python, hasta tal punto que muchas herramientas de depuración de Python se pueden utilizar fácilmente con él.

¿No está disponible?

Déjenos su dirección de correo electrónico para que podamos enviarle los nuevos artículos cuando se publiquen.