42

¿Qué framework usar para deep learning? TensorFlow, Pytorch o CNTK

2570Puntos

hace 2 años

Para escoger una librería para crear tus proyectos de deep learning con redes neuronales debes escoger la que más se adapte a tus necesidades y a las de esos proyectos.

Para ese momento tú ya deberías de entender conceptos como funciones de activación, neuronas, pesos, regularizadores, filtros convolucionales y saber aplicarlos con librerías como Keras con Python. Esto puedes aprenderlo en el Curso de Fundamentos de Redes Neuronales con Python y Keras y en el Curso de Redes Neuronales Convolucionales con Python y Keras.

Para llevar todo eso al siguiente nivel, en este blogpost aprenderás de los tres framework más famosos de deep learning. Conoceremos sus diferenciadores para que, de acuerdo a tus requerimientos, escojas el framework que mayor valor genere para tu proyecto.

Qué es un framework para deep learning

Comencemos definiendo qué es un framework o entorno de trabajo en el desarrollo de software. Lo definimos como una estructura conceptual y tecnológica. Nos sirve de soporte o guía para la construcción de nuevas funcionalidades proporcionando una base sobre la cual podamos desarrollar un software o aplicación.

Cuando hablamos de un framework de deep Learning nos referimos a eso mismo, al marco de trabajo que te permitirá tener todas las herramientas que necesitas para crear redes neuronales con un par de importaciones y clics.

Para realizar un correcto análisis de cada uno de los frameworks tomaremos en cuenta seis puntos:

  1. Facilidad de aprendizaje
  2. Soporte de la comunidad
  3. Debugeo
  4. Herramientas de visualización
  5. Prototipado y despliegue
  6. Funcionamiento en producción

Nota: Es importante entender que estos puntos, desde mi perspectiva y la de muchos proyectos son muy valiosos. Pero según la aplicación de tus proyectos, unos puntos tendrán más peso que otros.

Microsoft Cognitive Toolkit

cntk.png

Microsoft Cognitive Toolkit (CNTK), como su nombre lo dice, fue creado por Microsoft. Sin embargo, es de código abierto. Ilustra redes neuronales en forma de gráficos dirigidos mediante el uso de una secuencia de pasos computacionales.

CNTK está escrito en C++, pero admite varios lenguajes como C#, Python, C++ y Java. El respaldo de Microsoft es una ventaja para CNTK, ya que Windows es el sistema operativo preferido por las empresas. CNTK también se usa mucho en el ecosistema de Microsoft. Los productos populares que usan CNTK son Xbox, Cortana y Skype.

Facilidad de aprendizaje

Es necesario una curva de aprendizaje más larga.

Soporte de la comunidad

El soporte de la comunidad es muy bajo comparado con otros framework de deep learning.

Debugeo

Al estar asociado con Microsoft permite realizar debugeo desde Visual Studio Code activando un comando especial.

Herramientas de visualización

No tiene herramientas nativas para visualizar. Es necesario utilizar herramientas terceras como Matplotlib, Seaborn, entre otras.

Prototipado y despliegue

Buena integración con herramientas como Apache Spark o herramientas de preprocesamiento. Esto permite que el prototipado y despliegue tenga sus ventajas.

Funcionamiento en producción

Debido a que trabaja de la mano de la nube de Microsoft tiene buena capacidad de escalamiento.

PyTorch

pytotch.png

PyTorch es desarrollado en Facebook por el grupo de investigación FAIR. Pytorch es compatible con Python y C++ para crear modelos de deep learning. Algunas de las empresas que lo utilizan son Salesforce, Facebook y Twitter.

El reconocimiento de imágenes, el procesamiento del lenguaje natural y el aprendizaje por refuerzo son algunas de las muchas áreas en las que destaca PyTorch. También se utiliza en la investigación de universidades como Oxford y organizaciones como IBM.

PyTorch también es una excelente opción para crear gráficos computacionales. También es compatible con el desarrollo de software en la nube y ofrece funciones, herramientas y bibliotecas útiles. Funciona bien con plataformas en la nube como AWS y Azure.

