SlideShare una empresa de Scribd logo
1 de 83
Descargar para leer sin conexión
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Machine learning
a todo gas?
Con graalvm
Francisco Javier Barrena Castillo
@DogDeveloper
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Who’s that guy
• Actualmente Security Advocate & Software Architect en
@ITI_TIC
• Formerly Director de Innovación en Ingeniería del
Software en Instituto Tecnológico de Informática
@ITI_TIC
• +10 años con proyectos comerciales
• Actualmente en proyectos de I+D
• Big Data, Machine Learning, Cloud Computing, etc…
• Formerly CTO en www.onlyeco.com
• Buscador de viajes ecosostenibles
• Actualmente EcoDeveloper Advocate
• Formador y ponente
• +40 cursos impartidos
• +40 charlas
https://www.linkedin.com/in/fjbarrena
https://twitter.com/DogDeveloper
https://github.com/fjbarrena
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Yo no se de Machine Learning
• Pero he trabajado de cerca con los que si saben
Who’s (not) that guy
Miguel Bravo
Senior Data Scientist at ITI
@MiguelBraarr
Raúl Hussein
Head of Advanced Data
Analysis Services at ITI
@rahusga
Pablo Ruiz
Senior Data Scientist at ITI
@pabruva
Joan García
Senior Data Scientist at ITI
@Jge_Ryu
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Lo que sí he hecho es arquitecturar y ejecutar proyectos con un
fuerte componente de Machine Learning
• Y he compartido sufrimiento con los científicos de datos
• Escasez de recursos de cómputo
• Reservas enteras de clústers durante semanas para computar un modelo
• Broncas de sistemas
• Incomprensión de otros usuarios del clúster
• Tomas de decisiones absurdas
• Etc…
Entonces…
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
El problema
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
El problema
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• La detección de malware/ransomware es difícil
• Los sistemas de detección clásicos funcionan en base a firmas
• Enormes bases de datos de firmas
• Básicamente:
El problema
SHA-256
9b65579cdad2eb30aec80b1b2f39e58996e24769964760fd64cfbdf84bbbb274
Obtiene el catálogo de firmas
Analiza adjuntos
Si las firmas coinciden, tenemos malware
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• La detección de malware/ransomware es difícil
• Los sistemas de detección clásicos funcionan en base a firmas
• Enormes bases de datos de firmas
• Básicamente:
El problema
SHA-256
9b65579cdad2eb30aec80b1b2f39e58996e24769964760fd64cfbdf84bbbb274
Obtiene el catálogo de firmas
Analiza adjuntos
Si las firmas coinciden, tenemos malware
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Pero…
El problema
Modifican su código fuente
SHA-256
db5179f7ecf6706a984c9ec1fa41495347cc08397cbc0d72f342fe1c9e428870
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• No podemos centrarnos en el aspecto (lo que es, o dice que es)
• Tenemos que centrarnos en el comportamiento (lo que hace)
• El comportamiento es difícil de cambiar, y más aún
automáticamente
• Para que el ransomware cumpla su función, tiene que seguir una
serie de pasos. Por ejemplo:
• Conectarse a un servidor malicioso para descargar la clave de encriptación
• Inspeccionar el disco, para guardar en un array las rutas que quiere
encriptar (puede que sean todas!)
• Empezar a encriptar las partes más importantes, pero que menos alarman
(documentos, presentaciones, etc.)
• Modificar el arranque del sistema para mostrar el mensaje que pide el
rescate
La solución
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Una aproximación es capturar tráfico de la red interna con
WireShark
• Esto nos dará un dataset GIGATRÓNICO
• De manera controlada, hemos lanzado algunos ataques a la red
cuyo resultado conocemos
• Recogidos los datos, y sabiendo los efectos de los ataques
lanzados (qué paquetes TCP generan, con que información, etc.)
pasamos el dataset en bruto por una fase de transformación y
alineamiento de datos
• El resultado es un dataset etiquetado: malicioso, no-malicioso
La solución
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Ya con el dataset ‘curado’, iniciamos una fase de training
• Una vez finalizada la fase de training, ya tenemos listo un modelo
de Machine Learning de detección de ataques de red
• En realidad que solo detecta un tipo de ataque…
• Pero el proceso podría ser válido y reutilizable para el resto de ataques
• En resumen, es un clásico problema de Machine Learning:
• Supervised Learning
• Problema de clasificación
La solución
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
•Logistic Regression (clasificadores lineales)
•Naive Bayes Classifier (clasificadores lineales)
•Nearest Neighbor
•Support Vector Machines
•Decision Trees
•Boosted Trees
•Random Forest
•Neural Networks
Algoritmos de clasificación
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Los modelos de Machine Learning dependen de los datos
• Cuantos más datos hayan disponibles, mejor será el accuracy del
modelo à Acertará más
• De hecho, el Machine Learning resurgió de sus cenizas gracias al
Big Data
• Como concepto, es de los 50
• Pero no podíamos procesar los datos suficientes para que fuera una
alternativa viable
• But now…
• Básicamente el Machine Learning es esto
pero por qué cuesta tanto!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Poner nube de fotos con todos los que hacen Machine Learning en el ITI
• Los modelos de Machine Learning dependen de los datos
• Cuantos más datos hayan disponibles, mejor será el accuracy del
modelo à Acertará más
• De hecho, el Machine Learning resurgió de sus cenizas gracias al
Big Data
• Como concepto, es de los 70
• Pero no podíamos procesar los datos suficientes para que fuera una
alternativa viable
• But now…
• Básicamente el Machine Learning es esto
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Primer problema entonces… necesito ZILLONES de datos, y eso
cuesta
• Pero no es lo único…
• Están, además, las herramientas que se utilizan…
• Predilección por lenguajes interpretados como Python
• Los lenguajes interpretados necesitan de mucho backtracking
• El lenguaje no sabe lo que vas a hacer, lo descubre sobre la marcha
• El lenguaje hace hipótesis en la ejecución del código, que si no se
cumplen requiere de invalidar lo hecho hasta el momento, volver atrás
hasta el momento de la hipótesis y probar otra cosa
• Tampoco puede hacer optimizaciones, porque desconoce lo que va a
pasar
pero por qué cuesta tanto!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Otra cosa más a la lista à Lenguaje más usado no es óptimo
computacionalmente hablando
• Además, NO es lo mismo un Developer que un Data Scientist
• No les preocupan las mismas cosas
• No hablan el mismo idioma
• Un Developer tiene en mente que
• Su código debe ser legible
• Su código sea lo más óptimo posible
• Utilizan conceptos que para los Data Scientists es jerga
• Y viceversa
• Y un Data Scientist…
pero por qué cuesta tanto!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Como ve un developer a un data scientist
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Algo asi?
Naive Bayes
https://gitlab.iti.upv.es/transformtransport/analysis
This is fine!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Como ve un data scientist a un developer
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Y qué es lo que cuesta?
Predict
6
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Training ML Model
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
R3 – embedded shit
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
¿Qué es GraalVM?
GraalVM es una Máquina Virtual universal para
ejecutar aplicaciones escritas en JavaScript,
Python, Ruby, R, lenguajes basados en la JVM
como Java, Scala, Kotlin, y lenguajes basados
en LLVM como C y C++
https://www.graalvm.org/
Graalvm – the game changer
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
¿Qué es GraalVM?
GraalVM es un ecosistema y un runtime
compartido que ofrece ventajas de
rendimiento, no solo para los lenguajes
basados en la JVM (Java, Scala, Groovy, Kotlin),
si no también para otros lenguajes (JavaScript,
Python, R, C, C++, Ruby)
Graalvm – the game changer
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Arquitectura graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Arquitectura graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
productividad
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
uso de cpu
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
rendimiento
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Y jugar a ser dios!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Y jugar a ser dios!
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Twitter
• https://www.youtube.com/watch?v=PtgKmzgIh4c
• Goldman Sachs
• https://www.youtube.com/watch?v=MUECwHdr07Q
• Pivotal (Spring Framework)
• https://www.youtube.com/watch?v=oN3QOsZ1KAw
• Disney Streaming Services
• https://www.youtube.com/watch?v=CM4zA3bdlzA
Esta graalvm preparado para producción?
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
https://www.youtube.com/watch?v=2OZysKdrg6o
https://www.slideshare.net/slideshow/embed_code/key/hcukR8QBleDtnE
Cómo lo hace graalvm al detalle
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Es tan bueno como parece?
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• A mi que Oracle me diga que va a aumentar el rendimiento de mi
código en Python un x4 pues oye… así de entrada no me lo creo
• Vamos a armar un ejemplo, a tope de datos!:
• Primero lo ejecutaremos in the classic way: directamente con Python
• Veremos lo que tarda y lo que consume (CPU y RAM)
• Después, lo compilaremos con GraalVM, veremos qué pasos hay que dar
para que sea posible
• Una vez compilado a código nativo, y ‘supuestamente’ optimizado, lo
ejecutaremos
• Veremos lo que tarda y lo que consume (CPU y RAM)
• Y compararemos los resultados
Trust no one
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Nuestro caso de prueba
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Usaremos código de Adrian Rosebrok
• Detección de caras con Deep Learning
• URL del artículo (y acceso al código)
• https://www.pyimagesearch.com/2018/06/18/face-
recognition-with-opencv-python-and-deep-learning/
• Como instalar entorno
• https://www.pyimagesearch.com/2018/08/17/install-opencv-
4-on-macos/
• Como obtener datasets
• https://www.pyimagesearch.com/2018/04/09/how-to-quickly-
build-a-deep-learning-image-dataset/
Nuestro caso de prueba
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Dataset de 2681 imágenes
• 1 Gb de tamaño
• Entrenamiento por CPU (no GPU)
• Usa por debajo la librería face_recognition (Deep Learning)
• Que utiliza a su vez una CNN (Convolutional Neural Network)
Nuestro caso de prueba
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• 100% de CPU
• 100% de RAM
• ZILLONES DE MINUTOS
Nuestro caso de prueba
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Primero instalamos GraalVM
• https://www.graalvm.org/downloads/
• Seleccionamos la versión Community
Como lo hacemos con graalvm
Para MacOS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Descomprimimos
• Y lo movemos junto al resto de máquinas virtuales de
Java (en MacOs, cada SO tiene su ruta por defecto)
• Comprobamos que está instalada correctamente
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Y seleccionamos GraalVM como máquina virtual por
defecto
Como lo hacemos con graalvm
• ¿Porqué selecciona Graal cuando le
decimos –v 1.8 y no la JDK 8 que ya
tenía instalada?
• Misterios de la vida, pero just Works
• También puedes modificar el PATH a
mano…
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Comprobamos que cuando llamamos a JAVA, es Graal
quien responde
• Ahora instalaremos native-image, que es un utilidad que
nos permite construir imágenes nativas ejecutables
• Para eso primero damos permisos a la carpeta bin
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Añadimos al path del sistema la carpeta bin para poder
ejecutar comandos en cualquier punto
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• E instalamos native-image a través de gu (GraalVM
Updater)
• Comprobamos que podemos ejecutar native-image así
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• GraalVM Native Image
• Permite la compilación AoT de código Java a un ejecutable standalone,
llamado native image
• Este ejecutable contiene
• La aplicación
• Las librerías necesarias
• Substrate VM à Elementos importantes de la JRE, pero no la JRE completa (memory
management, thread scheduling, garbage collector, etc.)
• Por tanto, no necesita de una JRE para ejecutarse
• El resultado es un software más rápido y con un overhead de memoria en
ejecución menor, si lo comparamos con la JVM
• GraalVM Native Image soporta los siguientes lenguajes
• JVM-based: Java, Scala, Clojure, Kotlin
• Javascript, Ruby, R, Python
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Básicamente, lo que hace GraalVM es añadir dependencias de
Python a la native-image y luego lanzar la ejecución de nuestro
código sobre ese Python
• Simplemente añadiendo a la construcción de la imagen nativa
esta opción
• Lo cual no está mal, es una forma bastante chula de empaquetar
la aplicación
• Pero a nivel de rendimiento, no ayuda. Es más, probablemente
resta.
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Como lo hacemos con graalvm
https://technology.amis.nl/2019/10/28/create-a-native-image-binary-executable-for-a-polyglot-java-application-using-graalvm/#prettyPhoto
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Nosotros intentamos meter el código de reconocimiento de caras
en una native-image… sin éxito
• Demasiadas dependencias
• Probablemente la conjunción de OpenCV con Python sea algo para lo que
GraalVM no esté preparado
• No hay documentación, muy complejo, muy mágico…
• Este es el script que lanzamos para generar la native-image
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Cosas interesantes del script
• -H:Name especifica el nombre que le vamos a dar a la native-image
• -H:Class indica la clase Java que contiene el método main, que será el
entrypoint de la aplicación
• Así que, aunque mi código sea Python 100%, necesito una clase
Java que me sirva de entrypoint… como este:
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
•Otro asunto interesante es la propia construcción
de la native-image
•Es MUY costoso en términos de recursos
(especialmente RAM), y también temporalmente
•De hecho, tuvimos que subir la asignación de RAM
de la JVM de Graal de 9Gb a 16Gb para que pudiera
construir una native-image
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Otro problema, es que no se
pueden añadir librerías externas
• No se puede instalar nada con PIP
• O si se puede, no está documentado
• Y nosotros no lo hemos conseguido
L
• Por lo que la cosa se queda un
poco descafeinada
Como lo hacemos con graalvm
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Efectivamente, la ‘poliglotía’ de GraalVM, ‘from the scratch’, no
parece servir para conseguir nuestro objetivo
• Desde luego, desde fuera, parecía tener potencial para resolver
nuestro problema, pero el reality-check ha sido claro
• No obstante… la idea no era mala. De hecho, la comunidad ha
empezado un proyecto para conseguir precisamente esto: Graal
Python
• Graal Python proporciona una implementación de Python 3.7
nativa a GraalVM
• Y uno de sus objetivos a corto plazo es incluir SciPy también, e ir
extendiendo esta inclusión de librerías populares poco a poco
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Tiene muchas diferencias muy interesantes con respecto a la
aproximación basada en native-images
• No incluye por defecto la JVM. Solo el entorno de ejecución de Python
• El punto de entrada es un .py, no necesito una clase Java que use
Polyglot para llamar a mi código Python
• Sencillamente… se lanza así
• Desde luego, puedes seguir ejecutando código de otros lenguajes
con Polyglot
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• De hecho es interesante la conjunción de lenguajes entre R y
Python
• Por ejemplo, podemos instalar dependencias de R así
• Y combinar Python y R usando Polyglot…
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Pero es que además… con Graal Python puedes instalar librerías!
• Pero no todas… solo las que estén portadas, o sean compatibles
• La comunidad está trabajando activamente en:
• Numpy
• SciPy
• Scikit-learn
• Pandas
• Tensorflow
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Primero, tenemos que haber hecho los pasos de instalación
anteriores
• Una vez hechos, tendremos acceso a una herramienta llamada gu
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Si ejecutamos el siguiente comando:
• Observaremos que tenemos disponible el componente
Graal.Python. Lo instalamos así:
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Sal y vuelve a entrar en la terminal para que se apliquen los
cambios
• Para comprobar que todo es correcto, ejecuta el siguiente
comando
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Claro, no tenemos instalado numpy
• En graalpython las dependencias se instalan un poco diferente a
Python…
• Pero la instalación…
• Igual nos falta instalar LLVM, porque numpy por debajo usa C
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Volvemos a instalar numpy
• Y vuelve a fallar
• Resulta que GraalPython no usa LLVM, usa SULONG
• SULONG viene instalado por defecto en la versión de GraalVM
• Entramos en la documentación de SULONG y vemos que hay un
workaround para MacOS
• Instalar las XCode extensions (ya las tenía instaladas)
• Y asegurarse de que la variable de entorno SDKROOT apunta a la carpeta
correcta con:
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• Pero sigue sin funcionar…
• 19.3.0 …
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• ¿Y si instalo…?
• Pandas à Declara como dependencia NumPy à FALLA L
• SciPy à Paquete desconocido
• Scikit-learn à Paquete desconocido
• Tensorflow à Paquete desconocido
instalando graal python
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
• GraalVM a secas no es suficiente para ser usado con Python
• Se necesita instalar también
• GraalPython
• LLVC
• XCode Development Tools en MacOS / Herramientas desarrollo C y C++
en Unix
• Aún así, el proyecto aún está muy verde para ser incluso evaluado
• No solo con proyectos reales
• Tampoco para laboratorio, tiene una tasa de error ‘mágico’ muy elevada
• La documentación es escasa y habitualmente no funciona
• Aún así, GraalPython es una tecnología prometedora que merece
la pena seguir su evolución
conclusiones
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
Gracias

