Sujets de stage / TER / POM

Prédiction de suites temporelles

En collaboration avec le CC-IN2P3.

Le Centre de Calcul de l’Institut national de physique nucléaire et de physique des particules (CC-IN2P3) est une unité de service et de recherche du CNRS. Classé parmi les grandes infrastructures françaises de recherche, il a pour vocation de fournir des moyens de calcul et de stockage de données aux chercheurs impliqués dans les expériences de physique corpusculaire.

Contexte

Le CCIN2P3 collecte tous les jours un milliard de métriques : données de performances du kernel Linux, compteurs applicatifs, jauges hygrométriques de salle informatique pour n'en citer que quelques-unes. Certaines de ces données temporelles sont surveillées régulièrement et des notifications informent les administrateurs de services lorsque des seuils prédéfinis sont dépassés. La définition de ces limites est parfois arbitraire, et ne prend pas en compte les spécificités de chaque indicateur : variance, saisonnalité, etc. En outre, aucune prédiction n'est réalisée, et la notification ne prend donc pas compte la date prévisionnelle de la panne. Le but à terme est d'implémenter plusieurs modèles de prédiction des données, correspondant à des comportements réels de métriques dans le temps. L'un de ces modèles est le triple lissage exponentiel ou “Holt Winters Forecasting”, qui couvre plusieurs cas de figure.

Sujet

Le travail proposé consiste en l'implémentation de l'algorithme de triple lissage exponentiel formalisé en 1957 par Holt [1] et en 1960 par Winters [2]. L'implémentation devra être réalisée en Clojure, qui est un langage de programmation fonctionnelle. Le choix de ce LISP est motivé par les impératifs de production, dont l'un est l'utilisation du logiciel Riemann dans l'architecture de collecte des métriques au CCIN2P3.

Prérequis

  • Connaissance voire notions de programmation fonctionnelle
  • Autonomie de travail
  • La connaissance de Java est un plus

Références

[1] Holt, C. E. (1957). Forecasting seasonals and trends by exponentially weighted averages (O.N.R. Memorandum No. 52). Carnegie Institute of Technology, Pittsburgh USA. https://doi.org/10.1016/j.ijforecast.2003.09.015
[2] Winters, P. R. (1960). Forecasting sales by exponentially weighted moving averages. Management Science, 6, 324–342. https://doi.org/10.1287/mnsc.6.3.324

Reconnaissance automatisée de motifs dans des messages non structurés

En collaboration avec le CC-IN2P3.

Le Centre de Calcul de l’Institut national de physique nucléaire et de physique des particules (CC-IN2P3) est une unité de service et de recherche du CNRS. Classé parmi les grandes infrastructures françaises de recherche, il a pour vocation de fournir des moyens de calcul et de stockage de données aux chercheurs impliqués dans les expériences de physique corpusculaire.

Contexte

Le CCIN2P3 collecte tous les jours 100 millions de journaux système. Ces messages non structurés représentent une mine d'informations sur les deux salles informatiques contenant de milliers de serveurs Linux, appareillages électriques et climatiques, sans parler des dizaines de milliers de composantes logicielles et matérielles en faisant partie. Ces événements sont analysés par des algorithmes de comparaison de motifs, enrichis de métadonnées, puis routés vers divers systèmes, dont l'infrastructure responsable de la notification des personnels, en cas de panne ou de dysfonctionnement. Actuellement la base de motifs est gérée manuellement, ce qui pose un problème de scalabilité et de maintenance : à chaque nouvelle mise à jour logicielle, les événements changent potentiellement et les motifs existants doivent aussi être revus. Seuls 25% des messages générés par les deux salles informatiques correspondent à une entrée dans la base des motifs. En d'autres termes, 75% des événements sont inconnus, et contiennent potentiellement des informations qui nous échappent.

Sujet

Le travail proposé consiste en l'implémentation d'un algorithme de reconnaissance de motifs à partir d'un flux de messages. Le logiciel SEQUENCE implémenté en langage Go semble répondre à ce besoin, mais le projet est orphelin. Dans la mesure où il est opensource, il s'agit d'évaluer le logiciel et de l'adapter aux besoins du CCIN2P3. Il sera notamment demandé de l'intégrer au workflow du logiciel responsable de la gestion des “logs” à savoir syslog-ng. Si toutefois SEQUENCE s'avère insuffisant ou mal adapté, il sera nécessaire de réécrire entièrement une implémentation.

Prérequis

  • Connaissance voire notions de Golang souhaitée, mais non obligatoire
  • Autonomie de travail
  • Aisance dans le workflow de contributions github
  • Connaissance de syslog-ng est un plus

Interface Web pour gestionnaire de flux

L'équipe BD du LIRIS développe actuellement un système de recueil, simulation, stockage et rejeu de flux de données. Un serveur d'administration permet de gérer le système via une interface REST. L'objectif de ce POM consiste à développer un client Web pour ce serveur d'administration. Après avoir développé une partie administrative classique, on s'attardera à développer des interfaces de visualisation des différentes métriques liées aux flux (volumétrie, vitesse) ou à la plateforme (e.g. IO/s, espace libre). Le framework Angular sera privilégié pour le développement de cette interface. L'acquisition des métriques côté serveur pourra également faire l'objet de développements particulier dans ce POM.

Sauvegarde et rejeu de flux de données

L'équipe BD du LIRIS développe actuellement un système de recueil, simulation, stockage et rejeu de flux de données. L'objectif de ce POM consiste à faire évoluer la brique de stockage de ce système. Cette brique est actuellement implémentée en Scala, un langage fonctionnel compilant sur la JVM et utilise une base de données Cassandra pour le stockage des messages. Les évolutions envisagées pour cette brique sont les suivantes:

  • Mutualisation du déploiement de la brique de stockage pour plusieurs flux
  • Autodéploiement d'instances de briques de stockage pour faire face à une augmentation de débit sur un ou plusieurs flux
  • Changement “en ligne” (sans redémarrage) de la configuration d'un ou plusieurs flux
  • Réglage automatisé (auto-tuning) de la répartition des données au sein du cluster Cassandra
  • Mise en place un benchmark permettant de mesurer la performance de la plateforme sur un déploiement particulier

Si le temps le permet, on pourra faire évoluer la brique de rejeu du système en la portant vers le langage RUST (elle est actuellement codée en Scala), ce qui permettrait de s'affranchir des aléas du ramasse-miettes (garbage collector) de la JVM.

Développement d'une version serveur de l'outil AMC

AMC est un outil de gestion et de correction automatisée de QCM papier. Bien qu'il s'agisse d'un outil fonctionnel, il ne tourne que sur des plateformes Unix et son installation s'avère parfois pénible. L'object de ce POM consiste à développer une version serveur de cet outil. Il ne s'agit pas de le réimplémenter complètement, mais plutôt de le rendre facilement accessible à un ensemble d'utilisateurs. L'outil dispose d'une interface en ligne de commande et c'est donc l'interface graphique qui sera portée vers une version Web. Un premier prototype a été développé en 2017-2018 et pourra servir de base pour ce POM. Les technologies envisagées sont Java/Spring côté serveur et Angular côté client.