Facilidad de aprendizaje

Diseño y estructura fáciles de usar que hacen que la construcción de modelos de aprendizaje profundo sea sencilla.

Soporte de la comunidad

Buen soporte de comunidad en temas de investigación, sin embargo en temas de producción existen otros frameworks con mayor soporte de la comunidad en esa temática. Esta conclusión se puede sacar debido a los tipos de perfiles que utilizan cada una de las librerías.

Debugeo

Tiene herramientas de debugeo como PyCharm.

Herramientas de visualización

No tiene herramientas o interfaces propias de PyTorch.

Prototipado y despliegue

Contiene modelos pre-entrenados que permiten generar un prototipado y despliegue rápido.

Funcionamiento en producción

No cuenta con un grupo de recursos nativos que permita desplegarlo en ambientes de producción, permite conectarse a herramientas de terceros.

TensorFlow

Untitled.png

TensorFlow es la herramienta de deep learning más famosa que existe. Si eres data scientist, probablemente ya has comenzado con TensorFlow.

Es una de los frameworks de código abierto más eficientes para trabajar. Google creó TensorFlow para usarlo como una herramienta interna de deep learning antes de abrirlo. TensorFlow impulsa muchas aplicaciones útiles, incluidas Uber, Dropbox y Airbnb.

Facilidad de aprendizaje

Desde la versión 2.0 de TensorFlow se se volvió una herramienta muy fácil de aprender. Cuenta con integración de API Clean Up, Eager Execution, no más variables globales y el cambio de sesiones por funciones.

Soporte de la comunidad

TensorFlow cuenta con la comunidad más grande a nivel mundial:

  • 56,000 preguntas en StackOverflow
  • 109 expertos en ML Google Developer
  • 46 TensorFlow Users Groups en todo el mundo.
  • 25 publicaciones TensorFlow
  • 70000 commits
  • 2200 contribuyentes.

Debugeo

Con la llegada de Eager Execution aumenta la facilidad de debugear. Sin embargo, no hay una herramienta propia para realizarlo, se pueden utilizar herramientas de terceros como Pandas, scikit-learn, entre otras.

Herramientas de visualización

Tiene una herramienta propia de visualización llamada TensorBoard que permite visualizar grafos, métricas, resultados y mucho más. Esta herramienta es configurable según el uso.

Prototipado y despliegue

Permite guardar y cargar modelos con una línea de código en diferentes formatos.

Funcionamiento en producción

Cuenta con todo el stack de Google Cloud Platform para lograr desplegarlo en cuestión de segundos a la nube.


Como pudiste ver, cada framework tiene sus ventajas y desventajas. Como te mencioné al principio, dependerá de tus necesidades y de tu proyecto para elegir el indicado. Sin embargo, si ya has trabajado con proyectos elementales de redes neuronales y estás analizando qué framework aprender primero, te sugerimos seguir el camino de TensorFlow.

Esto porque TensorFlow tiene una gran cantidad de herramientas para probarlo e incluso llevar tus primeros proyectos a producción de manera directa. Esto seguramente te ayudará a conseguir el trabajo de tus sueños o incluso crear tu propia empresa.

Te invito a seguir este camino. Toma el Curso Profesional de Redes Neuronales con TensorFlow, donde tendré el gusto enorme de ser tu profesor. ¡Te doy la bienvenida al uso de redes neuronales de manera profesional! 🧠

Alhim Adonai
Alhim Adonai
AdonaiVera

2570Puntos

hace 2 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
5
12635Puntos

También hay que tener en cuenta el nivel de abstracción de cada uno, mientras que Tensorflow y Pytorch te mucha personalización del modelo, otras como Scikit-learn solo te dejan tocar lo básico, este video lo explica bien.

https://www.youtube.com/watch?v=qTNUbPkR2ao

1
25000Puntos

Tal cual lo que quería escuchar!! 💚

1
1959Puntos

Muy buen artículo, también se podría mencionar las Apis para trabajar como Keras.

1
410Puntos

Muy buen blog, me gusto mucho, contiene muy buena información.