Más contenido relacionado

Similar a Machine Learning ¿A TODO GAS? con GraalVM

Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudFrancisco Javier Barrena
 
Auditando Google Analytics - Clinic SEO - eShow 2019
Auditando Google Analytics - Clinic SEO - eShow 2019Auditando Google Analytics - Clinic SEO - eShow 2019
Auditando Google Analytics - Clinic SEO - eShow 2019Iñaki Huerta (ikhuerta)
 
Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioFrancisco Javier Barrena
 
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...Iñaki Huerta (ikhuerta)
 
Cómo crear Dashboards SEO profesionales paso a paso
Cómo crear Dashboards SEO profesionales paso a pasoCómo crear Dashboards SEO profesionales paso a paso
Cómo crear Dashboards SEO profesionales paso a pasoJose Roig Torres
 
Planning rentable para un ecommerce
Planning rentable para un ecommercePlanning rentable para un ecommerce
Planning rentable para un ecommerceIsaac Bosch
 
Big Data - El Futuro a través de los Datos
Big Data - El Futuro a través de los DatosBig Data - El Futuro a través de los Datos
Big Data - El Futuro a través de los DatosOscar Corcho
 
SEO y Machine Learning
SEO y Machine LearningSEO y Machine Learning
SEO y Machine LearningSeoForceAgency
 
