Comparación de marcos de aprendizaje profundo (Deep Learning Tools)

0
1169

Hoy conoceremos algunas de las más importantes herramientas para Deep Learning existentes en la actualidad: Tensorflow, PyTorch, Keras, MXNet, The Microsoft Cognitive Toolkit, Caffe, Deeplearning4j y Chainer.

Dado que muchas empresas quieren hacer uso de la inteligencia artificial para escalar o iniciar su puesta en marcha, es crucial darse cuenta de una cosa: la tecnología con la que eligen trabajar debe combinarse con un marco de aprendizaje profundo adecuado , especialmente porque cada marco tiene un propósito diferente. Encontrar ese ajuste perfecto es esencial en términos de desarrollo comercial rápido y sin problemas, así como de una implementación exitosa.

La siguiente lista de marcos de aprendizaje profundo puede ser útil durante el proceso de selección del adecuado para los desafíos particulares que enfrenta. ¡Compare los pros y los contras de diferentes soluciones, verifique sus limitaciones y conozca los mejores casos de uso para cada solución!

1.  TensorFlow

Tensorflow

Creado por Google y escrito en C ++ y Python , TensorFlow se percibe como una de las mejores bibliotecas de código abierto para el cálculo numérico. Simplemente tiene que ser bueno, especialmente si gigantes como DeepMind, Uber, AirBnB o Dropbox han decidido aprovechar este marco.

TensorFlow es bueno para proyectos avanzados, como la creación de redes neuronales multicapa. Se utiliza en reconocimiento de voz / imagen y aplicaciones basadas en texto (como Google Translate).

Por supuesto, los expertos han considerado sus dos ventajas …

  • Tiene mucha documentación y pautas;
  • Ofrece monitoreo para procesos de capacitación de los modelos y visualización ( Tensorboard );
  • Está respaldado por una gran comunidad de desarrolladores y empresas tecnológicas;
  • Proporciona servicio modelo;
  • Es compatible con la formación distribuida;
  • Tensorflow Lite permite la inferencia en el dispositivo con baja latencia para dispositivos móviles;
  • Tensorflow JS : permite la implementación de modelos en entornos JavaScript, tanto frontend como backend de Node.js. TensorFlow.js también admite la definición de modelos en JavaScript y su capacitación directamente en el navegador utilizando una API similar a Keras.

… y contras:

  • Lucha con resultados pobres para la velocidad en las pruebas de referencia en comparación con, por ejemplo, CNTK y MXNet,
  • Tiene un umbral de entrada más alto para principiantes que PyTorch o Keras. El Tensorflow simple es de nivel bastante bajo y requiere mucha codificación repetitiva, y el modo predeterminado “definir y ejecutar” de Tensorflow hace que la depuración sea muy difícil.

También hay una limitación importante: el único lenguaje totalmente compatible es Python.

Cambios en Tensorflow 2.0

La próxima versión principal del marco es Tensorflow 2.0. Se lanzará pronto, en este momento está disponible como RC (candidato de lanzamiento).
Nos trae un montón de características interesantes, como:

  • Soporte para el marco de Keras
  • Es posible usar Keras dentro de Tensorflow. Asegura que los nuevos modelos de Machine Learning se puedan construir con facilidad.
  • Admite la depuración de sus gráficos y redes: TensorFlow 2.0 se ejecuta con una ejecución entusiasta de forma predeterminada para facilitar su uso y depurar sin problemas.
  • Implementación de modelos robustos en producción en cualquier plataforma.
  • Potente experimentación para la investigación.
  • Simplificando la API limpiando API obsoletas y reduciendo la duplicación.

2.  PyTorch

Pytorch

PyTorch es el sucesor de Python de la biblioteca Torch escrito en Lua y un gran competidor para TensorFlow. Fue desarrollado por Facebook y es utilizado por Twitter, Salesforce, la Universidad de Oxford y muchos otros.

PyTorch se utiliza principalmente para entrenar modelos de aprendizaje profundo de forma rápida y efectiva, por lo que es el marco de elección para una gran cantidad de investigadores.

Tiene algunas ventajas significativas:

  • El proceso de modelado es simple y transparente gracias al estilo arquitectónico del marco;
  • El modo predeterminado de definición por ejecución es más parecido a la programación tradicional, y puede usar herramientas de depuración comunes como pdb, ipdb o PyCharm depurador;
  • Tiene paralelismo declarativo de datos ;
  • Cuenta con una gran cantidad de modelos entrenados y piezas modulares que están listas y son fáciles de combinar;
  • Es compatible con la formación distribuida.
  • Está listo para producción desde la versión 1.0.

