Hola a todos Este viernes, compartimos con ustedes la primera publicación sobre el lanzamiento del curso de
Data Scientist . Que tengas una buena lectura.
Muchas organizaciones han empezado a tratar de utilizar la inteligencia artificial en sus decisiones para ampliar el alcance de las actividades o desarrollar su puesta en marcha, pero una cosa importante a entender: la tecnología de desarrollo elegida debe ir junto con un buen marco para el aprendizaje profundo, especialmente porque cada marco sirve para algún tipo de objetivo separado. La búsqueda del tándem perfecto en este caso es un requisito previo para el desarrollo rápido y fluido del negocio y el despliegue exitoso de proyectos.

La siguiente lista de marcos para el aprendizaje profundo puede ser de ayuda en el proceso de elegir la herramienta adecuada para resolver los problemas específicos que enfrenta en el proceso de trabajar en un proyecto. ¡Puede comparar los pros y los contras de varias soluciones, evaluar sus límites y conocer los mejores casos de uso para cada solución!
1. TensorflowCreado por Google y escrito en Python y C ++, TensorFlow es una de las mejores bibliotecas de código abierto para computación numérica. Simplemente tiene que ser bueno, porque incluso gigantes como DeepMind, Uber, AirBnB o Dropbox han elegido este marco para sus necesidades.
TensorFlow es bueno para proyectos complejos como redes neuronales de múltiples capas. Se utiliza para el reconocimiento de voz o imágenes y aplicaciones de texto como Google Translate, por ejemplo.
Por supuesto, los expertos mencionaron muchas de sus ventajas:
- Se ha escrito una gran cantidad de manuales y documentación para ella;
- Ofrece herramientas poderosas para monitorear el proceso de aprendizaje de modelos y visualización (Tensorboard);
- Está respaldado por una gran comunidad de desarrolladores y empresas tecnológicas;
- Proporciona modelos de servicio;
- Es compatible con el aprendizaje distribuido;
- TensorFlow Lite proporciona salida a dispositivos de baja latencia para dispositivos móviles;
Y contras:
Pierde velocidad en los puntos de referencia, en comparación con CNTK y MXNet, por ejemplo;
Tiene un umbral de entrada más alto para principiantes que PyTorch o Keras. Tensorflow desnudo tiene un nivel bastante bajo y requiere mucho código repetitivo, y el modo "detectar y ejecutar" para Tensorflow complica enormemente el proceso de depuración.
Hay otra limitación importante: el único lenguaje totalmente compatible es Python.
2. PyTorchPyTorch es el sucesor de Python de la biblioteca Lua Torch, y un gran competidor de TensorFlow. Fue desarrollado por Facebook y utilizado por Twitter, Salesforce, la Universidad de Oxford y muchas otras compañías.
PyTorch se utiliza principalmente para entrenar modelos de forma rápida y eficiente, por lo que
esta es la elección de una gran cantidad de desarrolladores.
Tiene muchas ventajas importantes:
- Gracias a la arquitectura del marco, el proceso de creación de un modelo es bastante simple y transparente;
- El modo predeterminado "definir por ejecución" es una referencia a la programación tradicional. El marco admite herramientas de depuración populares como pdb, ipdb o PyCharm depurador;
- Admite concurrencia de datos declarativos;
- Tiene muchos modelos pre-entrenados y partes modulares prefabricadas que son fáciles de combinar;
El entrenamiento distribuido está disponible desde la versión 0.4.
Pero este marco tiene algunas desventajas innegables:
- Falta de soporte del modelo;
- Todavía no está listo para un lanzamiento completo en producción, pero la hoja de ruta hacia la versión 1.0 parece realmente impresionante;
- No hay suficientes interfaces para monitoreo y visualización, como TensorBoard; sin embargo, tiene una conexión externa a Tensorboard.
3.
KerasKeras es una biblioteca mínima basada en Python que puede ejecutarse sobre TensoFlow, Theano o CNTK. Fue desarrollado por un ingeniero de Google, François Schollet, para acelerar los experimentos. Keras admite una amplia gama de capas de redes neuronales, como capas convolucionales, recurrentes o densas.
Este marco es bueno en casos de traducción, reconocimiento de imágenes, habla, etc.
Ventajas:
- La creación de prototipos es realmente rápida y fácil;
- Es lo suficientemente pequeño como para construir modelos de aprendizaje profundo para muchas capas;
- Tiene módulos totalmente configurables;
- Tiene una interfaz simple e intuitiva, respectivamente, buena para principiantes;
- Tiene soporte incorporado para entrenamiento en múltiples GPU;
- Se puede configurar como evaluadores para TensorFlow y capacitarse en clústeres de GPU en la plataforma Google Cloud;
- Se ejecuta en chispa;
- Admite GPU NVIDIA, Google TPU, GPU Open-CL como AMD.
Y algunos inconvenientes:
- Puede resultar demasiado alto y no siempre es fácil de personalizar;
- Se limita a los backends Tensorflow, CNTK y Theano.
Keras no es tan funcional como TensorFlow y ofrece menos opciones para administrar una conexión de red, lo que puede ser una limitación seria si va a crear algún modelo especializado de aprendizaje profundo.
4. MXNet
Este es un marco de aprendizaje profundo creado por Apache que admite una gran cantidad de lenguajes como Python, Julia, C ++, R o JavaScript. Es utilizado por Microsoft, Intel y Amazon Web Services.
El marco MXNet es conocido por su alta escalabilidad, por lo que es utilizado por grandes empresas principalmente para reconocimiento de voz y escritura a mano, PNL y pronósticos.
Tiene muchas ventajas:
- Es lo suficientemente rápido, flexible y efectivo para trabajar con algoritmos de aprendizaje profundo;
- Proporciona soporte avanzado de GPU;
- Se puede ejecutar en cualquier dispositivo;
- Tiene una API imperativa de alto rendimiento;
- Proporciona soporte de modelo fácil;
- Es extremadamente escalable;
- Proporciona un buen soporte para muchos lenguajes de programación, como Python, R, Scala, JavaScript y C ++, y muchos otros.
Ahora por las desventajas de MXNet:
- A su alrededor ya no existe una comunidad como la de TensorFlow;
- No tan popular en la comunidad científica.
Basado en los argumentos anteriores, MXNet es un buen marco para grandes proyectos industriales, pero aún es bastante joven, así que recuerde que es posible que no reciba soporte técnico para resolver su problema tan rápido como lo desee.
5. CNTKEste marco ahora se llama Microsoft Cognitive Toolkit. Es un marco abierto de aprendizaje profundo diseñado para trabajar con conjuntos de datos realmente grandes con soporte para Python, C ++, C # y Java.
CNTK proporciona capacitación efectiva en modelos para reconocimiento de voz, escritura a mano y imagen, y también es compatible con CNN y RNN. Se usa en Skype, Xbox y Cortana.
Como siempre, los expertos ya han apreciado sus beneficios:
- Muestra buen rendimiento y escalabilidad;
- Proporciona muchos componentes bien optimizados;
- Ofrece soporte para Apache Spark;
- Efectivo en el uso de recursos;
- Tiene fácil integración con Azure Cloud;
Y un único inconveniente:
- Apoyo comunitario limitado.
6. Caffe y Caffe2Caffe es un framework C ++ que tiene una interfaz Python muy útil. Admite CNN y redes de distribución directa, y también es bueno para entrenar modelos (sin escribir líneas de código adicionales), procesar imágenes y mejorar las redes neuronales existentes. Por otro lado, no está tan bien documentado y es difícil de compilar. No hay información sobre el uso de Caffe por parte de las grandes empresas. En 2017, Facebook lanzó Caffe 2, que se convirtió en el verdadero sucesor de Caffe, y fue creado para el desarrollo móvil y a gran escala en el entorno de producción.
Es conocido en Facebook como
"Una plataforma lista para producción (...) que se ejecuta en más de mil millones de teléfonos inteligentes, abarca 8 generaciones del iPhone y seis generaciones de arquitecturas de procesadores Android".Este marco es bueno por varias razones:
- Ofrece modelos previamente entrenados para crear aplicaciones de demostración;
- Es rápido, escalable y ocupa poco espacio;
- Funciona bien con otros marcos como PyTorch, y eventualmente se integrará en PyTorch 1.0;
- Proporciona trabajo optimizado con el servidor.
Y nuevamente, el principal inconveniente:
- Apoyo comunitario limitado.
A pesar de que Caffe2 pasa las pruebas bien en términos de velocidad y memoria ocupada, es relativamente nuevo y bastante limitado en términos de implementación de redes complejas que requieren al menos herramientas convenientes para la depuración y el soporte técnico.
7. Deeplearning4jSi su lenguaje de programación principal es Java, definitivamente debería echar un vistazo más de cerca a DL4J. Es una plataforma comercial de código abierto escrita principalmente para Java y Scala que proporciona un buen soporte para varios tipos de redes neuronales (como CNN, RNN, RNTN o LTSM).
Este marco será una buena opción ya que tiene un gran potencial en las áreas de reconocimiento de imágenes, procesamiento de lenguaje natural, búsqueda de vulnerabilidad y análisis de texto.
Pros:
- Fiable, flexible y eficiente;
- Puede procesar grandes cantidades de datos sin pérdida de velocidad;
- Funciona con Apache Hadoop y Spark, en CPU o GPU distribuida;
- Tiene buena documentación;
- Tiene una versión comunitaria y empresarial.
Lo sorprendente es que, hablando de este marco, los expertos no se centran en ninguna deficiencia específica, como se supone en un debate general sobre la idoneidad de Java para el aprendizaje automático en general. Dado que Java no se usa con tanta frecuencia en proyectos de aprendizaje automático, el marco no puede basarse en bases de datos crecientes de código listo para resolver problemas específicos. Como resultado, los costos de su proyecto pueden ser mucho más altos y resolver un problema puede ralentizar significativamente el progreso general del proyecto.
8. ChainerOtro marco de aprendizaje profundo de Python compatible con gigantes como Intel, IBM, NVIDIA y AWS. Puede usar fácilmente múltiples GPU.
Chainer se utiliza principalmente para reconocimiento de voz, traducción automática y análisis de claves. Admite varias arquitecturas de red, como CNN, avance rápido, RNN, y tiene varias ventajas importantes sobre sus competidores:
- Es mucho más rápido que cualquier otro marco de Python;
- Es increíblemente flexible e intuitivo;
- Las redes existentes se pueden modificar directamente en tiempo de ejecución;
Por otro lado:
- Muy difícil en términos de depuración;
- Alrededor de él hay una comunidad relativamente pequeña;
Dado que otros frameworks basados en Python son mucho más populares, es posible que no obtenga ayuda tan rápida como con otros frameworks como TensorFlow o PyTorch.
Para resumir
Elegir el mejor marco para un proyecto de aprendizaje profundo puede ser extremadamente difícil. Debe tener en cuenta los siguientes factores:
- El tipo de redes neuronales que desarrollará;
- El lenguaje de programación que usas;
- La cantidad de herramientas y opciones adicionales que pueda necesitar;
- Presupuesto del proyecto;
- La naturaleza y los objetivos que persigue el proyecto.
Espero que esta comparación de marcos arroje algo de luz sobre este problema y lo ayude a elegir la solución más adecuada para su proyecto.
Escriba comentarios y nos vemos en
la jornada de puertas abiertas , que se llevará a cabo el 19 de marzo por
Alexander Nikitin .