machine learning pour le big data, sans hadoop ni spark

20
1 © 2016 The MathWorks, Inc. Machine Learning pour le Big Data… … sans ni Marc Wolff, Ph.D.

Upload: marc-wolff

Post on 16-Apr-2017

327 views

Category:

Science


3 download

TRANSCRIPT

Page 1: Machine Learning pour le Big Data, sans Hadoop ni Spark

1© 2016 The MathWorks, Inc.

Machine Learning pour le Big Data…

… sans ni

Marc Wolff, Ph.D.

Page 2: Machine Learning pour le Big Data, sans Hadoop ni Spark

2

Quelle est l’alternative ?Les clusters de calcul dits « traditionnels »

Page 3: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 4: Machine Learning pour le Big Data, sans Hadoop ni Spark

4

Composants d’infrastructures HPC

Le modèle de programmation MPI

Implémentation MPI d’algorithmes de machine learning

Agenda

1

2

3

Page 5: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 6: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 7: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 8: Machine Learning pour le Big Data, sans Hadoop ni Spark

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 €

Page 9: Machine Learning pour le Big Data, sans Hadoop ni Spark

9

Composants d’infrastructures HPC

Le modèle de programmation MPI

Implémentation MPI d’algorithmes de machine learning

Agenda

1

2

3

Page 10: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 11: Machine Learning pour le Big Data, sans Hadoop ni Spark

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)

Page 12: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 13: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 14: Machine Learning pour le Big Data, sans Hadoop ni Spark

14

Composants d’infrastructures HPC

Le modèle de programmation MPI

Implémentation MPI d’algorithmes de machine learning

Agenda

1

2

3

Page 15: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 16: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 17: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 18: Machine Learning pour le Big Data, sans Hadoop ni Spark

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

Page 19: Machine Learning pour le Big Data, sans Hadoop ni Spark

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é

Page 20: Machine Learning pour le Big Data, sans Hadoop ni Spark

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