La primera versión estable, 1.0, transforma PyTorch en una herramienta madura y lista para producción. 

Nuevas características y mejoras

Ahora admite el servicio de modelos con tres estrategias:

  • Inclusión directa,
  • Microservicios modelo,
  • Servidores modelo,
  • Soporte oficial para Tensorboard,
  • Mejoras de desarrollo portátil: herramientas de compilación JIT y una interfaz C ++.

3.  Keras

keras

Esta es una biblioteca minimalista basada en Python que se puede ejecutar sobre TensorFlow, Theano o CNTK. Fue desarrollado por un ingeniero de Google, Francois Chollet, para facilitar la experimentación rápida. Admite una amplia gama de capas de redes neuronales, como capas convolucionales, capas recurrentes o capas densas.

Se puede aprovechar en áreas de traducción, reconocimiento de imágenes, reconocimiento de voz, etc.

Las ventajas…

  • La creación de prototipos es realmente rápida y fácil;
  • Es liviano en términos de construcción de modelos DL con muchas capas;
  • Cuenta con módulos totalmente configurables;
  • Tiene una interfaz simple e intuitiva, fantástica para los novatos;
  • Tiene soporte incorporado para entrenamiento en múltiples GPU; Se puede convertir en estimadores de Tensorflow y capacitarse en grupos de GPU en Google Cloud;
  • Se puede ejecutar en Spark;
  • Admite GPU NVIDIA, TPU de Google y GPU habilitadas para Open-CL como AMD.

… puede borrar fácilmente pequeñas desventajas:

  • Puede ser de alto nivel y no siempre es fácil de personalizar;
  • Está restringido a los backends Tensorflow, CNTK y Theano.

Tampoco proporciona tantas funcionalidades como TensorFlow y garantiza menos control sobre la red, por lo que estas podrían ser limitaciones serias si planea construir un tipo especial de modelo DL.

El formato de interfaz Keras se ha convertido en un estándar en el mundo del desarrollo de aprendizaje profundo. Es por eso que, como se mencionó anteriormente, es posible usar Keras como un módulo de Tensorflow. Facilita el desarrollo y reduce las diferencias entre estos dos marcos. También combina las ventajas de usar cada uno de ellos.

4.  MXNet

mxnet

Este es un marco DL creado por Apache, que admite una gran cantidad de lenguajes, como Python, Julia, C ++, R o JavaScript. Ha sido adoptado por Microsoft, Intel y Amazon Web Services.

El marco MXNet es conocido por su gran escalabilidad, por lo que es utilizado por grandes empresas principalmente para el reconocimiento de voz y escritura, PNL y pronósticos.

Algunos de los principales profesionales …

  • Es bastante rápido, flexible y eficiente en términos de ejecución de algoritmos DL ;,
  • Cuenta con soporte avanzado de GPU, incluido el modo de GPU múltiple;
  • Se puede ejecutar en cualquier dispositivo;
  • Tiene una API imperativa de alto rendimiento;
  • Ofrece servicio de modelo fácil;
  • Es altamente escalable;
  • Proporciona un rico soporte para muchos lenguajes de programación, como Python, R, Scala, Javascript y C ++, entre otros;

… y los contras de MXNet:

  • Tiene una comunidad mucho más pequeña detrás de ella en comparación con Tensorflow;
  • No es tan popular entre la comunidad de investigación.

Por lo tanto, MXNet es un buen marco para grandes proyectos industriales , pero dado que todavía es bastante nuevo, existe la posibilidad de que no reciba soporte exactamente cuando lo necesite, tenga esto en cuenta.

5.  CNTK

cgnkt

Esto ahora se llama The Microsoft Cognitive Toolkit : un marco DL de código abierto creado para manejar grandes conjuntos de datos y para admitir Python, C ++, C # y Java.

CNTK facilita una capacitación realmente eficiente para el reconocimiento de voz, escritura a mano y reconocimiento de imágenes, y es compatible con CNN y RNN. Se usa en Skype, Xbox y Cortana.

Como siempre, los expertos han considerado ambas ventajas …

  • Ofrece buen rendimiento y escalabilidad;
  • Cuenta con muchos componentes altamente optimizados;
  • Ofrece soporte para Apache Spark;
  • Es muy eficiente en términos de uso de recursos;
  • Es compatible con la integración simple con Azure Cloud;

… y una desventaja:

  • Apoyo comunitario limitado.

El siguiente marco es un gran ejemplo de variación significativa en el mundo de los marcos de Machine Learning:

6.  Caffe y Caffe2

caffe2

Caffe es un marco implementado en C ++ que tiene una interfaz útil de Python. Admite CNN y redes de avance , y es bueno para modelos de capacitación (sin escribir líneas de código adicionales), procesamiento de imágenes y para perfeccionar redes existentes. Sin embargo … a veces está mal documentado y es difícil de compilar. No hay señales de que una compañía más grande esté implementando Caffe en este momento.

Pero aquí viene Caffe2, presentado por Facebook en 2017, un sucesor natural del viejo Caffe, creado para implementaciones móviles y a gran escala en entornos de producción. En Facebook, es conocida como “la plataforma lista para producción, (…) que se envía a más de mil millones de teléfonos que abarcan ocho generaciones de iPhones y seis generaciones de arquitecturas de CPU de Android”.

En mayo de 2018, Caffe2 se fusionó con la versión estable PyTorch 1.0. Los dos fabulosos motores unieron fuerzas. Ahora podemos considerar los pros a continuación como parte de PyTorch. De todos modos, podemos ver cuáles fueron las ventajas de usar Caffe2. 

El marco es alabado por varias razones:

  • Ofrece modelos previamente entrenados para crear aplicaciones de demostración;
  • Es rápido, escalable y liviano;
  • Funciona bien con otros marcos, como PyTorch, y se fusionará con PyTorch 1.0;
  • Tiene servidor de inferencia optimizada.

Esos fueron los 5 mejores marcos de aprendizaje profundo más famosos. Los siguientes son menos populares, pero aún así vale la pena considerarlos.

7.  Deeplearning4j

dl4j

Si su lenguaje de programación principal es Java , definitivamente debería echar un vistazo más de cerca a DL4J. Es un marco de código abierto de grado comercial escrito principalmente para Java y Scala, que ofrece soporte masivo para diferentes tipos de redes neuronales (como CNN, RNN, RNTN o LTSM).

Es un gran marco de elección, con mucho potencial en áreas de reconocimiento de imágenes, procesamiento de lenguaje natural, detección de fraude y minería de texto. Más:

  • Es robusto, flexible y efectivo;
  • Puede procesar grandes cantidades de datos sin sacrificar la velocidad;
  • Funciona con Apache Hadoop y Spark, además de CPU o GPU distribuidas;
  • La documentación es realmente buena;
  • Tiene una versión comunitaria y una versión empresarial.

Sorprendentemente, cuando se habla de DL4J, los expertos no se centran en ningún inconveniente particular del marco tanto como en las desventajas generales de usar Java para el aprendizaje automático . Debido a que Java no es muy popular entre los proyectos de aprendizaje automático, el marco en sí mismo no puede basarse en bases de código en crecimiento. Como resultado, los costos de desarrollo para su proyecto pueden ser mucho más altos, lo que ralentiza significativamente su negocio …

8.  Chainer

chainer

Otro marco DL basado en Python, soportado por gigantes como IBM, Intel, Nvidia y AWS. Se puede ejecutar en múltiples GPU con poco esfuerzo.

Chainer se aprovecha principalmente para el reconocimiento de voz, la traducción automática y el análisis de sentimientos. Admite varias arquitecturas de red, como CNN, avance rápido, redes y RNN, y tiene algunas ventajas significativas sobre sus competidores:

  • Es mucho más rápido que otros frameworks Python líderes;
  • Es súper flexible e intuitivo;
  • Las redes existentes se pueden modificar en tiempo de ejecución.

Por otra parte:

  • Es más difícil de depurar;
  • La comunidad es relativamente pequeña.

Como otros frameworks orientados a Python son mucho más populares, es posible que no reciba tanta ayuda con Chainer como lo haría con los frameworks más populares, como TF o PyTorch.

Envolviendo todo … ¿Qué marco de aprendizaje profundo usar?

Elegir el marco perfecto para un proyecto DL puede ser difícil de romper. Entonces, al pensar cuál es el mejor marco para el aprendizaje profundo, debe tener en cuenta varios factores:

  • el tipo de redes neuronales que desarrollarás,
  • el lenguaje de programación que usas,
  • la cantidad de herramientas y opciones adicionales que necesitará,
  • el presupuesto que tienes
  • El carácter y los propósitos generales del proyecto en sí.

Esperamos que la comparación anterior arroje algo de luz sobre este problema y lo ayude a seleccionar el marco adecuado para sus necesidades.

Tomado y traducido de: https://www.netguru.com/blog/deep-learning-frameworks-comparison. Autor: Mateusz Opala.