13
Plataforma Spark: catapulta Machine Learning Página1 Título: Plataforma Spark: catapulta Machine Learning Autor: Dr. Gabriel Guerrero Fecha: 20150719 Ref: gg20150720_PlataformaSpark_CatapultaMachineLearning Descripción: Breve introducción a Spark ML Introducción La plataforma Spark es una catapulta del Aprendizaje Automatizado (ML Machine Learning), y así como la catapulta de Leonardo, la cual es una herramienta genial que permite con poco esfuerzo enviar un objeto pesado a gran distancia, hoy el marco de referencia (framework) Spark permite a los algoritmos y técnicas del Aprendizaje Automatizado (ML), llegar a horizontes de aplicación inusitados INUSITADO. Adjetivo. Que es inusual o raro y por ello resulta sorprendente. No habitual Del latín inusitātus, inusitado es un adjetivo que se utiliza para calificar a aquello desacostumbrado, extraño o poco usado. Lo inusitado, por lo tanto, es algo infrecuente. Así como la catapulta de Leonardo no construye piedras, pero las hace extremadamente útiles cuando son lanzadas a distancias nunca antes alcanzadas, la plataforma Spark no construye algoritmos de Aprendizaje Automatizado (Machine Learning), pero logra que se puedan realizar aplicaciones utilizándolos, las cuales transforman y surcan un nuevo horizonte en la naciente Ciencia de Datos (Data Science).

Plataforma Spark: catapulta Machine Learning - saXsa · Del latín inusitātus, inusitado es un adjetivo que se utiliza para calificar a aquello desacostumbrado, extraño o poco usado

  • Upload
    buiphuc

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Plataforma Spark: catapulta Machine Learning

Pág

ina1

Título: Plataforma Spark: catapulta Machine Learning Autor: Dr. Gabriel Guerrero Fecha: 20150719 Ref: gg20150720_PlataformaSpark_CatapultaMachineLearning Descripción: Breve introducción a Spark ML

Introducción

La plataforma Spark es una catapulta del Aprendizaje Automatizado (ML Machine

Learning), y así como la catapulta de Leonardo, la cual es una herramienta genial que permite con poco esfuerzo enviar un objeto pesado a gran distancia, hoy el marco de

referencia (framework) Spark permite a los algoritmos y técnicas del Aprendizaje

Automatizado (ML), llegar a horizontes de aplicación inusitados

INUSITADO. Adjetivo. Que es inusual o raro y por ello resulta sorprendente. No habitual

Del latín inusitātus, inusitado es un adjetivo que se utiliza para calificar a aquello desacostumbrado, extraño o poco usado. Lo inusitado, por lo tanto, es algo infrecuente.

Así como la catapulta de Leonardo no construye piedras, pero las hace extremadamente útiles cuando son lanzadas a distancias nunca antes alcanzadas, la plataforma Spark no construye algoritmos de Aprendizaje Automatizado (Machine Learning), pero logra que se puedan realizar aplicaciones utilizándolos, las cuales transforman y surcan un nuevo

horizonte en la naciente Ciencia de Datos (Data Science).

Plataforma Spark: catapulta Machine Learning

Pág

ina2

Plataforma Spark: catapulta Machine Learning

Pág

ina3

Historia Spark

¿Cuándo surge Spark?

En 2009, el proyecto Spark inicia en la Universidad de California en Berkeley con los

trabajos de tesis doctoral de Matei Zaharia, quien es un alumno de los profesores

Ion Stoica y Michael Franklin.

En 2010, se pone a disposición como Código Abierto (open source) con licenciamiento tipo BSD.

En 2013, el proyecto se ofrece a la Apache Software Foundation y su licenciamiento se ofrece como tipo Apache 2.0.

En 2014, el marco de referencia Spark se convierte en proyecto tipo Apache Top-Level Project y desde entonces ha acelerado su divulgación y uso de forma vertiginosa.

¿Cómo surge?

En una entrevista al Profesor Ion Stoica por Ben Lorica de O'Reilly nos cuenta

la historia, que puede consultarse en:

