Gab17 lyon - La BI traditionnelle est une histoire du passée. Impacts de la r...
P8 03 presentation
1. Déploiement d’un modèle de
classification d’images dans le
Cloud
Parcours Data Scientist
Déployez un modèle dans le
Cloud
Etudiant: Eric Wendling
Mentor: Julien Heiduk
Date: 04/12/2020
Projet 8 :
2. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
1 Présentation du projet
Contexte
Développement de systèmes innovants pour la préservation de la biodiversité des fruits
• Robots cueilleurs intelligents
• Application mobile pour la reconnaissance de fruits
Développement d’un moteur de classification de fruits
• Augmentation rapide du volume de données
Prototype architecture Big Data
Notebook Jupyter
• PySpark
• Etapes de traitement des données
Objectif
Livrable
3. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
1 Présentation du projet
Données
Images de fruits
• Propriétés
• Dimensions (pixels): 100 X 100
• Profondeur: 24
Stockage
Source: Horea Muresan, Mihai Oltean. Fruit recognition from images using deep learning.
JEU DE TEST
131 répertoires (catégories)
22 688 images
152 Mo
JEU D’ENTRAINEMENT
131 répertoires (catégories)
67 692 images
467 Mo
4. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
2 Modélisation
Techniques de classification d’images
Réseaux de neurones convolutifs
Identification auto des variables explicatives
Autres techniques d’apprentissage supervisé
Détermination des variables explicatives
5. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
Points d’intérêts et descripteurs
• OpenCV
• SIFT, ORB, SURF
2 Modélisation
Variables explicatives
Descripteurs
Points d’intérêt
image 0
image 241
…
…
6. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
Visual Words
• Clustering des descripteurs
• Modèle K-Means
K clusters (centroïdes)
Variables
• Classification des descripteurs
• Prédictions modèle K-Means
• Bag of Words
• Historisation
₋ Variables = clusters (visual words)
₋ Valeurs = nombre de cluster par image
Poids
• Matrice des descripteurs
2 Modélisation
Variables explicatives Visual Words
Clustering
Prédiction
Jeu de données Nombre
d’images
Nombre de
points d’intérêt
par image
Nombre de
descripteurs
total
Poids d’un
descripteur
(octets)
Poids
total (Gb)
Entraînement 67692 50 3384600 977 3,3
Test 22688 50 1134400 977 1,1
7. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Big Data
Important volume de données
• Scalabilité
• Augmentation des ressources (serveurs, RAM…)
• Limites
• Lorsque les solutions classiques de stockage, de gestion et de traitement sont insuffisantes
Les 3V du Big Data
• Volume
• Stockage
• Vélocité
• Traitement temps réel
• Variété
• Données structurées / non structurées
Calcul distribué
• Clusters de calcul
• Passage à l’échelle horizontal
• Plus grande tolérance aux pannes
• Transfert de tâches entre nœuds du cluster
• Recréer l’état du nœud en échec
8. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
MapReduce
Cadre générique pour le calcul distribué
• Diviser pour régner
• Problème Sous-problèmes Résolutions Combinaison des résultats
• Combinaison de 2 fonctions simples
• Map: transformation
• Reduce: agrégation
SOCRATE :
Prétends-tu que
l'agréable soit
identique au
bon, ou bien y a-
t-il de l'agréable
qui ne soit pas
bon ?
prétendre
agréable soit
identique bon
ou agréable soit
pas bon
(prétendre, 1)
(agréable, 1, 1)
(soit, 1, 1)
(identique, 1)
(bon, 1, 1)
(ou, 1)
(pas, 1)
(prétendre, 1)
(agréable, 1)
(soit, 1)
(identique, 1)
(bon, 1)
(ou, 1)
(agréable, 1)
(soit, 1)
(pas, 1)
(bon, 1)
(prétendre, 1)
(agréable, 2)
(soit, 2)
(identique, 1)
(bon, 2)
(ou, 1)
(pas, 1)
SPLIT MAP SHUFFLE REDUCE
Application de
comptage de mots
9. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Hadoop 1.0 (Apache)
Infrastructure de référence pour MapReduce
• Socle technique
• HDFS (Hadoop Distributed File System)
• Framework MapReduce
• Architecture HDFS
• Type maître / esclaves
• Distribution des fichiers
• Réplication des fichiers
• Colocalisation données/traitements
• Framework MapReduce
• Type maître / esclaves
• Ordonnancement traitements
• Distribution de l’exécution
• Localisation des fichiers
Name Node
Data Node 1
Task Tracker
Data Node 2
Task Tracker
Data Node 3
Task Tracker
Secondary
Name Node
64 Mo
Blocs dupliqués (tolérance aux pannes)
CLIENT
Job Tracker
Node
Task Tracker
Fichier découpé en blocs
Réplication
10. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Hadoop 2.0 (Apache)
Optimisation de l’architecture
• YARN
• Yet Another Ressource Negociator
• Exécution de tout type d’applications
• Hadoop Streaming
• Utilisation d’autres langages que Java
Installation / Distributions
• Installation manuelle
• Paquets
• Distribution intégrée
• Services
• Cloud
• Services
Limites
• Ecriture sur disque
• Ecriture sur disque des données entre 2 étapes (Map Reduce)
Lenteur d’exécution
• Jeu d’instructions limité
• Map et Reduce
Difficulté de réaliser des opérations complexes
11. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Spark (Apache)
Description
• Framework open source de calcul distribué
Avantages
• Données stockées en RAM
Rapidité d’exécution (X10 à X100 par rapport à Hadoop)
• Jeu d’instructions optimisé
• Nombreuses opérations en mode distribué
• Réduction automatique niveau Map / Reduce
Langages de programmation
• Java
• Scala (natif)
• Python
API PySpark
Temps réel Machine Learning
12. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Spark (Apache)
Architecture
• Type Maître / Esclaves
• Gestion des fichiers: HDFS
• Hadoop Map Reduce
Distribution des calculs
• Classe SparkContext
Configuration de l’application
Lecture des données
• Création d’un objet de type RDD (Resilient Distributed Dataset)
Format permettant la distribution des calculs
Optimisé pour la tolérance aux pannes
Type clé / valeur
Driver
Worker 1
Executor
Task 1
Task 2
…
Worker 2
Executor
Task 1
Task 2
…
Worker 3
Executor
Task 1
Task 2
…
(prétendre, 1)
(agréable, 1)
(soit, 1)
(identique, 1)
(bon, 1)
(ou, 1)
(agréable, 1)
(soit, 1)
(pas, 1)
(bon, 1)
Source: Documentation de Spark
clé
valeur
13. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Spark (Apache)
RDD (Resilient Distributed Dataset)
• Types d’opérations
• Transformation
• Action
• DAG (Directed Acyclic Graph)
Tolérance aux pannes
• Lazy evaluation
• Evaluation des transformations au moment utile
Lors d’une action
RDD 1
RDD 2
RDD 3
Transformation
Résultat
Action
Transformation
RDD 4
RDD 5
Transformation
Résultat
Action
évaluation
14. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
RDD (Resilient Distributed Dataset)
• Distribution par partition
Calcul distribué
3 Architecture Big Data
Spark (Apache)
Task 1
Task 2
Task 3
Partition
Partition
Partition
Etape RDD
Driver
Worker 1
Executor
Task 1
…
…
Worker 2
Executor
Task 2
Task 3
…
Worker 3
Executor
Task 4
…
…
Task 4 Partition
15. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Spark - Langage Python
Installation (LOCAL)
• Packages
• Java
• Python3
• Jupyter Notebook
• Spark / PySpark
• Variables d’environnement
eric@eric-VirtualBox:~/OC_DS_P8$ spark-submit --master local[2] P8_01_spark.py True data/fruits_360…
Console Spark - Python
16. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
3 Architecture Big Data
Spark - Langage Python
Installation (LOCAL)
• Packages
• Java
• Python3
• Jupyter Notebook
• Spark / PySpark
• Variables d’environnement
17. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Descripteurs
- Détection des points d’intérêt
- Calcul des descripteurs
Visual Words
- Clustering K-Means
- Clusters = Visual Words
Bag of Words
- Prédiction K-Means
- Regroupement des Visuals
Words par image
Variables
- Historisation
- Variables = Visual Words
Réduction de
dimension
Classification
- Random Forest
- MLP
- ACP
18. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Descripteurs Visual Words Bag of Words Variables
Réduction de
dimension
Classification
19. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Visual Words
Descripteurs Bag of Words Variables
Réduction de
dimension
Classification
Visual Words
20. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
Concaténation des identifiants
des images (encodés) et des
prédictions (clusters K-Means)
4 Conception
Descripteurs Variables
Réduction de
dimension
Classification
Bag of Words
Visual Words
ReduceByKey
21. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Descripteurs
Réduction de
dimension
Classification
Visual Words Variables
Bag of Words
CountVectorizer
transformation DataFrame des
variables explicatives
Nombre de visuals
words uniques (30)
22. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Descripteurs Classification
Visual Words Bag of Words
Réduction de
dimension
Variables
PCA
23. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Classification
Descripteurs Visual Words Bag of Words Variables
Réduction de
dimension
Apprentissage
Test
Evaluation
24. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
Architecture de l’application
get_descriptors
image_path
Get_path
rdd_desc
ima_collected
sdf_ima_cat
kmeans_train
nb_cat kmeans_pred
km_model
list_km_pred bow_creation
bow_reduce
nb_clusters
data_set_name
df_lab_features pca_dim
ima_cat, ima, desc
image
get_images_descriptors
sdf_bow
1 2
3 4
5
6
Fonctions
25. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
4 Conception
rdd_images
rdd_cat_ima_desc
rdd_cat_ima_desc_f
rdd_cat rdd_ima rdd_desc
list_cat list_ima
km_model
sdf_ima_cat
kmeans train
rdd_km_pred
reduceByKey
list_km_pred
rdd_ima_pred
sdf_words sdf_bow
CountVectorizer
kmeans pred
rdd_words
sdf_lab_features
PCA
map
filtre
flatMap
test_lab_pred
CLS
Architecture de l’application
Objets
transformation
action
Collecte
Collecte
Mise en
cache
26. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Le Cloud
• Accès à des ressources distantes
• Calcul (CPU, mémoire…)
• Stockage (espace disque)
• Elasticité
• Modification des capacités
• Gestion des coûts
• Facturation à l’utilisation
Solutions
AWS (Amazon Web Service)
• Serveurs de calcul
• Elastic Compute Cloud (EC2)
• Clusters
• Elastic Map Reduce (EMR)
Framework Hadoop hébergé
• Stockage
• Simple Storage Service (S3)
Connecteur HDFS
Plateforme pour le Big Data
27. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
EC2
instances
S3
bucket
Données
Objets
S3AFileSystem
- Images (fruits)
- Bag of words
- Logs
28. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Création d’un Cluster avec EMR
29. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Création d’un Cluster avec EMR
30. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Création d’un Cluster avec EMR
31. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
Nombre de partitions
5 Déploiement dans le Cloud
Cluster EMR
MASTER
NODE 1
NODE 2
CORE 1
CORE 2
CORE 3
CORE 4
CORE 1
CORE 2
CORE 3
CORE 4
6 cœurs virtuels
3 partitions par cœur
Minimum 18 partitions
Cluster
Manager
16 Gb
Worker
Executor
32. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Accès au driver via SSH
Cluster EMR
33. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Connecter un notebook Jupyter
Cluster EMR
34. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Notebook Jupyter (noyau spark)
35. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Notebook Jupyter (noyau PySpark)
36. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Résultats comparatifs
vs
37. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
Redimensionnement du Cluster EMR
38. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
2 instances
(8 cœurs)
4 instances
(16 cœurs)
39. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
AWS S3 (Simple Storage Service)
40. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Déploiement dans le Cloud
AWS S3 (Simple Storage Service)
Affichage console Export fichier
41. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
6 Contrôle Web UI
…
Processeur double cœur (4 processeurs logiques)
42. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
6 Contrôle Web UI
43. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
6 Contrôle Web UI
task 0
task 2
task 1 task 3
task 4
Processeur double cœur (4 processeurs logiques)
1 tâche par processeur (executor) à la fois
44. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
6 Contrôle Web UI
2 instances (8 processeurs logiques)
45. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Prochaines étapes
Optimisation du code
• Analyse des tâches
• Optimisation
Dimension de l’architecture
• Serveurs de calcul
• Nombre de cores
• Nombre de partitions
• Stockage
• Croissance du volume des images
• Dimension des images
Modèle de classification
• Choix d’un modèle
• Performances
46. Parcours Data Scientist Projet 8: Déployez un modèle dans le cloud Eric Wendling 2020-12-04
Déploiement d’un modèle dans le Cloud
5 Conclusion
Configuration de l’architecture Big Data
• Complexe
Ressources: Data Architect…
Services: AWS…
Programmation calcul distribué
• Plusieurs langages dont Python
Nouvelle syntaxe (PySpark)
• Optimisation
Liée à l’architecture
Le Big Data: plus que des big data
Transformation des processus métiers