Apache Mahout

De Wikipedia, la enciclopedia libre
Apache Mahout
Información general
Tipo de programa software libre
Desarrollador Apache Software Foundation
Lanzamiento inicial 31 de mayo de 2011
Licencia licencia Apache
Información técnica
Programado en Java
Plataformas admitidas máquina virtual Java
Enlaces

Apache Mahout es un proyecto de Apache Software Foundation para producir implementaciones gratuitas de algoritmos de aprendizaje automático distribuidos o escalables centrados principalmente en el álgebra lineal. En el pasado, muchas de las implementaciones usaban la plataforma Apache Hadoop, sin embargo, hoy en día se enfoca principalmente en Apache Spark.[1][2]​ Mahout también proporciona bibliotecas Java/Scala para operaciones matemáticas comunes (centradas en álgebra lineal y estadísticas) y colecciones primitivas de Java. Mahout es un trabajo en progreso; Se han implementado una serie de algoritmos.

Características[editar]

Samsara[editar]

Apache Mahout-Samsara se refiere a un lenguaje específico de dominio (DSL) de Scala que permite a los usuarios usar la sintaxis R-Like en lugar de la sintaxis tradicional similar a Scala. Esto permite al usuario expresar algoritmos de manera concisa y clara.

val G = B %*% B.t - C - C.t + (ksi dot ksi) * (s_q cross s_q)

Agnóstico de back-end[editar]

El código de Apache Mahout abstrae el lenguaje específico del dominio del motor donde se ejecuta el código. Si bien el desarrollo activo se realiza con el motor Apache Spark, los usuarios son libres de implementar cualquier motor que elijan: H2O y Apache Flink se implementaron en el pasado y existen ejemplos en la base del código.

Aceleradores GPU/CPU[editar]

La JVM tiene un cálculo notoriamente lento. Para mejorar la velocidad, se agregaron "solucionadores nativos" que mueven operaciones de BLAS en el núcleo y, por extensión, distribuidas fuera de la JVM, descargándolas en memoria GPU o fuera del montón para el procesamiento a través de múltiples CPU y/o núcleos de CPU, o GPU cuando construido contra la biblioteca ViennaCL.[3]​ ViennaCL es una biblioteca de C++ altamente optimizada con operaciones BLAS implementadas en OpenMP y OpenCL. A partir de la versión 14.1, la compilación de OpenMP se consideró estable, por lo que la compilación de OpenCL aún se encuentra en su fase POC experimental.

Recomendadores[editar]

Apache Mahout presenta implementaciones de Alternating Least Squares, Co-Occurrence y Correlated Co-Occurrence, un algoritmo de recomendación exclusivo de Mahout que extiende la co-ocurrencia para usarse en múltiples dimensiones de datos.

Historia[editar]

Transición de Map Reduce a Apache Spark[editar]

Si bien los algoritmos centrales de Mahout para el agrupamiento, la clasificación y el filtrado colaborativo basado en lotes se implementaron sobre Apache Hadoop utilizando el paradigma map/reduce, no restringió las contribuciones a las implementaciones basadas en Hadoop. También se recibieron con agrado las contribuciones que se ejecutan en un solo nodo o en un clúster que no es de Hadoop. Por ejemplo, el componente de recomendación de filtrado colaborativo 'Taste' de Mahout era originalmente un proyecto separado y puede ejecutarse de forma independiente sin Hadoop. A partir de la versión 0.10.0, el proyecto cambió su enfoque para construir un entorno de programación independiente del backend, cuyo nombre en código es "Samsara". El entorno consta de un optimizador algebraico independiente del back-end y un Scala DSL algebraico que unifica operadores algebraicos en memoria y distribuidos. Las plataformas algebraicas admitidas son Apache Spark, H2O y Apache Flink. La compatibilidad con los algoritmos de MapReduce comenzó a eliminarse gradualmente en 2014.[4]

Historial de versiones[editar]

Historial de versiones
Versión Fecha de lanzamiento notas
0.1 2009-04-07
0.2 2009-11-18
0.3 2010-03-17
0.4 2010-10-31
0.5 2011-05-27
0.6 2012-02-06
0.7 2012-05-16
0.8 2013-07-25
0.9 2014-02-01
0.10.0 2015-04-11 ADSL Samsara
0.10.1 2015-05-31
0.10.2 2015-08-06
0.11.0 2015-08-07
0.11.1 2015-11-06
0.11.2 2016-03-11
0.12.0 2016-04-11 Añadido motor Apache Flink
0.12.1 2016-05-19
0.12.2 2016-06-13
0.13.0 2017-04-17
0.14.0 2019-03-07 Solo fuente (sin binarios)
14.1 2020-10-07

Desarrolladores[editar]

Apache Mahout es desarrollado por una comunidad. El proyecto es administrado por un grupo llamado "Comité de Gestión del Proyecto" (PMC). El PMC actual es Andrew Musselman, Andrew Palumbo, Drew Farris, Isabel Drost-Fromm, Jake Mannix, Pat Ferrel, Paritosh Ranjan, Trevor Grant, Robin Anil, Sebastian Schelter, Stevo Slavić.[5]

Referencias[editar]

  1. «Introducing Apache Mahout». ibm.com. 2011. Consultado el 13 de septiembre de 2011. 
  2. «InfoQ: Apache Mahout: Highly Scalable Machine Learning Algorithms». infoq.com. 2011. Consultado el 13 de septiembre de 2011. 
  3. «ViennaCL». 
  4. «MAHOUT-1510 ("Good-bye MapReduce")». 
  5. «Apache Committee Information».