Big data, Inteligencia Artificial y Redes Sociales en la investigación
Big data, Inteligencia Artificial y Redes Sociales en la investigaciónBig data, Inteligencia Artificial y Redes Sociales en la investigación
Big data, Inteligencia Artificial y Redes Sociales en la investigaciónMariché Navío Navarro
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robóticaSoftware Guru
 
Taller de Screaming Frog con Rubén Merino
Taller de Screaming Frog con Rubén MerinoTaller de Screaming Frog con Rubén Merino
Taller de Screaming Frog con Rubén MerinoRubén Merino
 
Data Science Awards 2016 - Best Data Engineer
Data Science Awards 2016 - Best Data EngineerData Science Awards 2016 - Best Data Engineer
Data Science Awards 2016 - Best Data EngineerInigo Gonzalez
 
BarCamp2014-Universidad Latina - Costa Rica
BarCamp2014-Universidad Latina - Costa Rica BarCamp2014-Universidad Latina - Costa Rica
BarCamp2014-Universidad Latina - Costa Rica Fernando Chaves
 
Text Mining con R en PowerBI - Global Spanish
Text Mining con R en PowerBI -  Global Spanish Text Mining con R en PowerBI -  Global Spanish
Text Mining con R en PowerBI - Global Spanish jorge Muchaypiña
 

