13 entornos para dominar el aprendizaje automático

¿Piensa invertir en aprendizaje automático? Estas herramientas harán el trabajo duro.

Aprendizaje automático

Durante el año pasado, el aprendizaje automático (machine learning) se ha ido generalizado de una forma sin precedentes. La tendencia no está alimentada sólo por los entornos de nube baratos y los cada vez más potentes hardwares GPU. También cuenta la explosión de los entornos ahora disponibles para el aprendizaje automático. Todos son de código abierto, pero aún más importante es la forma en que están siendo diseñados para abstraer las partes más difíciles del machine learning  y poner sus técnicas a disposición de una amplia clase de desarrolladores.

Aquí hay una docena de marcos de aprendizaje automático, ya sean de nueva aparición o recién revisados en el último año. Todos nos llamaron la atención por ser productos con una gran presencia en TI, por intentar llevar una nueva simplicidad a su dominio del problema, o por  dirigirse un reto específico asociado con el aprendizaje automático.

Apache Spark MLlib

Apache Spark puede ser más conocido por ser parte de la familia de Hadoop, pero este marco de procesamiento de datos en memoria nació fuera de Hadoop y se está haciendo un nombre por sí mismo fuera del ecosistema Hadoop también. Spark se ha convertido en una herramienta go-to para el machine learning, gracias a su creciente biblioteca de algoritmos que se pueden aplicar a los datos en memoria a alta velocidad. Spark no se para, ya que los algoritmos disponibles están siendo constantemente ampliados y revisados. La versión1.5  del año pasado añadió muchos algoritmos nuevos, mejorando los ya existentes, y reforzó aún más el soporte MLlib en Python, una plataforma importante para las matemáticas y las estadísticas de los usuarios. La recién estrenada  versión 1.6 hace posible, entre otras cosas, suspender y reanudar trabajos de Spark ML a través de conducciones persistentes.

 

Apache Singa

Los entornos de aprendizaje profundo potencian funciones de servicio duras de aprendizaja automático, tales como el procesamiento del lenguaje natural y reconocimiento de imágenes. Singa, recientemente aceptada en la Incubadora de Apache, es un marco de código abierto destinado a hacer más fácil entrenar modelos de aprendizaje profundo de grandes volúmenes de datos. Singa proporciona un modelo de programación sencillo para entrenar las redes de aprendizaje profundo a través de un grupo de máquinas, y es compatible con los puestos trabajos de entrenamiento más comunes: redes neuronales convolucionales, máquinas de Boltzmann restringidas, o redes neuronales recurrentes. Los modelos pueden ser entrenados de forma sincrónica (uno tras otro) o asíncrona (uno al lado del otro), dependiendo de lo que funcione mejor para el problema dado. Singa también simplifica la configuración del clúster con Apache Zookeeper.

 

Caffe

El entorno de aprendizaje profundo  Caffe "está hecho con la expresión, la velocidad y la modularidad en mente”.  Originalmente desarrollado en 2013 para proyectos de visión artificial, Caffe  seha ampliado desde entonces para incluir otras aplicaciones, tales como el habla y multimedia. La velocidad es una prioridad, por lo que Caffe ha sido escrito completamente en C ++, con soporte para la aceleración CUDA, aunque se puede cambiar entre la CPU y la GPU de procesamiento, según sea necesario. La distribución incluye un conjunto de modelos de referencia gratis y de código abierto para los trabajos de clasificación comunes, con otros modelos creados y donados por la comunidad de usuarios Caffe.

 

Microsoft Azure ML Studio

Dada la gran cantidad de datos y la potencia de cálculo necesaria para llevar a cabo el aprendizaje automático, la nube es un ambiente ideal para aplicaciones ML. Microsoft ha equipado Azure con su propio servicio de pago por uso de machine learning, Azure ML Studio, con versiones mensuales, por hora, y versiones sin nivel. (El proyecto HowOldRobot de la compañía fue creado con este sistema). Azure ML Studio permite a los usuarios crear y entrenar modelos, para  a continuación,  convertirlos en API que puedan ser consumidos por otros servicios. Los usuarios pueden obtener hasta 10 GB de almacenamiento por cuenta de modelos de datos, aunque también se puede conectar su propio almacenamiento de Azure al servicio para los modelos más grandes. Una amplia gama de algoritmos están disponibles, cortesía de Microsoft y terceros. Ni siquiera necesita una cuenta para probar el servicio; puede iniciar sesión en forma anónima y utilizar Azure ML Studio un máximo de ocho horas.

 

