\documentclass{article} % For LaTeX2e
\usepackage{nips10submit_e,times}
\usepackage{amsfonts,url, amsmath}
\usepackage[latin1]{inputenc}
\usepackage[francais]{babel}
\usepackage{hyperref}
\usepackage{graphicx}

\hypersetup{
    colorlinks,%
    citecolor=black,%
    filecolor=black,%
    linkcolor=black,%
    urlcolor=blue
}

\newcommand{\Rb}[1]{\ensuremath{\mathbb{R}^{#1}}}

\title{Rapport d'avancement de thèse de Matthieu Durut\\ Parallélisation d'algorithmes de clustering sur une plateforme de Cloud Computing}

\nipsfinalcopy
\begin{document}
\maketitle

\begin{abstract}
Ce document est le rapport d'avancement de mes activités de recherche réalisées dans le cadre de ma thèse.
Cette thèse s'effectue dans un contexte CIFRE, encadrée du côté académique par Fabrice Rossi, ancien professeur de Télécom ParisTech, actuellement en poste à Paris I, et encadrée du côté industriel par Joannès Vermorel, président de la société Lokad. Lokad est un éditeur logiciel spécialisé dans la prévision de séries temporelles. Le cadre général de mes travaux est l'étude d'algorithmes dits de clustering et leur implémentation dans une architecture distribuée de type cloud computing.
\end{abstract}

\section{Cloud K-Means}

J'ai travaillé sur des problématiques de calcul réparti sur une architecture de type cloud computing (la plateforme Microsoft Azure) pour concevoir des algorithmes statistiques (notamment de cross-validation et de clustering). La parallélisation d'algorithmes de clustering a déjà été abordée de manière pratique et théorique, notamment par les travaux de Dhillon et Modha \cite{DhillonModha2000}, puis de Joshi \cite{KMeansJoshi}. Cependant, aucun cadre théorique n'avait été proposé dans le cas d'une parallélisation sur une architecture de type cloud. Cette architecture a un impact fort sur la parallélisation des algorithmes, puisque ce choix de plateforme affecte l'importance relative des calculs et des communications d'une manière différente de ce que l'on pouvait observer sur un cluster de machines locales par exemple. Cet impact nécessite de repenser la manière dont les charges de calcul sont réparties, afin de limiter les communications mais aussi d'éviter que certaines machines se retrouvent surchargées. Après avoir proposé un modèle théorique qui prenne en considération les coûts de communication entre les machines de calcul et le système de stockage, j'ai réalisé un prototype implémentant un K-Means réparti sur une centaine de machines. Ce prototype a confirmé expérimentalement la plupart des conclusions du modèle théorique, et a démontré la capacité de l'algorithme à gérer des volumes considérables de données (testés jusqu'à une centaine de gigaoctets) mais aussi à obtenir des parallélisations efficaces (avec des speed-up de l'ordre de 80 pour une centaine de machines). Les étapes de synchronisation sont implémentées via un design de type MapReduce \cite{MapReduce2004}, comme le montre la figure \ref{fig:communication}.\\

\begin{figure}[!ht]
\label{fig:communication}
\begin{center}
\includegraphics[scale = 0.5]{../../Pictures/MapReduce/communication.pdf}
\end{center}
\caption{Illustration du processus de communication inter-machines, inspiré de MapReduce. Les instances de calcul, appelées \textit{Mappers} comme dans la terminologie introduite par \cite{MapReduce2004}, proposent chacun une version des résumés (prototypes). Un système réparti d'aggrégation, dit de \textit{Reduce}, fusionne ces différents résultats en un unique groupe de prototypes, qui est retransmis à tous les \textit{Mappers}. Toutes les communications inter-machines se font via le système de Distributed Shared Memory que représente le BlobStorage d'Azure.}
\end{figure}

Ces travaux ont donné lieu à 2 publications en collaboration avec mon directeur de thèse: la première a été acceptée sous forme d'un poster au workshop " Learning on Cores, Clusters and Clouds " organisé à NIPS (conférence internationale) en décembre 2010 à Vancouver, sous le titre " K-Means on Azure " \cite{AzureKMeans}, la deuxième \cite{DurutRossiEsann2011} a été acceptée également sous forme de poster à la conférence internationale ESANN tenue à Bruges en avril 2011.\\

Ces travaux ont également soulevé des questions naturelles dans le cadre d'algorithmes répartis comme celles ayant trait aux délais de communication ou de synchronisation entre les machines, mais également le cas de la robustesse de l'algorithme aux pannes de machines ou encore à des baisses de performance sur une machine (straggler issues). Ces baisses de performance ont été effectivement observées, avec des durées de calcul variant du simple au double pour une même tâche sur des machines de capacités équivalentes. Le graphique 2 illustre la distribution empirique de ces durées de calcul. Ces questions n'avaient jusqu'alors que peu été traitées dans le cadre d'une architecture cloud, où les contraintes matérielles sont différentes d'autres types d'architectures parallèles et où la variabilité de la qualité des machines virtuelles allouées est grande. Ces questions nous amènent à introduire un nouvel algorithme réparti, présenté dans le paragraphe suivant.

\begin{figure}[!ht]
\label{fig:straggler}
\begin{center}
\includegraphics[scale = 0.5]{../../Pictures/Straggler.png}
\end{center}
\caption{Distribution empirique du temps d'exécution d'une même tâche de calcul intensif effectuée 10 fois sur 80 machines. La distribution révèle 3 régimes de fonctionnement correspondant à 3 types de puissance effective pour une même puissance théorique équivalente. Ces 3 régimes s'expliquent probablement par le nombre de machines virtuelles effectivement hébergées sur la machine physique au moment du calcul. Deux des 800 tâches ont demandé plus de 800 secondes de calcul, pour une durée médiane des tâches de l'ordre de 450 secondes. Ces différences s'expliquent par la perturbation temporaire d'une machine, entraînant des pénalités sur sa puissance de calcul (straggler issues).}
\end{figure}

%\newpage

\section{Parallélisation de l'algorithme de Vector Quantization}

Les questions soulevées dans le paragraphe précédent nous ont amenés à développer d'autres modèles de clustering adaptés pour le cloud computing, en particulier une variante parallèle de la méthode dite de Vector Quantization qui permette une collaboration asynchrone entre nos différentes machines. L'asynchronisme ainsi introduit permet en effet de rendre notre algorithme résilient aux mauvais comportements d'une fraction des machines utilisées. Certains travaux avaient déjà ouverts la piste de ce type d'algorithmes de descente de gradient asynchrones, comme les travaux théoriques de Tsitsiklis \cite{TSI1}, Langford \cite{LAN1} ou Patra (actuellement en soumission), et des travaux plus pratiques comme ceux de Louppe \cite{LOU1}. En collaboration avec Benoît Patra, également doctorant en thèse CIFRE au sein de Lokad, et mon directeur de thèse, nous avons mené un projet d'étude de cet algorithme réparti, reposant sur des simulations sur une machine locale, puis sur une implémentation sur Azure. Les résultats de simulation démontrent l'importance du processus d'aggrégation des résultas produits par les différents noeuds de calculs, tandis que nos expériences sur le cloud démontrent que la méthode proposée et son implémentation sur le cloud permettent de tirer parti de la puissance de calcul de dizaines de machines pour accélérer les convergences de ces algorithmes, comme le montre la figure 3. Nous avons également comparé cet algorithme avec le batch K-Means réparti décrit dans la section précédente, et nous montrons dans la figure 4 un exemple de cas où l'algorithme de Vector Quantization parallèle sur-performe largement le batch K-Means réparti. Ces expériences ont donné lieu à des résultats pertinents qui figureront dans nos thèses respectives et donneront probablement lieu à une publication commune.

\begin{figure}[!ht]
\label{fig:scalabilityOneLayer}
\begin{center}
\includegraphics[scale = 0.6]{../../../Patra/Pictures/CloudDALVQ/scalabilityOneLayer}
\end{center}
\caption{Evolution de la distorsion empirique (critère que l'on cherche à minimiser) en fonction du temps. Chaque courbe représente un nombre de machines (M) différent. Ce graphique démontre que dans notre cas, l'algorithme proposé permet de passer à l'échelle jusque 8 machines. En modifiant la partie \textit{Reduce} de notre algorithme, nous obtenons un scale-up jusque 32 machines.}
\end{figure}

\begin{figure}[!ht]
\label{fig:fightBatch}
\begin{center}
\includegraphics[scale = 0.6]{../../../Patra/Pictures/CloudDALVQ/fightbatchM32}
\end{center}
\caption{Comparaison de d'évolution de la distorsion empirique en fonction du temps dans le cas du batch k-means et de notre algorithme de Vector Quantization réparti. }
\end{figure}

\section{Agenda de fin de thèse}

Ma première inscription en thèse à Telecom Paris s'est effectuée en mars 2009, avec une inscription effective à l'ANRT en août 2009. Etant donnés ces dates et l'avancement actuel à la fois de mes travaux et de ma rédaction, j'envisage de terminer ma thèse aux alentours de septembre 2012.

\newpage

\bibliographystyle{IEEEtran}
\bibliography{progressReportBiblio}

\end{document} 