Eléments logiciels pour le traitement des données massives

ENSAE - OMI309

Cours animé par : Matthieu Durut 1, Xavier Dupré 1

Le cours est évalué avec un projet informatique. Programme de l’année 2017 : Feuille de route 2017 (3A).


Eléments techniques

CPU

Notebooks

Le notebook suivant montre comment écrire du code C++ tout en l’utilisant depuis Python pour mesurer une optimisation que proposent les processeurs CPU : le branching.

Lectures

Vidéos

Librairies

  • OpenMP : c’est une librairie très utilisée pour paralléliser les calculs en C++ sur plusieurs threads

  • OpenMPI : c’est une librairie utilisée pour synchroniser des calculs parallélisés sur plusieurs processeurs (ou machines)

GPU

Lectures sur le GPU

Lectures sur le C++

Python

Bas niveau

Sécurité et bas niveau

Optimisation

  • No Bits Left Behind : l’article quelques stratégies bas-niveau pour optimiser les programmes

Modules


Eléments théoriques

Crypographie, block chain

Lectures

Compilateur, compilation à la volée, JIT

La compilation à la volée ou JIT pour Just in Time est utilisé pour optimiser une partie du code après que l’exécution du programme ait démarrée. numba permet de demander à un compilateur JIT de remplacer le code python par un code optimisé en C++ souvent beaucoup plus rapide si ce code est purement numérique.

Lectures

à venir

Modules


Eléments logiciels

Compression des données

Lorsque les données sont volumineuses. Une solution consiste à les compresser.

Lectures

Modules

Workflow de données

Lectures

Modules

Framework de deep learning

Quelques modules spécialisé dans le calcul GPU:

Les ingénieurs cherchent sans arrêt à créer le bon outil, celui qui leur fait gagner du temps lors de la conception de programmes complexes. Voici quelques outils qui vont dans ce sens. Il faut toujours regarder la date de création de l’outil, s’il est toujours maintenu, s’il est utilisé…


Map Reduce

Map Reduce en pratique

Lectures

Vidéos

avec PIG

PIG n’est plus un langage très utilisé, il a été supplanté par Spark. Pour l’avoir utilisé quotidiennement en 2008-2009, sa logique est proche du :epkg:`SQL`, il était et doit encore être difficile à débugger dès qu’il inclut des scripts non PIG traitant des lignes de texte. Mais il était difficile de faire du PIG sans bien comprendre le map/reduce alors que Spark donne l’impression c’est plus facile.

Trois séances avaient été appliquées et dédiées à la découverte de Hadoop, un environnement qui permet d’exécuter des tâches Map/Reduce. Plusieurs angles d’approche sont possibles. Celle retenue est l’utilisation du langage PIG-latin dont la logique ressemble beaucoup à celle du SQL. Les outils Python simplifient la communication avec le cluster mais peuvent être effectuées via un terminal.

Trois projets réalisés par les élèves lors de l’année 2014-2015 :

Lectures

Getting started, installation, setup

PIG

Les examples sur PIG ne sont plus utilisés. Les instructions qui suivent datent de 2015. Il est très probable qu’elles ne fonctionnent plus telles quelles. Les notebooks proposés en exemple requièrent une surcouche apportée par le module pyenbc. Le python n’est pas l’objet de ce cours, les notebooks sont utilisés pour pouvoir regrouper dans un même document toutes les opérations effectuées dans un langage Map/Reduce. La page En résumé : Anaconda décrit comment installer ces outils sur les trois OS principaux Windows, OS X, Linux.


Bibliographie

Cours

Articles

Liens

Librairies / outils

  • amazon-dsstne : moteur de recommandation d’Amazon

  • Elastic Search : moteur de recherche

  • Giraph : Large-scale graph processing on Hadoop

  • Hadoop : système de fichier distribué + Map Reduce simple

  • Kafka : distributed streaming platform, conçu pour stocker et récupérer en temps réel des événements de sites web

  • Mesos : Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), Elixi

  • MLlib : distributed machine learning for Spark

  • Parquet : Apache Parquet is a columnar storage format available to any project in the Hadoop ecosystem.

  • Presto : Distributed SQL Query Engine for Big Data (Facebook)

  • Spark : Map Reduce, minimise les accès disques, (DPark clone Python de Spark, pas vraiment maintenu)

  • Spark SQL : SQL distribué, sur couche de Spark

  • Storm : Apache Storm is a free and open source distributed realtime computation system, conçu pour distribuer des pipelines de traitements de données

  • YARN : Ressource negociator

  • rapids : numpy, pandas version GPU

  • kubernetes : automatisation de déploiement d’applications dans des containers (type docker)

Librairies à suivre

  • multiverso : framework de parallélisation

  • lightLDA : Latent Dirichlet Application parallélisée

  • lightGBM : A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework based on decision tree algorithms.

Feuilles de routes des années passées

Footnotes

1(1,2)

Contributeur et coordinateur du cours.

2

Contributeur, encadrant.