Similar a Machine Learning ¿A TODO GAS? con GraalVM (20)

Webinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del CloudWebinar Codemotion 2020 - Piratas del Cloud
Webinar Codemotion 2020 - Piratas del Cloud
 
Auditando Google Analytics - Clinic SEO - eShow 2019
Auditando Google Analytics - Clinic SEO - eShow 2019Auditando Google Analytics - Clinic SEO - eShow 2019
Auditando Google Analytics - Clinic SEO - eShow 2019
 
Aplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.ioAplicaciones Absurdamente Rápidas con Quarkus.io
Aplicaciones Absurdamente Rápidas con Quarkus.io
 
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...
Saca partido al nuevo Google Search Console - Clinic Seo Congreso Web Zaragoz...
 
Cómo crear Dashboards SEO profesionales paso a paso
Cómo crear Dashboards SEO profesionales paso a pasoCómo crear Dashboards SEO profesionales paso a paso
Cómo crear Dashboards SEO profesionales paso a paso
 
Planning rentable para un ecommerce
Planning rentable para un ecommercePlanning rentable para un ecommerce
Planning rentable para un ecommerce
 
Big Data - El Futuro a través de los Datos
Big Data - El Futuro a través de los DatosBig Data - El Futuro a través de los Datos
Big Data - El Futuro a través de los Datos
 
¿Quién, cuándo, dónde y por qué?
¿Quién, cuándo, dónde y por qué?¿Quién, cuándo, dónde y por qué?
¿Quién, cuándo, dónde y por qué?
 
SEO y Machine Learning
SEO y Machine LearningSEO y Machine Learning
SEO y Machine Learning
 
Semana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUMSemana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUM
 
Big data, Inteligencia Artificial y Redes Sociales en la investigación
Big data, Inteligencia Artificial y Redes Sociales en la investigaciónBig data, Inteligencia Artificial y Redes Sociales en la investigación
Big data, Inteligencia Artificial y Redes Sociales en la investigación
 
Seo y machine learning (1)
Seo y machine learning (1)Seo y machine learning (1)
Seo y machine learning (1)
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
 
Seo para prestashop
Seo para prestashopSeo para prestashop
Seo para prestashop
 
Taller de Screaming Frog con Rubén Merino
Taller de Screaming Frog con Rubén MerinoTaller de Screaming Frog con Rubén Merino
Taller de Screaming Frog con Rubén Merino
 
Mapa de Historias de Usuario - User Story Map
Mapa de Historias de Usuario - User Story MapMapa de Historias de Usuario - User Story Map
Mapa de Historias de Usuario - User Story Map
 
Data Science Awards 2016 - Best Data Engineer
Data Science Awards 2016 - Best Data EngineerData Science Awards 2016 - Best Data Engineer
Data Science Awards 2016 - Best Data Engineer
 
Juantomás - Unir PDP en Inteligencia Artificial 2020
Juantomás - Unir PDP en Inteligencia Artificial 2020Juantomás - Unir PDP en Inteligencia Artificial 2020
Juantomás - Unir PDP en Inteligencia Artificial 2020
 
BarCamp2014-Universidad Latina - Costa Rica
BarCamp2014-Universidad Latina - Costa Rica BarCamp2014-Universidad Latina - Costa Rica
BarCamp2014-Universidad Latina - Costa Rica
 
Text Mining con R en PowerBI - Global Spanish
Text Mining con R en PowerBI -  Global Spanish Text Mining con R en PowerBI -  Global Spanish
Text Mining con R en PowerBI - Global Spanish
 

Más de Francisco Javier Barrena

¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu softwareFrancisco Javier Barrena
 
Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfFrancisco Javier Barrena
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...Francisco Javier Barrena
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoFrancisco Javier Barrena
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereFrancisco Javier Barrena
 

Más de Francisco Javier Barrena (6)

¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
¡Cookiegeddon! Bye a las cookies de terceros y cómo afectará a tu software
 
Codemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdfCodemotion 2022 - API Security Workshop.pdf
Codemotion 2022 - API Security Workshop.pdf
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el camino
 
