Les infrastructures de calcul dédiées au calcul intensif sont généralement partagées entre plusieurs utilisateurs. Chaque utilisateur peut y exécuter les charges de travail dont il a besoin pour son activité. Les charges de travail peuvent être de différentes natures et avoir des besoins en termes de ressources de calcul très différents. Afin d’utiliser au mieux les ressources partagées, un système dit d’orchestration a la charge de la gestion de l’infrastructure et de la planification de l’exécution des charges de travail. Un tel système prend en compte les contraintes de chaque charge de travail (type de hardware requis, dépendances avec d’autres charges de travail, licences, etc) et ordonnance l’exécution de sorte à maximiser une ou plusieurs métriques (temps d’exécution, énergie consommée, etc).
La programmation par tâches est un modèle de programmation qui décompose une charge de travail en une série de petites tâches dépendantes les unes des autres. Un programme décrit de la sorte peut être représenté sous la forme d’un graphe de tâches. Avec des charges de travail de ce type, le système d’ordonnancement peut jouer un rôle encore plus avancé en prenant en charge les exécutions concurrentes des différentes applications.
Au cours des 10 dernières années, Aneo a contribué à l’élaboration et l’amélioration de nombreux systèmes d’orchestration de graphes de tâches. L’expérience acquise a conduit au développement du projet ArmoniK. Ce projet vise à fournir une plateforme serverless d’orchestration de graphes de tâches performante et très flexible.
ArmoniK est une plateforme dite « cloud-native » c’est-à-dire qu’elle est conçue pour exploiter les capacités des environnements cloud. L’une des propriétés intéressantes de ces environnements est la capacité de gérer dynamiquement les ressources de calcul à disposition. Ainsi, il est possible à l’exécution de demander davantage de ressources de calcul lorsque cela est nécessaire et inversement de relâcher une part des ressources lorsqu’elles ne sont pas utilisées. Ce concept est appelé l’élasticité et permet d’optimiser les coûts en utilisant uniquement les ressources de calcul nécessaires.
ArmoniK dispose déjà des composants logiciels permettant d’acquérir ou de relâcher des ressources à la demande. En revanche, la mise en place de l’élasticité requiert l’élaboration d’un composant logiciel capable de déterminer quand des ressources supplémentaires sont nécessaires et vice versa. L’élaboration d’une telle stratégie ainsi que son implémentation représente un défi.
Des travaux préliminaires ont permis d’aboutir à l’élaboration d’un modèle mathématique décrivant une stratégie de mise à l’échelle automatique balançant la performance et le coût. Il reste cependant à éprouver ce modèle face aux contraintes du réel. Ce travail doit permettre de valider le modèle en question, de l’améliorer si nécessaire, en vue de son implémentation future au sein d’ArmoniK. L’approche visée pour ce travail est d’implémenter un code de simulation d’ArmoniK et de son environnement cloud et d’y insérer le modèle. Ce code pourra ensuite être utilisé pour évaluer les performances de la stratégie de mise à l’échelle automatique face à des scénarios types (des graphes de tâches caractéristiques des charges de travail exécutées sur ArmoniK). Selon les résultats obtenus, plusieurs pistes sont alors envisageables :
Les missions ou attendus à la fin du stage :
Mots-clés: POO, cloud computing, mathématiques
Bonne connaissance de la programmation orientée objet en Python ou en C++. De bonnes connaissances en mathématiques. Des bases sur les bonnes pratiques de développement (Git, tests unitaires, CI/CD, etc). Des bases en programmation en C# sont un plus. Un esprit d’initiative et une bonne capacité à travailler en autonomie.
Contacts : mtraore@aneo.fr ou recrut@aneo.fr Lieu du stage : Boulogne Billancourt Durée du stage : 6 mois minimum Démarrage : 1er semestre 2025 Niveau d’étude : Master 2 Télétravail : après 3 mois d’ancienneté (voir conditions de notre charte) Gratification stage : 1300 euros par mois