machine learning pour le big data, sans hadoop ni spark
TRANSCRIPT
1© 2016 The MathWorks, Inc.
Machine Learning pour le Big Data…
… sans ni
Marc Wolff, Ph.D.
2
Quelle est l’alternative ?Les clusters de calcul dits « traditionnels »
3
Quelle est l’alternative ? HPC Hadoop/Spark
Modèle de programmation
MPI vs. MapReduce/Spark
Architecture
Silos calcul et stockage vs.
architecture totalement
distribuée
4
Composants d’infrastructures HPC
Le modèle de programmation MPI
Implémentation MPI d’algorithmes de machine learning
Agenda
1
2
3
5
Serveurs de calculArchitectures dites Twin²
Design low-cost
4 serveurs bi-CPU dans un châssis
Alimentation redondante partagée
Pour tout réseau d’interconnexion
Coût : ~20 k€ HT pour 96 cœurs
Où s’en procurer ?
– Dell C6320
– Auprès de nombreux intégrateurs
6
Systèmes de fichiers parallèles
De type scale-out : la performance
augmente avec la taille du système
Namespace unique et extensible : un seul
système de fichiers, quel que soit le
nombre de nœuds de stockage
Contrairement à HDFS, les systèmes de
fichiers parallèles sont vus par l’utilisateur
comme un disque réseau classique
– /data sous Linux ou disque S: sous Windows
100 To
100 To
100 To
300 To
7
Systèmes de fichiers parallèlesUn exemple : BeeGFS
Système de fichiers open source
Développé en Allemagne par l’Institut Fraunhofer
Software Defined Storage : peut être déployé sur
du matériel de toute marque (comme HDFS)
Probablement le plus performant du marché
Coût : entre 200 et 300 € HT par To utile
Déployé dans de nombreuses universités et
centres de calcul
8
Systèmes de fichiers parallèlesUn exemple : BeeGFS
A la recherche d’une vraie bête de course ?
Associez BeeGFS avec des disques flash !
Samsung 850 Pro
1 To, 500 Mo/s, 400 €
9
Composants d’infrastructures HPC
Le modèle de programmation MPI
Implémentation MPI d’algorithmes de machine learning
Agenda
1
2
3
10
Qu’est-ce que MPI ?
MPI est le framework standard pour la programmation et l’exécution
d’applications parallèles
– Technologie mûre (plus de 20 ans d’existence)
– Utilisation complexe avec des langages de programmation traditionnels
Les outils de calcul parallèle MATLAB sont basés à 100% sur MPI et sont
beaucoup plus simples à apprivoiser
11
MPI est un framework in-memory
Opérations effectuées sur des données stockées en mémoire vive (RAM)
Tendance globale à revenir à des traitements in-memory (Spark)
Lecture
Traitement
en mémoire
Ecriture1
2
3
In-memoryOut-of-memory
(exemple : MapReduce)
12
Pourquoi privilégier des traitements in-memory ?
Performances Coût
Bande passante max. pour un flux I/O
Disque dur
100 Mo/s
Système de fichiers
parallèle tel que BeeGFS
3 Go/s
Mémoire vive
70 Go/s
Quel est le composant le plus onéreux
d’une infrastructure de calcul ?
Du – cher au + cher :
5.
4.
3.
2.
1.
Réseau
Serveurs (châssis, carte mère)
Stockage
Mémoire vive
Processeurs
13
Algorithmes de machine learning in-memory distribués
« In-memory »
– La totalité du jeu de données est chargée en mémoire
au début de l’exécution, avant analyse
– La sélection et le cleaning des données peuvent être
effectués en même temps que le chargement des données
« Distribués »
– Le jeu de données est chargée de manière distribuée :
il est partitionné et chaque processus MPI stocke une
portion des données
– Les données ne sont jamais chargées intégralement
sur une unique machine afin d’éviter les limitations
liées à la quantité de mémoire vive disponible
Chargement du
jeu de données
complet
Data chunk 1/4
Data chunk 2/4
Data chunk 3/4
Data chunk 4/4
14
Composants d’infrastructures HPC
Le modèle de programmation MPI
Implémentation MPI d’algorithmes de machine learning
Agenda
1
2
3
15
Un exemple : modèle de scoring
Application : développer un modèle de scoring (risque de crédit)
Dataset (~160 Go d’espace disque) :
Algorithme de classification : Random Forest
– Minimum 100 arbres
– Sans utiliser un modèle de programmation de type MapReduce
…
…
+ d
e 2
00M
de lig
nes
157 variables
16
Problème #2 : l’utilisation du calcul parallèle pour accélérer l’entraînement
des Random Forests consiste à entraîner simultanément plusieurs arbres sur
chaque machine
– Mauvaise approche en contexte Big Data
– Requiert le stockage de plusieurs copies du dataset
– Approche nécessairement confrontée à des limitations mémoire
Problème #1 : l’implémentation standard des algorithmes de machine learning
est adaptée à des données non distribuées stockées en mémoire vive
– En mémoire vive, le dataset complet aurait occupé 260 Go
– Aucune des machines à disposition n’avait suffisamment de mémoire vive
>> OUT OF MEMORY
Un exemple : modèle de scoring
17
Algorithme de random forest distribué basé sur MPI
Solution proposée : s’appuyer sur un algorithme d’arbre de décision
opérant sur des données distribuées
– Entraînement de l’arbre accéléré, peut être fait sur des datasets de grande dimension
– Toute random forest construite à partir d’arbres de ce type héritera naturellement de
ses capacités « Big Data »
Infrastructure utilisée pour le PoC
– Salle de formation MathWorks
(12 PC équipés de processeurs 4 cœurs)
– MATLAB Distributed Computing Server
permet de distribuer les tâches sur le parc
de stations de travail
18
Algorithme d’arbre de décision distribué basé sur MPIPrincipe d’un arbre de décision
La séparation des données selon la variable
Temps maximise le gain d’information
19
Algorithme d’arbre de décision distribué basé sur MPI
Accélération du
calcul des tables
de répartition
Agrégation à l’aide
d’une opération de
réduction
Parfaite
reproductibilité
20
Résultats
Conditions du test
– Les PC utilisés pour le test disposent de 8 Go de mémoire vive
– Nous avons travaillé avec un dataset réduit de « seulement » 25M de lignes
– Occupe environ 10 Go en mémoire vive, plus que la capacité mémoire de l’un des PC !
Résultats
– Entraîment d’un arbre de décision en utilisant 6 postes en 5 minutes
– Entraînement d’une random forest de 100 arbres en 4 heures
20 k€
512 Go
permet de manipuler des datasets
d’environ 500M de lignes