Comprendre et améliorer les performances du système HPC à l'aide de l'apprentissage automatique et de l'analyse statistique

par Salah Zrigui

Thèse de doctorat en Informatique

Sous la direction de Denis Trystram et de Arnaud Legrand.

Thèses en préparation à l'Université Grenoble Alpes , dans le cadre de École doctorale mathématiques, sciences et technologies de l'information, informatique , en partenariat avec Laboratoire d'Informatique de Grenoble (laboratoire) .


  • Résumé

    Les infrastructures de systèmes de calcul haute performance (HPC) augmentent rapidement en complexité et en échelle. De nouveaux composants et innovations sont ajoutés à un rythme rapide. Cela incite à redoubler d'efforts pour comprendre ces systèmes et concevoir de nouveaux schémas d'optimisation plus adaptés. Cette thèse regroupe une collection de travaux analytiques et expérimentaux avec deux objectifs. (i) Améliorer les performances des systèmes HPC en mettant l'accent sur les performances des gestionnaires de ressources. (ii) Mieux comprendre le fonctionnement interne des systèmes HPC, qui comprend les méthodes d'évaluation des ordonnanceurs et le comportement énergétique des jobs. Nous commençons par présenter une étude comparative. Nous nous concentrons sur les méthodes d'évaluation des ordonnanceurs en étudiant deux métriques classiques (temps d'attente et ralentissement) et une métrique moins étudiée (ralentissement par processeur). Nous évaluons également d'autres effets, tels que la relation entre la taille des jobs et le ralentissement, la distribution des valeurs de ralentissement et le nombre de jobs remplacés. Nous nous concentrons sur la politique populaire First-Come-First-Served (FCFS) et la comparons à d'autres heuristiques de planification simples. Nous montrons que l'abandon du FCFS n'est pas aussi risqué qu'on le perçoit. Nous soutenons que l'utilisation d'autres politiques combinées avec un simple mécanisme de seuillage peut offrir des garanties similaires avec des performances nettement meilleures. Ensuite, nous montrons les limites des heuristiques d'ordonnancement simples et nous concevons et testons deux paradigmes basés sur l'apprentissage automatique pour améliorer les performances au-delà de ce que ces heuristiques de base peuvent offrir. Tout d'abord, nous proposons une méthode pour générer de manière dynamique de nouvelles politiques d'ordonnancement qui s'adaptent à la nature changeante des données sur une plateforme donnée. Nous étudions également la possibilité d'appliquer l'apprentissage en ligne sur ce type des données, et nous détaillons les difficultés que l'on pourrait rencontrer dans une telle entreprise. Pour la deuxième approche, nous améliorons les performances des politiques d'ordonnancement déjà établies en réduisant l'incertitude dans les jobs. Plus précisément, l'inexactitude des estimations des temps d'exécution des utilisateurs. Nous proposons une classification simple des jobs en petits et grands selon leur taille. Nous montrons que cette classification est suffisante pour exploiter la plupart des améliorations qui peuvent être obtenues à partir d'estimations précises des délais d'exécution. Nous utilisons l'apprentissage automatique pour prédire les classes et améliorer les performances sur toutes les plateformes étudiées. Enfin, nous analysons la consommation énergétique des plateformes HPC. Nous étudions les profils énergétiques des jobs individuels et nous observons les similitudes et les différences entre les profils énergétiques. Puis, nous proposons une série de tests statistiques à travers lesquels nous classons les jobs en périodiques, constants et non stationnaires. Nous pensons que cette classification peut être utilisée pour prédire la consommation d'énergie des futurs jobs et pour construire des ordonnanceurs sensibles à l'énergie.

  • Titre traduit

    Understanding and improving HPC performance using Machine Learning and Statistical analysis


  • Résumé

    The infrastructure of High Performance Computing (HPC) systems is rapidly increasing in complexity and scale. New components and innovations are added at a fast pace. This instigates the need for more efforts towards understanding such systems and designing new, more adapted optimization schemes. This thesis is a series of data-driven analytical and experimental campaigns with two goals in mind. (i) To improve the performance of HPC systems with a focus on scheduler performance. (ii) To better understand the inner workings of HPC systems, which includes scheduling evaluation methods and energy behavior of submitted jobs. We start by performing a comparative study. We focus on the evaluation methods of schedulers. We study two well-established metrics (waiting time and slowdown) and one less popular metric (per-processor-slowdown). We also evaluate other effects, such as the relationship between job size and the slowdown, the distribution of slowdown values, and the number of backfilled jobs. We focus on the popular First-Come-First-Served (FCFS) and compare it to other simple scheduling policies. We show that relinquishing FCFS is not as risky as it is perceived to be. We argue that using other ordering policies in combination with a simple thresholding mechanism can offer similar guarantees with significantly better performance. Then, we proceed to show the limits of simple scheduling policies and we design and test two machine learning-based paradigms to improve performance beyond what these basic policies can offer. First, we propose a method to dynamically generate new scheduling policies that adapt to the changing nature of data in any given platform. Also, we study the possibility of applying online learning on scheduling data, and we detail the difficulties that one might encounter in such an endeavor. %vspace{5mm} For the second approach, we improve the performance of already established scheduling policies by reducing the inherent uncertainty in the scheduling data. More precisely, the inaccuracy of user runtimes estimates. We propose a simple classification of jobs into small and large. We show that this classification is sufficient to harness most of the improvement that can be gained from accurate runtimes estimates. We use machine learning to predict the classes and improve performance across all studied platforms. Finally, we analyze the energy consumption of HPC platforms. We study the energy profiles of individual jobs. We Observe the similarities and differences between energy profiles and we propose a series of statistical tests through which we classify the jobs into periodic, constant, and non-stationary. We believe that this classification can be used to predict the energy consumption of future jobs and build energy-aware schedulers.