Amazon Machine Learning

El planteamiento general de Amazon para servicios en la nube ha seguido un patrón. Proporcionar los conceptos básicos, atraer una audiencia de base que la cuide, dejar que construyan en la parte más alta y, a continuación, averiguar lo que realmente necesitan y ofrecerlo. Lo mismo podría decirse de su primera incursión en el aprendizaje automático  que ofrece como un servicio, Amazon Machine Learning. Se conecta a los datos almacenados en Amazon S3, Redshift, o RDS, y se puede ejecutar la clasificación binaria, la categorización multiclase, o la regresión de dichos datos para crear un modelo. Sin embargo, el servicio está altamente centrado en Amazon. Además de ser dependiente de los datos almacenados en Amazon, los modelos resultantes no pueden ser importados o exportados, y los conjuntos de datos para los modelos de formación no pueden ser mayores que 100 GB. Aún así, es un comienzo, y muestra cómo el aprendizaje automático se está haciendo práctico en lugar de ser un lujo.

 

Microsoft Distributed Machine Learning Toolkit

Cuantos  más ordenadores tengas  que lanzar en cualquier problema de aprendizaje automático, mejor - pero poniendo juntos máquinas y desarrollar aplicaciones ML  que se ejecuten bien a través de todos ellos puede ser complicado. El marco de Microsoft, DMTK, (Distributed Machine Learning Toolkit) aborda el tema de la distribución de diversos tipos de puestos de trabajo de aprendizaje automático a través de un grupo de sistemas. DMTK está catalogado como un entorno en lugar de solución fuera de la caja en toda regla, por lo que el número de algoritmos reales que incluye en él es pequeño. Pero el diseño de DMTK permite la expansión futura, y a los usuarios sacar el máximo provecho de las agrupaciones de recursos limitados. Por ejemplo, cada nodo del clúster tiene una caché local, lo que reduce la cantidad de tráfico con el nodo servidor central que proporciona parámetros para el trabajo en cuestión.

 

Google TensorFlow

Al igual que DMTK de Microsoft, Google TensorFlow es un marco de aprendizaje automático diseñado para escalar a través de múltiples nodos. Al igual que con Kubernetes de Google, que fue construido para resolver los problemas internamente en Google, y Google finalmente lo ha elegido para lanzarlo como un producto de código abierto. TensorFlow implementa lo que se llaman diagramas de flujo de datos, donde los lotes de datos ( "tensores") pueden ser procesados por una serie de algoritmos que se describen mediante un gráfico. Los movimientos de los datos a través del sistema se denominan "flujos" - de ahí el nombre. Los gráficos pueden ser ensamblados con C ++ o Python y pueden ser procesados ​​en las CPU o GPU. El plan a largo plazo de Google es que TensorFlow sea desarrollado por contribuciones de terceras partes.

 

Microsoft Computational Network Toolkit

Siguiendo los talones al lanzamiento de DMTK, Microsoft dio a conocer otro conjunto de herramientas de aprendizaje automático, el Computational Network Toolkit, o CNTK para abreviar. CNTK es similar a Google TensorFlow, ya que permite a los usuarios crear redes neuronales por medio de un grafíco dirigido. Microsoft también considera que es comparable a proyectos como Caffe, Theano, y Torch. Su principal ventaja sobre esos marcos es la velocidad, específicamente la capacidad de explotar las dos CPU múltiples y varias GPU en paralelo. Microsoft alega que utilizar CNTK en conjunción con los clústers de la GPU en Azure acelera la formación de reconocimiento de voz de Cortana. Originalmente desarrollado como parte de la investigación de Microsoft en el reconocimiento de voz, CNTK fue ofrecido originalmente como un proyecto de código abierto en abril de 2015, pero desde entonces ha sido re-lanzado en GitHub bajo una licencia mucho más liberal, al estilo del MIT.

 

Veles (Samsung)

