Amélioration de l'orchestrateur de tâches de calcul ArmoniK (H/F)

L’objectif du stage est d’explorer différentes pistes d'évolution d’

ArmoniK est un système hybride entre un orchestrateur HTC/HPC et un “runtime HPC par tâche”. Développé conjointement avec AWS et Crédit Agricole, ArmoniK permet d’exécuter des graphes de tâches sur des cluster Kubernetes. Les graphes de tâches peuvent être complétés au fur et à mesure de l’exécution aussi bien depuis le code de soumission des tâches mais aussi directement depuis les tâches elles-même. Pensé pour être élastique et résilient, ArmoniK permet de faire varier le nombre de nœuds et offre des services de monitoring à l'échelle de la tâche. ArmoniK est utilisé en production et permet d’exécuter des milions de tâches sur des milliers de nœuds dans AWS. Il sera mis en production sur une infrastructure on-premises début 2023.

Afin de continuer à améliorer ArmoniK et permettre son usage pour des applications plus exigentes, nous souhaitons apporter un certain nombre d’améliorations. En fonction des compétences et des appétences du stagiaire, il sera amené à travailler sur un ou plusieurs sujets parmi les suivants.

  • Restructuration de la gestion des dépendances : ArmoniK fonctionne aujourd’hui en vérifiant avant le démarrage d’une tâche que ses prérequis sont valides. La disponibilité de l’ensemble des données d’entrées fait partie des prérequis. Afin de réduire le temps de vérification, nous souhaitons changer d’approche et garantir par construction que si une tâche est ordonnancée, ses données d’entrées sont disponible. L’objectif du stage sera de concevoir et de mettre en œuvre la nouvelle stratégie de gestion de dépendances.
  • Mutualisation des services d’orchestration sur chaque nœud : Selon la configuration utilisée, ArmoniK peut mettre en œuvre jusqu'à un service d’exécution par cœur. Aujourd’hui, chaque service d’exécution dispose de son service d’orchestration. Afin de réduire les resources consommées et améliorer les performances, nous souhaitons mutualiser les services d’orchestration. Pour cela, il conviendra de concevoir un système d'élection du service maître et de développer la prise en charge de plusieurs services d’exécution. Comme le nombre de cœurs alloués au calcul peut varier, il conviendra de mettre en place les mécanismes permettant de transférer le statut de service maître. L’objectif du stage sera de mettre en place le système d'élection, de l’intégrer à ArmoniK et de concevoir les tests de résilience associés.
  • Etat des lieux et mise en œuvre de caches de données P2P : ArmoniK s’appuie sur un service de stockage distant des nœuds de calcul pour stocker les données d’entrées et de sortie des tâches. ArmoniK recouvre dans la mesure du possible les calculs d’une tâches et les transferts des données des tâches précédente et suivante. Afin de réduire les temps de transferts, nous souhaitons mettre en place un cache de données sur chaque nœud. Afin de bénéficier au mieux de l'élasticité de l’infrastructure, ce cache fonctionnera idéalement sur une technologie P2P. L’objectif du stage sera d’effectuer un état de l’art et de benchmarker différentes solutions avant de l’intégrer à ArmoniK.
  • Execution paresseuse de tâches : Dans certains cas, il est intéressant de soumettre de façon standardisée un graphe de tâche puis de n’exécuter à la demande que les tâches requises pour l’obtention de certains résultats. L’objectif du stage sera d'étudier et de tester les différentes possibilités de mise en œuvre. La ou les meilleures approches seront intégrées dans ArmoniK.
  • Intégration sur un autre fournisseur cloud : ArmoniK est conçu pour fonctionner dans n’importe quel environnement Kubernetes. Cependant afin de tirer le meilleur profit des offres cloud, il convient de faire un effort d’intégration supplémentaire. L’objectif du stage sera d’intégrer ArmoniK avec Azure ou GCP. Pour cela, les différents services managés utilisables devront être benchmarkés puis intégrés.
  • Etat des l’art des stratégies d’ordonnancement applicables : L’algorithme d’ordonnancement actuel d’ArmoniK est globalement basé sur un systèmes de FIFOs par priorités. Aucune stratégie d’optimisation permettant de minimiser la quantité de communication n’a encore été mise en œuvre. L’objectif de ce stage sera d'établir un état de l’art des stratégies d’ordonnancement applicables au contexte particulier d’ArmoniK et ses nombreuses inconnues. Selon l'état d’avancement, des expérimentations seront à prévoir. Ce stage pourra déboucher sur une thèse.

Note : bien que de nombreux sujets de stage soient proposés autour d’ArmoniK, nous n’accueuillerons pas plus de quatre stagiaires ArmoniK simultanéement au sein de l'équipe. Les sujets seront priorisés en fonction des compétences et appétences des candidats.

Mots-clés : Programmation distribuée par tâches, Kubernetes, logiciel open-source

Pré-requis : Programmation orientée objet, programmation parallèle et/ou distribuée, profiling de performances

Compétences optionnelles : Kubernetes, cloud, Terraform, C#, CI/CD

Contacts :

Candidater via mail sur recrut’at’aneo.fr

  • Florian Lemaitre - flemaitre’at’aneo.fr
  • Jérôme Gurhem - jgurhem’at’aneo.fr
  • Lilia Ziane Khodja - lzianekhodja’at’aneo.fr

Lieu du stage : Boulogne Billancourt

Référence :