1. UNIVERSIDAD EUROPEA DE MADRID
ESCUELA DE ARQUITECTURA, INGENIERÍA Y DISEÑO
Alumno: BUEKÁ-PASTOR TORAO GARCIA
Director: D. FERNANDO APARICIO
Universidad Europea de Madrid
INTEGRATION OF ETL, HADOOP AND
SPARK TO RUN A CONVOLUTIONAL
NEURAL NETWORK
CURSO ACADÉMICO 2015-2016
GRADO EN INGENIERÍA INFORMÁTICA
PROYECTO FIN DE GRADO
26 de Julio de 2016
2. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Planteamiento del problema y objetivos
Entorno de desarrollo
Componentes software
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
3. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Planteamiento del problema
La pregunta que se pretende responder es:
¿Cómo entrenar una red neuronal convolucional para el reconocimiento de dígitos
manuscritos almacenados en Hadoop?
Objetivos
Procesar la
colección MNIST
Cargar los datos
en Hadoop
Integrar la Red
Neuronal en la
ETL
Proporcionar una
infraestructura
ETL para entrenar
el algoritmo de la
Red Neural
Convolucional
4. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Java JDK 8
Oracle
VirtualBox
Eclipse
+
Maven
GitHub
Librerías:
Log4j
Entorno de desarrollo
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
5. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL
Colección
MNIST
Red Neuronal
Convolucional
Spark
Hadoop
Pentaho
Componentes
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
6. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Arquitectura
Flujo de información
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
7. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Arquitectura
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
Bootstrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
File System Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
8. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Flujo de información
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
9. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional
de los componentes
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
10. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Colección MNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
60.000
imágenes para
entrenamiento
10.000
imágenes para
test
Ficheros en
binario
Formato 28x28
(786 pixeles)
Descripción funcional de los componentes
Colección de dígitos manuscritos
Representaciones de los dígitos
Formato en vector de las imágenes
11. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: ETL MNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
Bootstrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
12. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL MNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Integra la
librería
canova.jar
Descarga y
procesa la
colección
Genera
vectores de
imágenes
Fichero de
parámetros
Se ejecuta
con script
.bat/.sh
Descripción funcional de los componentes
Fichero configuración.properties
Script de ejecución
13. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: ETL MNIST Web
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
Bootstrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
14. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL MNIST Web
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Publica en
Web la ETL
Gestiona los
parámetros
vía web
Se basa en
Jetty
FrontEnd
desarrollado
en Bootstrap
Descripción funcional de los componentes
Aplicación Web
Versiones
Español / Inglés
15. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: Pentaho.kettle
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
BootStrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
16. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Pentaho.kettle
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
ETL para
integración con
Hadoop
Automatiza la carga
de datos
Generamos: Job
addDataToHadoop
Instalado sobre el
nodo Ubuntu 14.4
Descripción Funcional de los componentes
Pentaho.kettle – data integration
Job para la carga de datos en Hadoop
17. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: Single Node Hadoop
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
BootStrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
18. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Single Node Hadoop
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Instalado
single node
standalone
Configuración
estándar
Ejecución de
un ejemplo de
WordCount
para test
Instalado
sobre el nodo
Ubuntu 14.4
Descripción funcional de los componentes
Ficheros de configuración de Hadoop:
Resumen de Hadoop (running)
19. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: Apache Spark
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
BootStrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
20. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Apache Spark
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Se descarga
compilación
para Hadoop
2.3
Instalación y
Configuración
estándar
Ejecución
usando:
spark-submit
Instalado
sobre el nodo
Ubuntu 14.4
Descripción funcional de los componentes
Configuración: spark-defaults.conf
-Se añade más memoria para la ejecución
Instalación de Spark
21. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: NeuronalNetwork
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
BootStrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
22. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Librería NeuralNetwork - Red Neuronal Convolucional (CNN)
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Librería en
GitHub
Integrada en la
ETL
Analizada para
adecuarla a
nuestro
desarrollo
Objeto Matrix
Descripción funcional de los componentes
Librería Neural Network
Clase Matrix gestiona la matriz de datos
(vector de imágenes)
Clase NNClassificationExample lanza la
ejecución para entrenar la red neuronal
23. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Descripción funcional de los componentes: ETL NNClassificationMNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Oracle VirtualBox 5.0
Ubuntu 14.04
ETL MNIST
log4j
Configuración
BootStrap
ETL MNIST
Web
Procesar colección MNIST y
generar Vectores de imágenes
Pentaho
kettle
Cargar los datos
en Hadoop
Hadoop
Spark
log4j
Configuración
Convolucional Neural Network library
ETL NNClassificacionMNIST
Entrenar el algoritmo CNN
Jetty
24. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL NNClassificationMNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Entrena la Red
Neuronal
Integrada la
librería
NeuralNetwork
Integra las
librerías de
Hadoop y
Spark
Gestiona los
parámetros
por fichero
Descripción funcional de los componentes
bptg.uem.pfg.wclassifiers.NNClassificationMNIST
Basada en la
ejecución de
NeuralNetwork
25. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Ejecución
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
26. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL NNClassificationMNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Se levantan
los servicios
Se generan
los vectores
de imágenes
Se cargan en
Hadoop
Se configura
el fichero de
parámetros
Se ejecuta
spark-submit
Previa carga
del classpath
Ejecución
Script de ejecución: NNClassifierMNIST_Spark.sh Fichero de configuración
27. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL NNClassificationMNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Ejecución
Listado de
ficheros cargados
en Hadoop
Log de ejecución:
spark-submit desde
NNClassifierMNIST_Spark.sh
28. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
ETL NNClassificationMNIST
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Ejecución: resultados
Ejecución la ETL
con Spark leyendo
desde Hadoop
para un vector de
10.000 imágenes
Ejecución de la ETL leyendo
desde disco (no Spark) para
un vector de 10.000
imágenes
Se observan resultados muy dispares, línea
de trabajo futura:
trabajar en la parametrización de la CNN
Requisitos de memoria y tiempo altos
29. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Conclusiones
Líneas de trabajo futuras
Sostenibilidad del software
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
30. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Conclusiones y líneas futuras de trabajo
Primera
conclusión
•Arquitectura
hardware
Segunda
conclusión
•Optimización
de los
parámetros
de la CNN
Integration of ETL, Hadoop and Spark to run a CNN
Bueká-Pastor Torao García
2.2 Competiciones de MNIST en Kaggle
Actualmente hay una competición activa sobre MNIST, que finaliza en 5 meses:
Ilustración 3 - MNIST Kaggle competition
Enlace: https://www.kaggle.com/c/digit-recognizer
2.3 Panel de la competición de MNIST en Kaggle
Conclusiones
Líneas futuras de trabajo
1. Participar en la competición de Kaggle
Integration of ETL, Hadoop and Spark to run a CNN
Bueká-Pastor Torao García
2.2 Competiciones de MNIST en Kaggle
Actualmente hay una competición activa sobre MNIST, que f
Ilustración 3 - MNIST Kaggle competition
Enlace: https://www.kaggle.com/c/digit-recognizer
2.3 Panel de la competición de MNIST en Kagg
2. WebServices de reconocimiento de
dígitos con almacenamiento en Hadoop y
entrenamientos periódicos de mejora
31. GRADO DE INGENIERÍA INFORMÁTICA Proyecto Fin de Grado
Integration of ETL, Hadoop and Spark to run a
Convolutional Neural Network
Sostenibilidad de la implementación del Software
115
fundamental en el desarrollo. Lógicamente los esfuerzos se centran en el punto
infraestructura, centros de datos, y demás sistemas que consumen energía.
Sin embargo, además de la sostenibilidad ambiental hay un ámbito más complejo qu
ser abordado desde esta perspectiva. Podemos considerar, basándonos en l
sostenibilidad, tres pilares importantes: el Social, el Económico y el Ecológico.
Ilustración 108 - Pilares básicos de la sostenibilidad (Declaración de Río, 1.992)
Integration of ETL, Hadoop and Spark to run a CNN
Bueká-Pastor Torao García
Fuente: http://www.redalyc.org/articulo.oa?id=92212873005
Con esta representación se sientan las bases de los niveles d
encontrar en una organización desde el punto de vista de sus pr
software, calidad, etc. Analicemos ahora este proyecto desde estos
9.4.1 Económica
Respecto a la sostenibilidad económica hay que destacar que el pr
integridad con software libre. Librerías como Apache Hadoop, Apa
en el desarrollo de las ETLs comparten el ser open software y por ta
proyecto tiende a cero.
En cuanto a la compartición de recursos hardware, ya que se ha de
permite la compartición de recursos y por tanto el ahorro en coste
Hay que destacar que estaríamos trabajando con sistemas de b
Pilares básicos de la sostenibilidad
Económica
•Software libre
•Plataforma virtual
Optimización de procesos
•mejora de procesos aplicando
tecnologías de redes neuronales
Social
•Green computing
Sostenibilidad como factor
fundamental del desarrollo:
ámbitos de aplicación
Definición del software
respecto a la sostenibilidad
32. Integration of ETL, Hadoop and Spark
to run a Convolutional Neural Network
Bueká P. Torao García
Muchas gracias
Universidad Europea de Madrid
to my parents for their support…
Proyecto Fin de Grado