Angular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhereAngular 6 + Angular Elements: Write once, run anywhere
Angular 6 + Angular Elements: Write once, run anywhere
 
Kubernetes - The Cloud King
Kubernetes - The Cloud KingKubernetes - The Cloud King
Kubernetes - The Cloud King
 

Último

17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docxmarthaarroyo16
 
FORMATO INVENTARIO MOBILIARIO PASO A PASO
FORMATO INVENTARIO MOBILIARIO PASO A PASOFORMATO INVENTARIO MOBILIARIO PASO A PASO
FORMATO INVENTARIO MOBILIARIO PASO A PASOsecundariatecnica891
 
4958documentodeaptitud_PUENTE PIEDRA.pdf
4958documentodeaptitud_PUENTE PIEDRA.pdf4958documentodeaptitud_PUENTE PIEDRA.pdf
4958documentodeaptitud_PUENTE PIEDRA.pdfcristianojedac11
 
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOR
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADORPREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOR
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOReluniversocom
 
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptx
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptxTEORIA DEL DEFICIT DEL AUTOCUIDADO .pptx
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptxmarinosudarioneyer
 
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRIL
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRILPREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRIL
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRILeluniversocom
 
CONTROLES Y EXPERIMENTACION presentacion
CONTROLES Y EXPERIMENTACION presentacionCONTROLES Y EXPERIMENTACION presentacion
CONTROLES Y EXPERIMENTACION presentacionJosueVallejo10
 
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRILPREGUNTA G DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRILeluniversocom
 
la-antigua-Grecia, datos y curiosidades mas relevantes
la-antigua-Grecia, datos y curiosidades mas relevantesla-antigua-Grecia, datos y curiosidades mas relevantes
la-antigua-Grecia, datos y curiosidades mas relevantesalvarojosephyucracol
 
Civilizacióne Precolonbinas Resumen pdf.
Civilizacióne Precolonbinas Resumen pdf.Civilizacióne Precolonbinas Resumen pdf.
Civilizacióne Precolonbinas Resumen pdf.gpoiquicuellar
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxYoladsCabarcasTous
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILeluniversocom
 
Presentación del Mapa del Talento Cotec-Ivie 2023
Presentación del Mapa del Talento Cotec-Ivie 2023Presentación del Mapa del Talento Cotec-Ivie 2023
Presentación del Mapa del Talento Cotec-Ivie 2023Ivie
 
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdf
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdfTABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdf
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdfMartinRodriguezchave1
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405rodrimarxim
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería yocelynsanchezerasmo
 
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdf
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdfANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdf
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdfDaniloAstoVeliz
 
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRILPREGUNTA H DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRILeluniversocom
 
El guion museográfico. definición. componentes. parte 1.pptx
El guion museográfico. definición. componentes. parte 1.pptxEl guion museográfico. definición. componentes. parte 1.pptx
El guion museográfico. definición. componentes. parte 1.pptxAngelaMarquez27
 
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024eluniversocom
 

Último (20)

17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
 
FORMATO INVENTARIO MOBILIARIO PASO A PASO
FORMATO INVENTARIO MOBILIARIO PASO A PASOFORMATO INVENTARIO MOBILIARIO PASO A PASO
FORMATO INVENTARIO MOBILIARIO PASO A PASO
 
4958documentodeaptitud_PUENTE PIEDRA.pdf
4958documentodeaptitud_PUENTE PIEDRA.pdf4958documentodeaptitud_PUENTE PIEDRA.pdf
4958documentodeaptitud_PUENTE PIEDRA.pdf
 
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOR
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADORPREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOR
PREGUNTA E REFÉRENDUM 21 DE ABRIL ECUADOR
 
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptx
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptxTEORIA DEL DEFICIT DEL AUTOCUIDADO .pptx
TEORIA DEL DEFICIT DEL AUTOCUIDADO .pptx
 
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRIL
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRILPREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRIL
PREGUNTA I DE LA CONSULTA POPULAR DEL 21 DE ABRIL
 
CONTROLES Y EXPERIMENTACION presentacion
CONTROLES Y EXPERIMENTACION presentacionCONTROLES Y EXPERIMENTACION presentacion
CONTROLES Y EXPERIMENTACION presentacion
 
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRILPREGUNTA G DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA G DE CONSULTA POPULAR 21 DE ABRIL
 
la-antigua-Grecia, datos y curiosidades mas relevantes
la-antigua-Grecia, datos y curiosidades mas relevantesla-antigua-Grecia, datos y curiosidades mas relevantes
la-antigua-Grecia, datos y curiosidades mas relevantes
 
Civilizacióne Precolonbinas Resumen pdf.
Civilizacióne Precolonbinas Resumen pdf.Civilizacióne Precolonbinas Resumen pdf.
Civilizacióne Precolonbinas Resumen pdf.
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptx
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
 
Presentación del Mapa del Talento Cotec-Ivie 2023
Presentación del Mapa del Talento Cotec-Ivie 2023Presentación del Mapa del Talento Cotec-Ivie 2023
Presentación del Mapa del Talento Cotec-Ivie 2023
 
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdf
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdfTABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdf
TABLERO-DE-CONTROL-SOFOMES-ENR_08012024.pdf
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería
 
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdf
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdfANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdf
ANÁLISIS DE LA ÉTICA UTILIRALISTA DE JEREMY BENTHAM.pdf
 
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRILPREGUNTA H DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA H DE CONSULTA POPULAR 21 DE ABRIL
 
El guion museográfico. definición. componentes. parte 1.pptx
El guion museográfico. definición. componentes. parte 1.pptxEl guion museográfico. definición. componentes. parte 1.pptx
El guion museográfico. definición. componentes. parte 1.pptx
 
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024
PREGUNTAS Y ANEXOS CONSULTA POPULAR 2024
 

