Amélioration de la gestion des ressources et de l'ordonnancement de tâches dans des infrastructures HPC/HPDA par apprentissage automatique

par Adrien Faure

Projet de thèse en Mathématiques et Informatique

Sous la direction de Denis Trystram.

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


  • Résumé

    Amélioration de la gestion des ressources et de l'ordonnancement de tâches dans des infrastructures HPC/HPDA par apprentissage automatique Le calcul à haute performance (HPC) est un domaine important pour la résolution des grands défis économiques et sociaux actuels (dans le domaine de la santé, de la sécurité, du changement climatique, etc). De nos jours, les plateformes de calcul HPC sont enrichies grâce à la gestion des données produites lors de l'exécution des applications, ainsi il faut également être performant pour l'analyse de données issues du calcul à haute performance (HPDA). Les plateformes HPC sont en évolution constante, toujours plus complexes. Cette évolution ne cesse d'apporter de nouvelles technologies, de nouveaux paradigmes, de nouveaux types de ressources et de nouveaux types d'applications, dans les environnements tant HPC que HPDA. Par ailleurs, le système de gestion de tâches et de ressources (RJMS) est le logiciel responsable de l'attribution de la puissance de calcul dans ces plateformes modernes. De ce fait, l'évolution rapide est un sérieux défi pour les systèmes de gestion de tâches et de ressources qui doivent contrôler et gérer toujours plus de ressources hétérogènes. La gestion des tâches et des ressources est un élément clé pour assurer la bonne exploitation des infrastructures de calculs intensifs traditionnelles HPC. Ces infrastructures sont construites autour de grappes de serveurs relativement homogène pouvant comporter des centaines de milliers de cœurs. Classiquement, un intergiciel spécialisé appelé Batch System ou gestionnaire de tâches et de ressources RJMS (Resource and Job Management System) est en charge de l'allocation des ressources et de l'ordonnancement des tâches soumises par les utilisateurs. L'étude de ces systèmes accompagne les évolutions matérielles des infrastructures, ainsi que les besoins des utilisateurs. Sur les deux dernières décennies de nombreux RJMS ont été développés et étudiés notamment du point de vue des choix de conception et des algorithmes d'ordonnancement [6,7,8,9,10,11,12,13]. Ces dernières années, nous avons assisté à l'apparition de deux phénomènes important qui impactent l'exploitation des grandes infrastructures : le Cloud Computing [19] et les solutions logicielles de traitement de données massives (Big Data) ou HPDA (High Performance Data Analytics) [16]. Dans ce contexte, une nouvelle génération de RJMS a été conçue pour répondre aux nouveaux besoins comme Fuxi [2], Mesos [3], Omega [4] et Yarn [5] ainsi que des logiciels en développement tel que Flux [15]. Les voies explorées par ces systèmes sont notamment la capacité à gérer des partitions pour des charges distinctes, de supporter de nouveaux modèles de programmation et d'exécution pour répondre aux besoins du Big Data et aussi afin de proposer de nouvelles architectures logicielles pour l'exploitation de très grandes infrastructures. La gestion des ressources pour les infrastructures HPC devient toujours plus complexe avec l'évolution de la plate-forme matérielle sous-jacente qui a besoin d'être gérée efficacement. Les logiciels de type RJMS doivent à présent contrôler différents types de ressources à un niveau global comme la gestion d'un noeud de calcul, du trafic réseau, la consommation d'énergie, les entrées/sorties etc.. Mais également la gestion de ressources plus fine comme les sockets, la configuration des cartes réseaux, la hiérarchie mémoire et des entrées/sorties, l'énergie par composants, etc.. L'émergence de nouveaux “workflows” complexes (c'est-à-dire, d'ensembles d'applications interdépendantes) nécessitant différents types de ressources impose de nouvelles contraintes que les RJMS doivent prendre en compte. Afin d'obtenir de bonne performance, il est nécessaire de fournir un placement optimisé des tâches prenant en comptes ces différentes contraintes ainsi que la variété d'objectifs multiples. La convergence du HPC et du Big Data apporte de nouveaux paradigmes dans les modèles de programmation et d'exécution (comme Hadoop, Spark [14,17,18]). Les caractéristiques particulières de ces applications, notamment en terme d'environnement logiciel et sur la localité des données/calcul peuvent être pris en compte par les RJMS afin de mieux satisfaire leurs exigences. De plus, la cohabitation efficace des charges de travail du HPC et du Big Data un domaine de recherche qui devient crucial. Dans ce contexte, les données que ces systèmes génèrent en permanence comme par exemple les logs du RJMS, les traces des jobs exécutés ainsi que les traces d'utilisation de ressources (CPU, mémoire, I/O, énergie, etc) peuvent être sauvegardées et analysées afin qu'ils améliorent plusieurs métriques d'utilisation d'une plateforme de calcul intensif [1]. Aucun des système RJMS mentionnés auparavant n'utilisent ces données afin de prévoir et améliorer ce qu'il va se passer dans le futur. Nous avons identifié trois domaines sur lesquels l'apprentissage automatique peut être appliqué dans ce contexte : 1) Les systèmes de gestion des tâches et des ressources sont devenus des logicielles complexes avec beaucoup de paramètres à régler et configurer pour optimiser leurs utilisations. La configuration de ces systèmes est devenu une tâche clés pour l'opération optimale de la plateforme. Cependant le réglage d'un système de gestion des tâches et des ressources peut être amélioré grâce à l'apprentissage et l'analyse des données extraites des fichiers journaux (logs) du système (comme par exemple l'utilisation de diagrammes de Gantt du passé). Des paramètres comme le débit, le backfilling, etc… peuvent être adapté afin de refléter l'usage réel du système. La simulation des possibles nouveaux réglages peut être fait comme tâche de fond en utilisant les caractéristiques des anciens workloads. Plusieurs simulation comme ça peuvent ainsi déduire des résultats sur un réglage optimale pour des conditions et de type de workload spécifique. Ainsi le système peut s'adapter la prochaine fois qu'il a de conditions et workloads similaires pour avoir le réglage optimale. Le but finale de cette méthode est d'optimiser plusieurs metrics global du système tel quel l'utilisation de système, l'énergie consommée et de manière plus général le TCO (Total Cost of Ownership). 2) Les données collectées à partir du comptage (accounting) et le profilage (profiling) des tâches peuvent être utilisées pour obtenir une meilleure compréhension des besoins pour l'exécution de ces tâches. Et ainsi apporter la possibilité de proposer des améliorations adaptées aux besoins pour les futures soumissions de tâches similaires en étudiant ces données via des techniques d'analyse de données et d'apprentissage. En s'appuyant sur les algorithmes étudiés et évalués en [1], le doctorant va proposer des extensions pour améliorer l'ordonnancement et le placement des tâches afin d'optimiser les métriques liées à l'exécution comme “turnaround time”, “slowdown”, consommation énergétique, efficacité énergétique, etc. Cet aspect multi-objectifs dans l'ordonnancement a été introduit par l'encadrant de thèse académique et son équipe dans un contexte proche [1] et cela sera adapté pour des workloads HPC/HPDA. Cette méthode a comme objectif final d'optimiser le RJMS du point de vue de l'utilisateur. Apprendre sur les caractéristiques fines des applications et les exécuter avec des paramètres améliorés permettra dans le futur proche de garantir des meilleures performances et d'obtenir des compromis avec garanties de performance. 3) L'analyse des données issues du comptage (accounting) et profilage (profiling) des tâches déjà exécutées peut nous aider à identifier des motifs qui se répètent sous des conditions similaires. Ces motifs peuvent être vus au niveau de l'utilisation des ressources comme la consommation de l'énergie, des échanges réseaux, des entrées/sorties, données sur disques locaux ou sur des systèmes de fichiers parallèles. L'identification des différentes phases d'exécution des applications en prenant en compte toutes ces ressources et en combinaison avec l'apprentissage machine nous aidera à fournir des adaptations dynamiques du système pendant l'exécution. L'objectif de cette méthode est d'apprendre lors des différentes phases d'exécution des applications et essayer d'ordonnancer ces tâches de manière à ce que les ressources ne soient pas fragmentées ou sous utilisées. L'optimisation de l'ordonnancement et de la performance des applications dans le HPC et HPDA ont toujours été des problèmes de recherche intéressants avec des communautés actives. L'apprentissage machine est une technique d'optimisation très prometteuse qui commence à prendre beaucoup d'importance. Cependant, une des principales complications est la collecte de suffisamment de données sur lesquelles on peut faire jouer l'apprentissage. Comme l'entreprise construit et fournit des supercalculateurs à de nombreux clients, elle a tissé des liens directs avec eux et le doctorant disposera de ce type de traces pour mener ces études. Une autre complication est l'utilisation de systèmes RJMS et d'exécutions de workloads HPC et HPDA dans des conditions réelles. Pour cela, nous avons besoin d'utiliser la simulation pour simuler le large échelle des infrastructures, ainsi que la compression de temps d'expériences afin de faire de l'apprentissage sur de longues périodes (plusieurs mois d'utilisation). Néanmoins, nous allons nous baser sur la recherche et l'expertise du laboratoire [20] et de l'entreprise [21] qui ont déjà une grande expérience dans le domaine de la simulation pour ce type de systèmes. La méthodologie de recherche proposée sera composée des étapes suivantes: État de l'art autour des systèmes de gestion de ressources et d'ordonnancement dans le HPC et le HPDA État de l'art autour des techniques d'apprentissage automatique, ainsi que des cas d'utilisation de ces derniers sur l'amélioration de la gestion de ressources et ordonnancement. Identification de métriques d'optimisation pertinentes. Étude et caractérisation de différents types de workloads d'exécution ainsi que de profilage applicatifs. Étude autour de la technique d'apprentissage automatique. Plusieurs cas de données peuvent être pris en compte sur lesquelles l'apprentissage peut avoir lieu : Sur les traces de système afin d'améliorer la configuration/réglages du RJMS à la base de conditions spécifiques déployées Sur les workloads d'exécution afin d'améliorer l'ordonnancement Sur le profilage applicatif afin d'améliorer le placement des tâches sur les ressources sélectionnées, ainsi que l'utilisation des ressources (fréquence du processeur, profil entrées/sorties/réseau, etc... ) Sur les données de consommation énergétique ou d'utilisation des ressources (CPU, Mémoire, entrées/sorties, etc.) afin d'optimiser la sélection des ressources et la combinaison d'ordonnancement de jobs Adaptation ou implémentation de mécanismes de collecte de différents type de données en minimisant le surcoût pour le système RJMS et les applications. Prototypage et implémentation de techniques d'analyse de données pour l'apprentissage automatique et l'optimisation de métriques identifiées auparavant. Méthodologie d'expérimentation et de simulation de techniques d'apprentissage automatique comme l'optimisation de la gestion de ressources et l'ordonnancement des tâches. Analyse des métriques d'optimisation Développement ou extension d'un simulateur de gestionnaire des ressources Méthode d'expérimentation à échelle réelle Expérimentation d'algorithmes, de prototypes et de plugins sur de plateformes réelles à grande échelle. Pour résumer, l'objectif principal de cette thèse est de donner l'opportunité au futur doctorant d'étudier les différents aspects de la gestion des ressources et d'ordonnancement des tâches qui peuvent être optimisés grâce à l'apprentissage machine. Aucun des systèmes RJMS mentionnés dans l'état de l'art n'utilisent des données générées afin d'essayer de prévoir et améliorer ce qu'il va se passer au futur. Le but de cette thèse est d'étudier le sujet des côtés théorique et appliqué et de développer des techniques nouvelles d'apprentissage automatique pour améliorer des métriques du système RJMS. De plus, le candidat aura la possibilité d'effectuer le développement d'extension adéquates sur des logiciels RJMS open source comme OAR et SLURM qui sont les outils utilisés respectivement au laboratoire et dans l'entreprise (ces deux systèmes étant compatibles et coordonnés), ainsi que sur les outils associés. Le futur doctorant aura également la possibilité de travailler dans un context bénéficiant des environnements HPC et HPDA-cloud les plus avancés et évolués et ainsi, bénéficier de la possibilité de faire des études à large échelle pour l'adoption de nouvelles techniques d'apprentissage machine pour l'amélioration et l'optimisation de la gestion des ressources et d'ordonnancement de tâches.

  • Titre traduit

    Improving Resource Management and Job Scheduling in HPC and HPDA environments using Machine Learning / Predictive Analytics


  • Résumé

    Improving Resource Management and Job Scheduling in HPC and HPDA environments using Machine Learning / Predictive Analytics High performance computing (HPC) is an important domain for solving large scale applications of the social and economical challenges (including health, climate prediction, energy, etc.). Today, the classical environments (HPC platforms) are enriched by management of the huge amount of data produced while running the applications, we also need to be efficient for high performance data analytics (HPDA). This constant progress brings new technologies, new paradigms, new kind resources and new kind of workloads in both HPC and HPDA environments. The Resource and Job Management System (RJMS) is responsible for delivering the adequate computing power to applications on the HPC platforms. The evolution of the platform is a real challenge for the RJMS which has to manage always more heterogeneous resources. New challenges in Resource Management and Job Scheduling in RJMS. Resource Management in HPC has become more complex due to the evolution of the underlying hardware platform that needs to be managed. The RJMS needs to control coarse-grain resources (computing nodes, network, I/O, power) along with fine-grain resources (sockets, cores, network cards parameters, memory and I/O hierarchies, power per components). New type of workloads that are composed by complex workflows needing various types of resources have emerged. In order to obtain good performance, we need to provide an efficient allocation of the jobs submitted to the platform, considering new constraints and possibly multiple objectives. The convergence of HPC and Big Data domains created new paradigms in programming models and runtime systems. The particular characteristics of those applications especially in terms of software environments and data locality/compute can be taken into account by the RJMS in order to better satisfy their needs. Furthermore, efficiently mixing HPC and Big Data workloads for the RJMS without statically reserving specific machines for the Big Data applications is a real challenge. State of the art 1) HPC platforms Resource Management and Job Scheduling in traditional HPC systems is being performed by specialized software called RJMS. This software holds an important position in the HPC stack since it stands between the user workloads (jobs) and the hardware platform (resources). It is responsible for delivering computing power to applications efficiently. More than 2 decades of research and developments in the field has resulted into various open-source and proprietary versions of RJMS that exist today [5,6,8,9,10,11] offering basic and advanced functionalities to deal with HPC specialized platforms and workloads. 2) New types of Workloads (Data Intensive – Big Data - HPDA) We are recently seeing the rise of Big Data [15], a new type of data intensive workloads . Big Data workloads are typically executed using Hadoops' Map Reduce [22] for data processing. Following this approach the data are processed in multiple nodes in parallel taking advantage of data locality. A typical platform specialized for Big Data workloads is Spark [16,17]. 3) New generation Resource Management and Job Scheduling systems Since 2010 new generation schedulers have started to appear Mesos [2], Yarn[4], Omega[3], Fuxi[1] can execute both compute and data intensive workloads based on new types of internal architectures trying to deal with scalability, efficiency and fault-tolerance issues. In this group we can also add Flux [14] which is currently under active development and destined for extreme scale HPC systems.. 4 ) Virtualization, containers and the Cloud The last decade we have witnessed the rise of cloud computing. In this environment the resources are virtualized, dynamically extended and provided as a service on the Internet.Users can construct their own operating system instance and run it in the cloud whenever they need computational resources. Cloud offers almost instant availability of resources. The amount of "computing" can be increased or decreased quickly. Users can instantly scale the number of applications within the Cloud. Based on virtualization job instances can be easily moved to and from similar Clouds . A new important parameter that needs to be added in the equation is the appearance of the new concept of containerization as a light version of virtualization. Docker [20] (Rocket [23] ) along with other types of containerization will certainly play a very important role in different levels of the HPC/HPDA- Cloud environments. However issues such as security need to be treated for robust solutions. Aspects where Machine Learning/Predictive Analytics can improve the way the resources are managed 1) The configuration and tuning of a RJMS can be improved based on analysis and learning upon the logs or the system (such as past usage gantt charts). Parameters such as tuning of throughput, backfilling can be adapted to reflect the real usage of the system. The simulation of the new tuned parameters can show results along with the percentage of expected improvement. The goal is to use techniques of machine learning and predictive analytics to find the best suited configuration of the RJMS with the informations recorded on the cluster. In particular, preference learning is a promising technique that will be investigated during the Ph.D. 2) The data collected from the accounting and profiling of jobs can be used to better understand the needs of the jobs and through analysis and learning to propose adaptations for future submissions. Based on the algorithms studied and evaluated in [1] the goal is to propose extensions to further improve the job scheduling, minimize system fragmentation, improve the performance and energy efficiency of the application. The aims of this application is to have a better understand over the information the RJMS has to deal with in order to optimize his decision and to be able to manage all kind of new resources and constraints. This aspect of multi-objective has been introduced by the academic supervisor and his team in slightly different contexts and will be adapted to the HPC/HPDA workloads. 3) The analysis of accounting/profiling data collected from past job executions can help us identify patterns in the usage of resources such as power consumption, network and I/O. Identifying the different phases in the execution of an application will help us provide adaptations of the system during runtime. Again, machine learning should help us to improve the required extension of existing tools. Summary The goal of this thesis is to give the opportunity to the Ph.D candidate to study the various aspects where the Resource Management and Job Scheduling can be optimized through machine learning techniques. In addition, it will enable the candidate to perform developments and extensions upon open source RJMS along with tools around these middleware. It will also allow the candidate to work in the context of some of the largest existing HPC/HPDA-Cloud environments and enable him to make studies on large scales towards the adoption of new machine learning techniques for improvement of scheduling and resource management. The subject aims at developing efficient tools that will be integrated in actual systems, but they are also based on solid theoretical foundations provided by the academic team. Tasks and tentative schedule: State of the art of resources managers and job management system in HPC and HPDA environment. State of the art of machine learning and its application for resources managers and job management system. Identification of learning metrics. Clustering to identify different kind of execution workloads and application profiling. Study of machine learning. The learning can occurs in several cases: Learning with system logs in order to improve the RJMS configuration for the cluster. Learning with the executions workload to improve the scheduling. We can learn from the application profiling in order to improve the task allocation, the usage of resources (CPU usage for example). Learning from energy consumption data or resource usage (CPU, memory, I/O, network) in order to optimise the resource allocation. Extend or implement data collection mechanism while minimizing the overhead for the RJMS systems. Prototyping and implementation of data analysis technique in order to learn from data to optimize metrics listed in section 5. Experimentation and simulation of learning metrics. Metrics optimisation analyse. Implementation of a simulateur. Large scale experimentations. Algorithm experimentation, prototype experimentation of plugins in real large scale environment.