3A - Projets informatiques

Travail attendu

Le projet a pour objectif l’implémentation d’un algorithme réparti, soit en utilisant le calcul sur GPU, soit via Map/Reduce, soit en implémentant vous-même la répartition des calculs sur plusieurs machines (virtuelles) via des primitives telles que MPI ou des Key-Value Pair Storages. Les technologies proposées sont donc :

  • GPU : CUDA et C, ou CUDA et python via pyCUDA
  • Map/Reduce : PIG, Hive, Java sur un cluster Cloudera ou Azure, Spark
  • implémentation d’un calcul réparti ou distribué : QueueStorage + Blobstorage comme primitives de communication (C#, .Net) sur Azure.

Vous êtes libres de traiter l’algorithme de votre choix avec la technologie de votre choix avec la contrainte que l’algorithme implémenté soit distribué par votre implémentation et non par la librairie que vous utilisez. Dans ce cadre, un projet sur un réseau de neurones profond seul n’est pas valide. Nous vous en proposons certains dans les articles ci-dessous.

A souligner dans le rapport et le code

  • GPU : indiquer les parties parallélisées, les frontières entre CPU et GPU, une estimation du coût de l’algorithme CPU / GPU / nombre de verrous.
  • Calcul distribué : indiquer les parties parallélisées, les variables partagées, si cela est fait via un thread ou un processus, une estimation du coût de l’algorithme communication / CPU / nombre de verrous.
  • Map/Reduce (Spark ou autre) : préfixer le noms des colonnes par m_ ou d_ selon la colonne contient des données ou un coefficient du modèle optimisé, donner une estimation du nombre de lignes de chaque flux manipulé.

Suggestions d’articles

Articles ou sujet que vous ne pouvez plus choisir

2014-2015

2015-2016

2016-2017

2017-2018

2018-2019

Nous vous recommandons d’adopter la démarche suivante:

  1. implémentation et débugging sur un petit jeu de données synthétiques où les choses sont sensées bien se passer et la taille du jeu de données rend le debugging plus rapide,
  2. application à un vrai jeu de données que vous aurez sélectionné sur un des sites suivants Stanford Large Network Dataset Collection, UCI Machine Learning Repository ou autre (voir Source de données).

Le site Kaggle (2) référence de nombreuses compétitions intéressantes. Toutefois, avant d’utiliser les données Kaggle, je vous encourage à lire les articles Date use for teaching after competition concludes et Using a Kaggle contest as a term project. Les règles peuvent varier d’un projet à l’autre, prenez soin de les lire avant de choisir un projet car on ne peut pas tout faire avec les données disponibles sur ce site.