(https://soundcloud.com/oreilly-radar/apache-sparks-journey-from-academia-to-industry)

El profesor Ion Stoica comenta que por los años 2009 se tenía un proyecto

denominado Nexus derivado del curso Temas Avanzados de Ciencias de la

Computación (“Advanced Topics in Computer Systems”) del Prof. David Culler,,el

cual cambió de nombre posteriormente a Mesos por cuestiones de derechos de

autor con otro proyecto con ese mismo nombre.

Plataforma Spark: catapulta Machine Learning

Pág

ina4

Este proyecto escolar inicial, derivó en la construcción del sistema Mesos como

un sistema de manejo de un cluster, en el que colaboran Benjamin Hindman, Andy

Konwinski, y Matei Zaharia.

El sistema Mesos es un marco de referencia (framework) para el manejo de un

cluster, que soporta varios diferentes tipos de sistemas de cluster (cluster management framework, which can support different kind of cluster computing systems).

El sistema Mesos se documenta y presenta en el artículo: “A Common Substrate for

Cluster Computing, “, que puede consultarse en

https://www.usenix.org/legacy/event/hotcloud09/tech/full_papers/hindman.pdf

Para complementar la historia, recordemos que uno de los tesistas era Benjamin Hindman, quien fue contratado por Twitter y donde fue uno de los promotores de BigData en Twitter. Recientemente se incorpora a Mesosphere, una compañía que

promueve Mesos.

Así en el año 2009 se tenía el marco de referencia Mesos y se deseaba mostrar

que podía construirse utilizando este marco de referencia, un ambiente de

cómputo distribuido al estilo Hadoop, pero mejorando los aspectos de cómputo

iterativo e interactivo que eran debilidades del aspecto procesamiento de Hadoop MapReduce.

Dentro de las principales aplicaciones de cómputo iterativo e interactivo tenemos

precisamente las técnicas de Aprendizaje Automatizado (Machine Learning). Y así nace Spark como un proyecto que se construye utilizando el

marco de referencia Mesos para ofrecer un ambiente de cómputo distribuido

tolerante a fallas que soportara procesos iterativos e interactivos como los requiere

el Aprendizaje Automatizado.

Plataforma Spark: catapulta Machine Learning

Pág

ina5

En esa época en la Universidad de Berkeley se desarrollaba un proyecto para

utilizar Hadoop Map/Reduce para técnicas y algoritmos de ML (Machine Learning), que tenía diversos inconvenientes. Por lo cual uno de los principales

objetivos de Spark era ofrece soporte a algoritmos de Aprendizaje Automatizado en un contexto de Grandes Volúmenes para sistemas iterativos

e interactivos.

En esas fechas por los pasillos de la UC Berkeley existía un ambiente de

investigación promovida también por Michael Franklin que después de una

estancia de 2007-2008 fuera de UC Berkeley regresa a la Universidad tratando de impulsar sistemas que permitan el manejo de grandes volúmenes con una perspectiva de aplicación a sistemas de análisis y toma de decisiones

fundamentada en Aprendizaje Automatizado. Lo que ahora se

denomina Analíticos en Grandes Volúmenes (Big Data Analytics). En ese entonces se tenía el RADLab  (Reliable And Distributed

computing Lab)  y en este contexto desde 2009 gran parte de las investigaciones y tesis doctorales se enfocan en estos temas de BigData y Analíticos de Grandes Volúmenes de Datos.

La entrevista a Michael Franklin se encuentra en

https://medium.com/s-c-a-l-e/amplab-s-co-creator-on-where-big-data-is-headed-and-why-spark-is-so-big-f0c0da2f7c0f

Así Michael Franklin y Ion Stoica con finaciamientos de la Iniciativa BigData Obama y de empresas como Amazon WebServices, Google, SAP y otras crean el AMPLab (Algorithms Machine Peaple) en 2011

Plataforma Spark: catapulta Machine Learning

Pág

ina6

Otro de los requerimientos de Spark es ofrecer soporte para un sistema de

enunciados SQL interactivos, como los requeridos por la compañía Conviva,

para el manejo de video y sistemas analíticos. En un inicio el problema de la distribución de video es como realizar decisiones inteligentes para rutear y transmitir video en tiempo real sin fallas en la transmisión en una red Internet con fallas.

La compañía Conviva, fundada en 2006, monitorea y optimiza video en línea

para las proveedoras de video en tiempo real más importantes, en donde el Dr.

Ion Stoica, es cofundador y CTO (Chief Technology Officer).

La plataforma Conviva es un sistema en tiempo real que permite a los

proveedores de contenido en Internet en formato video (video streaming) ofrecer el contenido con calidad de TV en Internet, sin importar las fallas de red y conectividad Internet. Hoy Conviva maneja mas de 4 mil millones de torrentes de videos (video streaming), con mas de 1.6 mil millones de dispositivos y mas de 200 proveedores de servicios de Video en Internet.

Así otra de los requerimientos que se deseaba en Spark es trabajar torrentes de

datos (Spark Streaming) y enunciados (SQL) de extracción en grandes volúmenes de datos (SQL Spark), lo que motivo lineas de investigacion del Prof Ion Stoica y los tesistas de la Universidad de California en Berkeley (UC Berkeley).

Plataforma Spark: catapulta Machine Learning

Pág

ina7

Antecedentes de Spark

Antes del mundo Spark surgieron una gran diversidad de contribuciones y sistemas del cómo manejar datos para su búsqueda y análisis

●1962 Arbol AVL (Georgy Adelson-Velsky y Yevgeni Mijáilovich Landis). Esta es la estructura de Arbol AVL propuesto por los

matematicos rusos que ofrece la mejor forma de almacenar contenido para su busqueda

● 1992. Berkeley DB. Bibliotecas de instrumentación del concepto AVL que

fueron propuestas dentro del sistema de archivos Unix y que en una instrumentación fuera de Unix ofrecen unos investigadores de UC Berkeley fundando una compañía Sleepycat. Esta biblioteca se mejora e instrumenta en forma de código inmerso para crear el concepto de Base de datos inmersa (Embedded database)

● 2003 Berkeley DB XML

● 2003 Google File System

● 2004 Berkeley DB JavaEdition

● 2004 MapReduce

● 2006 Berkeley DB Oracle 2006

● 2006 BigTable

● 2008 Dremel

Plataforma Spark: catapulta Machine Learning

Pág

ina8

Bibliotecas Spark

El marco de referencia (framework) Spark ofrece un conjunto de bibliotecas

para el desarrollo de aplicaciones. Entre las bibliotecas básicas integradas en la versión núcleo se tienen:

Spark SQL Es el modulo para el trabajo con datos estructurados.

Spark Streaming permite la construcción sencilla de aplicaciones

escalables y tolerantes a fallas utilizando torrentes de datos.

MLlib es una biblioteca escalable con algoritmos de Aprendizaje Automatizado (scalable machine learning library).

GraphX es la biblioteca de Apache Spark para grafos y cómputo paralelo de

grafos.

Plataforma Spark: catapulta Machine Learning

Pág

ina9

BDAS, Berkeley Data Analytics Stack

Con el objetivo de ofrecer un ambiente integral para el conjunto de aplicaciones de grandes volúmenes de datos distribuidos y tolerante a fallos, el marco de referencia (framework) Spark continúa añadiendo componentes en una forma

unificada. Este es el proyecto BDAS (Berkeley Data Analytics Stack)

BDAS es una pila de aplicaciones de código abierto (open source software

stack) que integra las componentes de sistemas construidas por el Laboratorio AMPLab de UC Berkeley alrededor del concepto de Analíticos de Grandes

Volúmenes (BigData Analytics)

Plataforma Spark: catapulta Machine Learning

Pág

ina1

0

Plataforma Spark: catapulta Machine Learning

Pág

ina1

1

Algoritmos de Aprendizaje Automatizado (ML) en Spark

MLlib es la biblioteca de Spark que es escalable de algoritmos de Aprendizaje Automatizado (machine learning library) que incluye herramientas como clasificación (classification), regresión (regression), agrupación (clustering), filtrado colaborativo (collaborative filtering), reducción de dimensiones (dimensionality reduction).

Hoy la idea es NO INVENTAR EL AGUA TIBIA en el Aprendizaje Automatizado de Grandes Volúmenes de Datos (BigData Analytics), y aplicar el tipo de algoritmo más conveniente a un problema y NO PROGRAMAR DESDE EL INICIO los algoritmos.

Hoy debemos pensar en los Algoritmos de Aprendizaje Automatizado como instrumentos o utensilios como en una analogía de un gran banquete.

Hoy los comensales quieren bocadillos y banquetes JUSTO A TIEMPO y de FORMA INSTANTANEA (Streaming) para una gran población (usuarios Internet) en un extenso territorio (cobertura Internet), sin importar si en la cocina se prepararon con el mejor horno (Spark y BDAS) y las mejores recetas (Algoritmos ML eficientes) !!

Hoy Spark ofrece uno de los mejores instrumentos con una gran variedad de

“recetas de ML”, en particular ya se cuenta en MLlib 1.3 los siguientes algoritmos listos para utilizarse:

Ver página Spark ML

http://spark.apache.org/docs/latest/mllib-guide.html

Plataforma Spark: catapulta Machine Learning

Pág

ina1

2

Tipos de datos

Estadísticas Básicas

Resumen estadístico

Correlación

Muestreo estratificado

Prueba de hipótesis

Generación aleatoria de datos

Clasificación y regresión

Modelos lineales (SVMs, regresión logística, regresión lineal)

Ingenuo de Bayes

Arboles de decisión

Familias de Arboles (Bosques de árboles y Árboles de Impulso-Gradiente)

Regresión Isotónica

Filtrado Colaborativo

Alternado de Mínimos Cuadrados (ALS)

Clustering

K-medias

Mezcla de Gauss

Agrupación Iteración de potencias (PIC)

Asignación de Dirichlet Latente (LDA)

Streaming de K-medias

Reducción de dimencionalidad

Descomposición de valores singulares (SVD)

Análisis de componentes principales (PCA)

Extracción de características y transformación

Minería por patrones frecuentes

Crecimiento FP

Optimización (desarrollo)

Descenso de gradiente estocástico

Limitación de memoria BFGS (L-BFGS)

Modelo de Exportación PMML

Plataforma Spark: catapulta Machine Learning

Pág

ina1

3

Resumen

Hoy la plataforma Spark y los algoritmos de Aprendizaje Automatizado incluidos en sus bibliotecas ofrecen a la Ciencia de Datos (Data Science) una Catapulta para promover la generación de

aplicaciones de Analíticos de Grandes Volúmenes de Datos

(BigData Analytics) , en particular en la rama de Aprendizaje Automatizado

en Tiempo Real utilizando la componente Spark Streaming y SQL Spark para la extracción de información con enunciados SQL.