Machine Learning ¿A TODO GAS? con GraalVM

  • 1. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Machine learning a todo gas? Con graalvm Francisco Javier Barrena Castillo @DogDeveloper
  • 2. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Who’s that guy • Actualmente Security Advocate & Software Architect en @ITI_TIC • Formerly Director de Innovación en Ingeniería del Software en Instituto Tecnológico de Informática @ITI_TIC • +10 años con proyectos comerciales • Actualmente en proyectos de I+D • Big Data, Machine Learning, Cloud Computing, etc… • Formerly CTO en www.onlyeco.com • Buscador de viajes ecosostenibles • Actualmente EcoDeveloper Advocate • Formador y ponente • +40 cursos impartidos • +40 charlas https://www.linkedin.com/in/fjbarrena https://twitter.com/DogDeveloper https://github.com/fjbarrena
  • 3. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Yo no se de Machine Learning • Pero he trabajado de cerca con los que si saben Who’s (not) that guy Miguel Bravo Senior Data Scientist at ITI @MiguelBraarr Raúl Hussein Head of Advanced Data Analysis Services at ITI @rahusga Pablo Ruiz Senior Data Scientist at ITI @pabruva Joan García Senior Data Scientist at ITI @Jge_Ryu
  • 4. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Lo que sí he hecho es arquitecturar y ejecutar proyectos con un fuerte componente de Machine Learning • Y he compartido sufrimiento con los científicos de datos • Escasez de recursos de cómputo • Reservas enteras de clústers durante semanas para computar un modelo • Broncas de sistemas • Incomprensión de otros usuarios del clúster • Tomas de decisiones absurdas • Etc… Entonces…
  • 5. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 6. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 7. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS El problema
  • 8. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS El problema
  • 9. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • La detección de malware/ransomware es difícil • Los sistemas de detección clásicos funcionan en base a firmas • Enormes bases de datos de firmas • Básicamente: El problema SHA-256 9b65579cdad2eb30aec80b1b2f39e58996e24769964760fd64cfbdf84bbbb274 Obtiene el catálogo de firmas Analiza adjuntos Si las firmas coinciden, tenemos malware
  • 10. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • La detección de malware/ransomware es difícil • Los sistemas de detección clásicos funcionan en base a firmas • Enormes bases de datos de firmas • Básicamente: El problema SHA-256 9b65579cdad2eb30aec80b1b2f39e58996e24769964760fd64cfbdf84bbbb274 Obtiene el catálogo de firmas Analiza adjuntos Si las firmas coinciden, tenemos malware
  • 11. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Pero… El problema Modifican su código fuente SHA-256 db5179f7ecf6706a984c9ec1fa41495347cc08397cbc0d72f342fe1c9e428870
  • 12. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • No podemos centrarnos en el aspecto (lo que es, o dice que es) • Tenemos que centrarnos en el comportamiento (lo que hace) • El comportamiento es difícil de cambiar, y más aún automáticamente • Para que el ransomware cumpla su función, tiene que seguir una serie de pasos. Por ejemplo: • Conectarse a un servidor malicioso para descargar la clave de encriptación • Inspeccionar el disco, para guardar en un array las rutas que quiere encriptar (puede que sean todas!) • Empezar a encriptar las partes más importantes, pero que menos alarman (documentos, presentaciones, etc.) • Modificar el arranque del sistema para mostrar el mensaje que pide el rescate La solución
  • 13. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Una aproximación es capturar tráfico de la red interna con WireShark • Esto nos dará un dataset GIGATRÓNICO • De manera controlada, hemos lanzado algunos ataques a la red cuyo resultado conocemos • Recogidos los datos, y sabiendo los efectos de los ataques lanzados (qué paquetes TCP generan, con que información, etc.) pasamos el dataset en bruto por una fase de transformación y alineamiento de datos • El resultado es un dataset etiquetado: malicioso, no-malicioso La solución
  • 14. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Ya con el dataset ‘curado’, iniciamos una fase de training • Una vez finalizada la fase de training, ya tenemos listo un modelo de Machine Learning de detección de ataques de red • En realidad que solo detecta un tipo de ataque… • Pero el proceso podría ser válido y reutilizable para el resto de ataques • En resumen, es un clásico problema de Machine Learning: • Supervised Learning • Problema de clasificación La solución
  • 15. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS •Logistic Regression (clasificadores lineales) •Naive Bayes Classifier (clasificadores lineales) •Nearest Neighbor •Support Vector Machines •Decision Trees •Boosted Trees •Random Forest •Neural Networks Algoritmos de clasificación
  • 16. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 17. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Los modelos de Machine Learning dependen de los datos • Cuantos más datos hayan disponibles, mejor será el accuracy del modelo à Acertará más • De hecho, el Machine Learning resurgió de sus cenizas gracias al Big Data • Como concepto, es de los 50 • Pero no podíamos procesar los datos suficientes para que fuera una alternativa viable • But now… • Básicamente el Machine Learning es esto pero por qué cuesta tanto!
  • 18. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Poner nube de fotos con todos los que hacen Machine Learning en el ITI • Los modelos de Machine Learning dependen de los datos • Cuantos más datos hayan disponibles, mejor será el accuracy del modelo à Acertará más • De hecho, el Machine Learning resurgió de sus cenizas gracias al Big Data • Como concepto, es de los 70 • Pero no podíamos procesar los datos suficientes para que fuera una alternativa viable • But now… • Básicamente el Machine Learning es esto
  • 19. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Primer problema entonces… necesito ZILLONES de datos, y eso cuesta • Pero no es lo único… • Están, además, las herramientas que se utilizan… • Predilección por lenguajes interpretados como Python • Los lenguajes interpretados necesitan de mucho backtracking • El lenguaje no sabe lo que vas a hacer, lo descubre sobre la marcha • El lenguaje hace hipótesis en la ejecución del código, que si no se cumplen requiere de invalidar lo hecho hasta el momento, volver atrás hasta el momento de la hipótesis y probar otra cosa • Tampoco puede hacer optimizaciones, porque desconoce lo que va a pasar pero por qué cuesta tanto!
  • 20. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Otra cosa más a la lista à Lenguaje más usado no es óptimo computacionalmente hablando • Además, NO es lo mismo un Developer que un Data Scientist • No les preocupan las mismas cosas • No hablan el mismo idioma • Un Developer tiene en mente que • Su código debe ser legible • Su código sea lo más óptimo posible • Utilizan conceptos que para los Data Scientists es jerga • Y viceversa • Y un Data Scientist… pero por qué cuesta tanto!
  • 21. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 22. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Como ve un developer a un data scientist
  • 23. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Algo asi? Naive Bayes https://gitlab.iti.upv.es/transformtransport/analysis This is fine!
  • 24. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Como ve un data scientist a un developer
  • 25. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Y qué es lo que cuesta? Predict 6
  • 26. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 27. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Training ML Model
  • 28. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 29. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS R3 – embedded shit
  • 30. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 31. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS ¿Qué es GraalVM? GraalVM es una Máquina Virtual universal para ejecutar aplicaciones escritas en JavaScript, Python, Ruby, R, lenguajes basados en la JVM como Java, Scala, Kotlin, y lenguajes basados en LLVM como C y C++ https://www.graalvm.org/ Graalvm – the game changer
  • 32. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS ¿Qué es GraalVM? GraalVM es un ecosistema y un runtime compartido que ofrece ventajas de rendimiento, no solo para los lenguajes basados en la JVM (Java, Scala, Groovy, Kotlin), si no también para otros lenguajes (JavaScript, Python, R, C, C++, Ruby) Graalvm – the game changer
  • 33. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Arquitectura graalvm
  • 34. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Arquitectura graalvm
  • 35. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS productividad
  • 36. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS uso de cpu
  • 37. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS rendimiento
  • 38. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Y jugar a ser dios!
  • 39. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Y jugar a ser dios!
  • 40. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Twitter • https://www.youtube.com/watch?v=PtgKmzgIh4c • Goldman Sachs • https://www.youtube.com/watch?v=MUECwHdr07Q • Pivotal (Spring Framework) • https://www.youtube.com/watch?v=oN3QOsZ1KAw • Disney Streaming Services • https://www.youtube.com/watch?v=CM4zA3bdlzA Esta graalvm preparado para producción?
  • 41. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS https://www.youtube.com/watch?v=2OZysKdrg6o https://www.slideshare.net/slideshow/embed_code/key/hcukR8QBleDtnE Cómo lo hace graalvm al detalle
  • 42. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Es tan bueno como parece?
  • 43. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • A mi que Oracle me diga que va a aumentar el rendimiento de mi código en Python un x4 pues oye… así de entrada no me lo creo • Vamos a armar un ejemplo, a tope de datos!: • Primero lo ejecutaremos in the classic way: directamente con Python • Veremos lo que tarda y lo que consume (CPU y RAM) • Después, lo compilaremos con GraalVM, veremos qué pasos hay que dar para que sea posible • Una vez compilado a código nativo, y ‘supuestamente’ optimizado, lo ejecutaremos • Veremos lo que tarda y lo que consume (CPU y RAM) • Y compararemos los resultados Trust no one
  • 44. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Nuestro caso de prueba
  • 45. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Usaremos código de Adrian Rosebrok • Detección de caras con Deep Learning • URL del artículo (y acceso al código) • https://www.pyimagesearch.com/2018/06/18/face- recognition-with-opencv-python-and-deep-learning/ • Como instalar entorno • https://www.pyimagesearch.com/2018/08/17/install-opencv- 4-on-macos/ • Como obtener datasets • https://www.pyimagesearch.com/2018/04/09/how-to-quickly- build-a-deep-learning-image-dataset/ Nuestro caso de prueba
  • 46. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Dataset de 2681 imágenes • 1 Gb de tamaño • Entrenamiento por CPU (no GPU) • Usa por debajo la librería face_recognition (Deep Learning) • Que utiliza a su vez una CNN (Convolutional Neural Network) Nuestro caso de prueba
  • 47. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 48. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • 100% de CPU • 100% de RAM • ZILLONES DE MINUTOS Nuestro caso de prueba
  • 49. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Primero instalamos GraalVM • https://www.graalvm.org/downloads/ • Seleccionamos la versión Community Como lo hacemos con graalvm Para MacOS
  • 50. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Descomprimimos • Y lo movemos junto al resto de máquinas virtuales de Java (en MacOs, cada SO tiene su ruta por defecto) • Comprobamos que está instalada correctamente Como lo hacemos con graalvm
  • 51. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Y seleccionamos GraalVM como máquina virtual por defecto Como lo hacemos con graalvm • ¿Porqué selecciona Graal cuando le decimos –v 1.8 y no la JDK 8 que ya tenía instalada? • Misterios de la vida, pero just Works • También puedes modificar el PATH a mano…
  • 52. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Comprobamos que cuando llamamos a JAVA, es Graal quien responde • Ahora instalaremos native-image, que es un utilidad que nos permite construir imágenes nativas ejecutables • Para eso primero damos permisos a la carpeta bin Como lo hacemos con graalvm
  • 53. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Añadimos al path del sistema la carpeta bin para poder ejecutar comandos en cualquier punto Como lo hacemos con graalvm
  • 54. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • E instalamos native-image a través de gu (GraalVM Updater) • Comprobamos que podemos ejecutar native-image así Como lo hacemos con graalvm
  • 55. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • GraalVM Native Image • Permite la compilación AoT de código Java a un ejecutable standalone, llamado native image • Este ejecutable contiene • La aplicación • Las librerías necesarias • Substrate VM à Elementos importantes de la JRE, pero no la JRE completa (memory management, thread scheduling, garbage collector, etc.) • Por tanto, no necesita de una JRE para ejecutarse • El resultado es un software más rápido y con un overhead de memoria en ejecución menor, si lo comparamos con la JVM • GraalVM Native Image soporta los siguientes lenguajes • JVM-based: Java, Scala, Clojure, Kotlin • Javascript, Ruby, R, Python Como lo hacemos con graalvm
  • 56. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 57. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 58. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Básicamente, lo que hace GraalVM es añadir dependencias de Python a la native-image y luego lanzar la ejecución de nuestro código sobre ese Python • Simplemente añadiendo a la construcción de la imagen nativa esta opción • Lo cual no está mal, es una forma bastante chula de empaquetar la aplicación • Pero a nivel de rendimiento, no ayuda. Es más, probablemente resta. Como lo hacemos con graalvm
  • 59. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Como lo hacemos con graalvm https://technology.amis.nl/2019/10/28/create-a-native-image-binary-executable-for-a-polyglot-java-application-using-graalvm/#prettyPhoto
  • 60. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Nosotros intentamos meter el código de reconocimiento de caras en una native-image… sin éxito • Demasiadas dependencias • Probablemente la conjunción de OpenCV con Python sea algo para lo que GraalVM no esté preparado • No hay documentación, muy complejo, muy mágico… • Este es el script que lanzamos para generar la native-image Como lo hacemos con graalvm
  • 61. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Cosas interesantes del script • -H:Name especifica el nombre que le vamos a dar a la native-image • -H:Class indica la clase Java que contiene el método main, que será el entrypoint de la aplicación • Así que, aunque mi código sea Python 100%, necesito una clase Java que me sirva de entrypoint… como este: Como lo hacemos con graalvm
  • 62. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS •Otro asunto interesante es la propia construcción de la native-image •Es MUY costoso en términos de recursos (especialmente RAM), y también temporalmente •De hecho, tuvimos que subir la asignación de RAM de la JVM de Graal de 9Gb a 16Gb para que pudiera construir una native-image Como lo hacemos con graalvm
  • 63. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Otro problema, es que no se pueden añadir librerías externas • No se puede instalar nada con PIP • O si se puede, no está documentado • Y nosotros no lo hemos conseguido L • Por lo que la cosa se queda un poco descafeinada Como lo hacemos con graalvm
  • 64. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 65. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Efectivamente, la ‘poliglotía’ de GraalVM, ‘from the scratch’, no parece servir para conseguir nuestro objetivo • Desde luego, desde fuera, parecía tener potencial para resolver nuestro problema, pero el reality-check ha sido claro • No obstante… la idea no era mala. De hecho, la comunidad ha empezado un proyecto para conseguir precisamente esto: Graal Python • Graal Python proporciona una implementación de Python 3.7 nativa a GraalVM • Y uno de sus objetivos a corto plazo es incluir SciPy también, e ir extendiendo esta inclusión de librerías populares poco a poco Graal python
  • 66. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Graal python
  • 67. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Tiene muchas diferencias muy interesantes con respecto a la aproximación basada en native-images • No incluye por defecto la JVM. Solo el entorno de ejecución de Python • El punto de entrada es un .py, no necesito una clase Java que use Polyglot para llamar a mi código Python • Sencillamente… se lanza así • Desde luego, puedes seguir ejecutando código de otros lenguajes con Polyglot Graal python
  • 68. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • De hecho es interesante la conjunción de lenguajes entre R y Python • Por ejemplo, podemos instalar dependencias de R así • Y combinar Python y R usando Polyglot… Graal python
  • 69. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 70. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 71. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Pero es que además… con Graal Python puedes instalar librerías! • Pero no todas… solo las que estén portadas, o sean compatibles • La comunidad está trabajando activamente en: • Numpy • SciPy • Scikit-learn • Pandas • Tensorflow Graal python
  • 72. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Graal python
  • 73. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Primero, tenemos que haber hecho los pasos de instalación anteriores • Una vez hechos, tendremos acceso a una herramienta llamada gu instalando graal python
  • 74. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Si ejecutamos el siguiente comando: • Observaremos que tenemos disponible el componente Graal.Python. Lo instalamos así: instalando graal python
  • 75. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Sal y vuelve a entrar en la terminal para que se apliquen los cambios • Para comprobar que todo es correcto, ejecuta el siguiente comando instalando graal python
  • 76. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Claro, no tenemos instalado numpy • En graalpython las dependencias se instalan un poco diferente a Python… • Pero la instalación… • Igual nos falta instalar LLVM, porque numpy por debajo usa C instalando graal python
  • 77. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Volvemos a instalar numpy • Y vuelve a fallar • Resulta que GraalPython no usa LLVM, usa SULONG • SULONG viene instalado por defecto en la versión de GraalVM • Entramos en la documentación de SULONG y vemos que hay un workaround para MacOS • Instalar las XCode extensions (ya las tenía instaladas) • Y asegurarse de que la variable de entorno SDKROOT apunta a la carpeta correcta con: instalando graal python
  • 78. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • Pero sigue sin funcionar… • 19.3.0 … instalando graal python
  • 79. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 80. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • ¿Y si instalo…? • Pandas à Declara como dependencia NumPy à FALLA L • SciPy à Paquete desconocido • Scikit-learn à Paquete desconocido • Tensorflow à Paquete desconocido instalando graal python
  • 81. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS • GraalVM a secas no es suficiente para ser usado con Python • Se necesita instalar también • GraalPython • LLVC • XCode Development Tools en MacOS / Herramientas desarrollo C y C++ en Unix • Aún así, el proyecto aún está muy verde para ser incluso evaluado • No solo con proyectos reales • Tampoco para laboratorio, tiene una tasa de error ‘mágico’ muy elevada • La documentación es escasa y habitualmente no funciona • Aún así, GraalPython es una tecnología prometedora que merece la pena seguir su evolución conclusiones
  • 82. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS
  • 83. Francisco Javier Barrena Castillo - @DogDeveloper#CommitConf19 #ATODOGAS Gracias