Veles es una plataforma distribuida para aplicaciones de aprendizaje profundo, y al igual que TensorFlow y DMTK, está escrito en C ++, aunque utiliza también Python para llevar a cabo la automatización y la coordinación entre los nodos. Los conjuntos de datos pueden ser analizados y automáticamente normalizaron antes de alimentar el clúster, y una API REST permite al  modelo entrenado ser utilizado en la producción inmediatamente (asumiendo que su hardware sea lo suficientemente bueno). El uso de Veles de Python va más allá del simple empleo que se haría de un código de adhesión. IPython (ahora Jupyter), la herramienta de visualización de datos y análisis, puede visualizar y publicar los resultados de un clúster de Veles. Samsung espera lanzar el proyecto como de código abierto lo que impulsará algunos desarrollso, tales como los puertos a Windows y Mac OS X.

 

Brainstorm

Desarrollado a lo largo de 2015 por los estudiantes de doctorado Klaus Greff y Rupesh Srivastava en IDSIA (Instituto Dalle Molle de Inteligencia Artificial) en Lugano, Suiza, el objetivo del proyecto Brainstorm es “hacer las redes neuronales profundas rápidas, flexibles y divertidas”. El soporte ya está incluido para una variedad de modelos de redes neuronales recurrentes, tales como LSTM. Brainstorm utiliza Python para proporcionar dos "handers", o  APIs de gestión de datos - una para el cálculo de la CPU por la biblioteca Numpy, y otra que aprovecha la GPU a través de CUDA. La mayor parte del trabajo se realiza a través de secuencias de comandos de Python, así que no esperes una rica interfaz gráfica de usuario front-end, a excepción de la que traiga usted mismo. Pero el plan a largo plazo es crear algo que emplee “lecciones aprendidas de proyectos de código abierto anteriores”, y utilice “nuevos elementos de diseño compatible con múltiples plataformas y computación back ends”.

 

mlpack 2

Nuestra evaluación previa de los recursos de aprendizaje automático dio con mlpack, un C ++ - basado en una biblioteca de aprendizaje automático que se puso en marcha en 2011 y diseñado para "escalabilidad, velocidad y facilidad de uso", según los creadores de la biblioteca. La implementación de mlpack se puede hacer a través de una memoria caché de comandos en línea ejecutables , para operaciones de caja negra, o con un API de C ++ para un trabajo más sofisticado.

 

Marvin

Otra producción relativamente reciente, el marco de la red neural Marvin es un producto del Grupo Vision Princeton. Nació "para ser hackeado", como sus creadores explican en la documentación para el proyecto, y se basa sólo en unos pocos archivos escritos en C ++ y en el marco de la GPU CUDA. A pesar de que el código en sí mismo sigue siendo deliberadamente mínimo, el proyecto viene con una serie de modelos preentrenados que pueden ser reutilizados con la debida citación y contribuyeron a las solicitudes de extracción como propio código del proyecto.

 

Neon

Nervana, una empresa que está construyendo su propia plataforma de hardware y software de aprendizaje profundo, ha ofrecido un marco para el aprendizaje profundo llamado Neon como un proyecto de código abierto. Utiliza módulos enchufables para permitir que  el trabajo pesado se haga en la CPU, la  GPU, o en el propio hardware personalizado de Nervana. Neon está escrito principalmente en Python, con unas pocas piezas en C ++ para la velocidad. Esto hace que esté inmediatamente disponible para otros que trabajan en la ciencia de datos en Python o para la mayoría  de los otros marcos que tenga enlaces Python. La versión 2.0 tiene un montón de refactorizaciones y nuevas características, incluyendo muchos nuevos tipos de algoritmos, y los cambios en los ya existentes para acelerarlos o rebajarlos. Por ejemplo, abandona la biblioteca Boost generadora de números aleatorios para funciones aleatorias nativas de C ++ 11.

Una desventaja de muchos años es la falta de enlaces para cualquier idioma que no sea C ++, es decir, los usuarios de todo, desde R a Python no pueden hacer uso de mlpack a menos que alguien lance sus propios envoltorios de dichos idiomas. El trabajo se ha hecho para añadir soporte de MATLAB, pero los proyectos de este tipo tienden a disfrutar de una mayor absorción cuando son directamente útiles en los principales entornos en los que se lleva a cabo el trabajo de aprendizaje automático.



Contenido Patrocinado

Fernando Rubio Román, CTO de Microsoft España. TECNOLOGÍA
Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital