Prototypage d’une application web démonstrative des modèles de ML, Technilog

Stage technique effectué entre le 22/05/2023 et le 01/09/2023 à Saint-Rémy-lès-Chevreuse.

À propos de Technilog

Technilog est une société de services spécialisée dans le développement de solutions logicielles pour l’intégration d’objets industriels connectés ou l’IIOT (« Industrial Internet of Things »). Technilog propose deux solutions logicielles phares : Dev I/O, un logiciel de télégestion et supervision qui unifie et traite les données des équipements connectés, et Web I/O, une plateforme permettant la supervision et le contrôle des objets connectés sur diverses plateformes.

Technilog Logo

Source : Technilog

Contexte

Dans le cadre de l’évolution des solutions IoT proposées par Technilog, une nouvelle version de leur produit phare, Web I/O, a été développée. Cette version intègre des fonctionnalités avancées, notamment des outils d’intelligence artificielle (IA). Pour illustrer ces outils, une application web a été créée afin de démontrer les cas d’utilisation et les capacités de cette nouvelle version.

Réalisations

Une première version de ce site démonstrateur a été réalisée par le stagiaire précédent. Dans cette version, les fonctionnalités de qualification des données et la détection d’anomalies variables ont été implémentées. De plus, l’infrastructure nécessaire pour l’hébergement web de l’application a été mise en place. Mon rôle consistait à ajouter de nouvelles fonctionnalités et à participer aux réunions de conception des pages web :

  • Détection d’anomalies : Reposant sur l’apprentissage machine sur l’historique des données, cette fonctionnalité permet de déterminer si une valeur se comporte de manière inhabituelle.
  • Simulation prévisionnelle : Similairement à la détection d’anomalies, cette fonctionnalité utilise l’apprentissage machine sur l’historique des données. À partir de cet apprentissage et des valeurs précédemment obtenues, on peut déterminer un modèle et anticiper les valeurs futures.
  • Étude d’impact : Permet d’évaluer l’impact que les différentes variables ont entre elles, ainsi que les relations entre ces variables, fournissant une compréhension approfondie des influences mutuelles de ces composants.
  • Amélioration « Quality Of Life » : Ajout de fonctionnalités d’authentification et de mise à jour des modèles.
  • Approfondissement des connaissances : Étude approfondie de divers modèles d’intelligence artificielle.

1 - Implémentation de l'application web

Dans cette partie, nous allons voir les aspects techniques de l’application web. Le framework de développement est « Dash », un framework Python permettant de créer des applications webs.

Introduction à Dash

Dash est un framework Python permettant de créer des applications web interactives. Il fonctionne avec des layouts et des callbacks. Dans notre implémentation, nous utilisons également la bibliothèque Plotly pour la visualisation des données et des graphiques

Logo de l’entreprise “Plotly”

Source : Plotly

Fonctionnement

Le framework fonctionne avec des layouts et des callbacks, ces composants définissent l’apparence et les fonctionnalités de l’application.

Layouts

Les layouts définissent l’apparence de l’application. Ils sont constitués d’éléments HTML classiques ou de composants interactifs issus de modules spécifiques. Un layout est structuré comme un arbre hiérarchique de composants, permettant l’imbrication d’éléments.

Dash est déclaratif, ce qui signifie que tous les composants possèdent des arguments qui les décrivent. Les arguments peuvent varier selon le type de composant. Les principaux types sont les composants HTML (dash.html) et les composants Dash (dash.dcc).

Les composants HTML disponibles incluent tous les éléments HTML standard, avec des attributs comme style, class, id, etc. Les composants Dash génèrent des éléments de haut niveau tels que des graphiques et des sélecteurs.

Callbacks

Les callbacks sont des fonctions automatiquement appelées lorsqu’un composant d’entrée (input) change. Ils affichent le résultat des fonctions vers un composant de sortie (output). Les callbacks utilisent le décorateur @callback pour spécifier les inputs et outputs, correspondant aux id des composants et aux propriétés à mettre à jour. Chaque attribut d’un composant peut être modifié en tant que output d’un callback, en réponse à une interaction avec un composant input. Certains composants, comme les sliders ou les dropdowns, sont déjà interactifs et peuvent être utilisés directement comme inputs.

Exemple de code

Voici un exemple de code illustrant l’utilisation de Dash et Plotly : Documentation

from dash import Dash, html, dcc, callback, Output, Input
import plotly.express as px
import pandas as pd

# Chargement des données
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_unfiltered.csv')

# Initialisation de l'application Dash
app = Dash()

# Définition du layout de l'application
app.layout = html.Div([
    html.H1(children='Title of Dash App', style={'textAlign':'center'}),
    dcc.Dropdown(df.country.unique(), 'Canada', id='dropdown-selection'),
    dcc.Graph(id='graph-content')
])

# Définition du callback pour mettre à jour le graphique
@callback(
    Output('graph-content', 'figure'),
    Input('dropdown-selection', 'value')
)
def update_graph(value):
    # Filtrer les données en fonction de la sélection du pays
    dff = df[df.country == value]
    # Créer un graphique en ligne avec Plotly Express
    return px.line(dff, x='year', y='pop')

# Exécution de l'application
if __name__ == '__main__':
    app.run(debug=True)

2 - Modèles utilisés

Dans cette partie, nous explorerons les aspects techniques des modèles utilisés dans le projet. Bien que je ne participe pas personnellement à leur élaboration

Les modèles de Machine Learning et de Deep Learning utilisés pour les fonctionnalités implémentées incluent des modèles de prévision de séries chronologiques et des modèles auto-encoders.

Prévision de Séries Chronologiques (« Time Series Forecasting »)

Illustration de la prévision de séries chronologiques

Source : Lightning AI

Les modèles de prévision de séries chronologiques permettent de prévoir ou prédire des valeurs futures sur une période donnée. Ils sont développés à partir de l’historique des données pour prédire les valeurs futures.

Une série chronologique est un ensemble de données ordonnées dans le temps, comme des mesures de température prises chaque heure pendant une journée.

Les valeurs prédites sont basées sur l’analyse des valeurs et des tendances passées, en supposant que les tendances futures seront similaires aux tendances historiques. Il est donc crucial d’examiner les tendances dans les données historiques.

Les modèles effectuent des prédictions basées sur une fenêtre d’échantillons consécutifs. Les caractéristiques principales des fenêtres d’entrée incluent le nombre de points horaires et leurs étiquettes, ainsi que le décalage horaire entre eux. Par exemple, pour prédire les 24 prochaines heures, on peut utiliser 24 heures de données historiques (24 points pour les fenêtres avec un intervalle d’une heure).

Auto-encodeur

Illustration d’un auto-encodeur

Source : IBM

Les modèles d’auto-encodeurs sont des réseaux de neurones conçus pour copier leur entrée vers leur sortie. Ils encodent d’abord les données d’entrée en une représentation latente de dimension inférieure, puis décodent cette représentation pour reconstruire les données. Ce processus permet de compresser les données tout en minimisant l’erreur de reconstruction.

Dans notre cas, ces modèles sont entraînés pour détecter les anomalies dans les données. Entraînés sur des cas normaux, ils présentent une erreur de reconstruction plus élevée lorsqu’ils sont confrontés à des données anormales. Pour détecter les anomalies, il suffit de définir un seuil d’erreur de reconstruction.

Conclusions

Ces modèles jouent un rôle crucial dans le projet en permettant des prévisions précises et la détection d’anomalies. Bien que je n’aie pas directement participé à leur développement, ce stage m’a offert une opportunité précieuse d’approfondir mes connaissances en machine learning et de comprendre l’importance de ces modèles dans des applications réelles. Ces outils permettent non seulement d’anticiper les tendances futures, mais aussi d’identifier des comportements inhabituels, contribuant ainsi à une prise de décision plus éclairée et proactive, ce qui est pertinent pour l’IoT.

3 - Travail effectué

Nous allons voir les réalisations faites pendant ce stage et les différentes fonctionnalités qui ont été implémentés

Nous allons voir les réalisations faites pendant ce stage et les différentes fonctionnalités qui ont été implémentées.

Réalisations

Comme indiqué dans la page sommaire, une première version du site a déjà été implémentée par le stagiaire précédent. Dans cette version, les fonctionnalités de qualification des données et de détection d’anomalies variables ont été mises en place. De plus, l’infrastructure nécessaire à l’hébergement web de l’application a été installée. Cette infrastructure est hébergée sur OVHCloud, utilisant une distribution Ubuntu 22.04, et l’application est déployée avec Flask.

Page principale de l'application
Pour ce stage, les fonctionnalités manquantes devront être implémentées, notamment la simulation prévisionnelle, la détection d’anomalies systémiques, et l’étude d’impact. De plus, des améliorations de la qualité de vie (QOL) seront apportées.

3.1 - Simulation Prévisionnelle

Nous allons voir les réalisations faites pour la partie “Simulation Prévisionelle”.

L’implémentation de la prévision s’est faite de la même manière que les autres fonctionnalités : création du layout, définition des callbacks, et mise en place du container associé. Cette approche a été appliquée à toutes les nouvelles fonctionnalités.

Cette fonctionnalité vise à présenter les différents modèles disponibles pour la prédiction de variables telles que la température, la pression, la puissance, etc. Les modèles sont entraînés sur des données provenant de capteurs de Technilog, de clients, ou de sources artificielles. La fonctionnalité comprend deux onglets :

Page de la fonctionnalité Simulation prévisionnelle
  • Onglet « Prévision » : Cet onglet contient le panneau de configuration « Système » et le panneau de modélisation « Modélisation ».
    • Panneau de Configuration : Permet de sélectionner les paramètres de modélisation, tels que le modèle, les variables d’entrée, les variables à afficher, les variables à modéliser, et la période d’étude. Une fois les variables sélectionnées, il est possible d’effectuer la prédiction et de visualiser la modélisation.
    • Panneau de Modélisation : Affiche les graphiques de modélisation pour chaque variable. Les graphiques montrent les données réelles en orange et les prédictions avec incertitude en vert. Des boutons de contrôle permettent de gérer l’animation, si cette option est activée.
Onglet Prévision - Modélisation
  • Onglet « Paramètres » : Contient les paramètres pour l’animation de la modélisation, tels que l’activation de l’animation et le nombre d’images par seconde. Ces options sont sauvegardées et appliquées à tous les modèles de la fonctionnalité.
Onglet paramètres

3.2 - Détection d’anomalies de système

Cette fonctionnalité permet de détecter les anomalies en temps réel et dans les données historiques.

Pour la détection d’anomalies de système, trois onglets sont disponibles : « Temps réel », « Historique », et « Paramètres ». Les onglets « Temps réel » et « Historique » correspondent à différents cas d’utilisation de la fonctionnalité.

Page de la fonctionnalité - Détection d’anomalies de système

Onglet « Temps réel »

Dans l’onglet « Temps réel », on trouve les panneaux de configuration « Système », de modélisation « Modélisation », et de bilan « Synthèse ».

  • Panneau de Configuration : Permet de sélectionner le modèle, les variables modélisées (variables surveillées pour déterminer les anomalies), les variables affichées (variables visibles dans le panneau de modélisation), et la période de mesure (dates de début et de fin). Des valeurs par défaut existent en fonction du modèle sélectionné.

  • Panneau de Modélisation : Affiche les graphiques des valeurs sélectionnées avec leurs modélisations. Si le seuil d’anomalie est activé dans l’onglet « Paramètres », un graphique du score d’anomalie est également affiché, mettant en évidence les zones où le score dépasse le seuil.

Page de la fonctionnalité - Détection d’anomalies de système - en temps réel modelisation
  • Panneau de Synthèse : Fournit une description des anomalies sur la période donnée et la contribution des variables modélisées à ces anomalies.
Page de la fonctionnalité - Détection d’anomalies de système - en temps réel synthèse

Onglet « Historique »

Dans l’onglet « Historique », on retrouve également les panneaux de configuration « Système », de modélisation « Modélisation », et de bilan « Synthèse ».

  • Panneau de Configuration : Similairement dans l’onglet « Temps réel » avec les mêmes choix. Permet de choisir le modèle, les variables modélisées, et les variables affichées. Contrairement au mode « Temps réel », il n’y a pas de sélection de période, car l’analyse couvre toute la période des données disponibles.

  • Panneau de Modélisation : Affiche les résultats en fonction des paramètres sélectionnés. L’utilisateur peut sélectionner une période spécifique en cliquant et en maintenant sur la modélisation obtenue.

Page de la fonctionnalité - Détection d’anomalies de système - Historique modelisation
  • Panneau de Synthèse : Affiche les résultats des anomalies pour la période sélectionnée, avec des descriptions des anomalies et la contribution des variables modélisées.
Page de la fonctionnalité - Détection d’anomalies de système - Historique synthèse

Onglet « Paramètres »

Page paramètre - Détection d’anomalies de système
  • Anomalie : Permet d’activer le seuil d’anomalie et de définir sa valeur. Un histogramme des scores d’anomalie aide à déterminer la valeur optimale du seuil.

  • Animation : Permet d’activer ou de désactiver l’animation et de choisir le nombre d’images par seconde.

3.3 - Étude d’impact

Cette fonctionnalité permet d’analyser l’impact des variables et leurs influences mutuelles.

Cette fonctionnalité permet de visualiser l’impact d’une variable, c’est-à-dire les influences des variables entre elles. Elle permet ainsi d’observer les conséquences de la modification d’une ou plusieurs variables sur les autres.

L’interface se compose uniquement de l’onglet « Étude d’impact » avec les panneaux « Modélisation » et « Bilan ». Dans le panneau « Modélisation », on trouve les sous-panneaux « Sélection de l’étude d’impact » et « Impact des variables ».

Page de la fonctionnalité - Étude d’impact

Panneau de Sélection

Dans le panneau de sélection, l’utilisateur choisit l’étude d’impact souhaitée. Une fois l’étude sélectionnée, la modélisation s’affiche dans le panneau de modélisation.

Panneau de Modélisation

La modélisation de l’étude d’impact est présentée en deux parties :

  • Variables Extérieures : Ce sont les variables hypothèses qui influencent les variables impactées. Elles sont ajustées via des curseurs (sliders).
  • Variables Impactées : Ce sont les variables qui changent en fonction des variables extérieures/hypothèses.

À chaque modification des valeurs des variables extérieures, les graphiques des variables impactées sont régénérés. Les graphiques de modélisation sont similaires à ceux de la fonctionnalité « Modélisation prévisionnelle », avec quelques différences : pour les graphiques des variables hypothèses, la partie du graphique avec prédiction et incertitude est remplacée par une section représentant les valeurs fixées par les curseurs.

Page de la fonctionnalité - Étude d’impact - Modélisation

Panneau de Bilan

Dans le panneau de bilan, différents graphiques sont affichés en fonction de l’étude choisie. Ces graphiques mettent en évidence les liens et les impacts entre les variables. Lorsque les valeurs des curseurs sont modifiées, les résultats des graphiques changent en conséquence.

Page de la fonctionnalité - Étude d’impact - Bilan

Comparaison avec d’autres fonctionnalités

Contrairement à d’autres fonctionnalités, il y a moins d’options disponibles (pas de choix de sélection pour la date/période ou les variables). Dans le contexte d’une application web démonstative, ces choix sont déterminés par le fichier de paramètres de l’étude.

3.4 - Mise à jour, QOL (« Qualities Of Life »)

Cette fonctionnalité permet d’ajouter et de mettre à jour les modèles disponibles, les fichiers de paramétrage, les jeux de données, et les fichiers de valeurs par défaut.

Mise à jour

La mise à jour permet d’ajouter et de mettre à jour les modèles disponibles, les fichiers de paramétrage, les jeux de données, et les fichiers de valeurs par défaut.

Page de la fonctionnalité - Détection d’anomalies de système

Onglets

Il y a trois onglets principaux :

  1. Modèles : Permet de mettre à jour, d’ajouter, et de supprimer les modèles, ainsi que les études d’impact.
  2. Jeux de données : Permet de mettre à jour, d’ajouter, et de supprimer des jeux de données.
  3. Préconfiguration : Permet de modifier les valeurs par défaut des modèles pour leurs applications.

Onglet « Modèles »

  • Panneau Principal :

    • Un menu déroulant pour sélectionner le modèle.
    • Une zone pour déposer les fichiers nécessaires (modèle, hyperparamètres, configuration neuronale).
    • Une checklist pour sélectionner les applications associées au modèle.
    • Trois boutons : validation, réinitialisation, et suppression.
  • Mise à jour d’un Modèle :

    1. Sélectionner le modèle à mettre à jour dans le menu déroulant.
    2. Déposer les nouveaux fichiers de configuration.
    3. Sélectionner les applications associées.
    4. Confirmer avec le bouton « Valider ».
  • Ajout d’un Modèle :

    1. Sélectionner « Nouveau modèle » dans le menu déroulant.
    2. Déposer les fichiers nécessaires.
    3. Sélectionner les applications associées.
    4. Confirmer avec le bouton « Valider ».
  • Suppression d’un Modèle :

    1. Sélectionner le modèle à supprimer.
    2. Confirmer avec le bouton « Supprimer ».
    3. Une boîte de dialogue demandera confirmation.
  • Étude d’Impact :

    • Un menu déroulant pour sélectionner l’étude.
    • Une zone pour déposer le fichier de configuration.
    • Trois boutons : validation, réinitialisation, et suppression.

Onglet « Jeux de données »

Page de la fonctionnalité - Détection d’anomalies de système - Jeux de données
  • Panneau de Configuration :

    • Un menu déroulant pour sélectionner le jeu de données.
    • Une zone pour déposer le fichier de données.
    • Deux boutons : validation et suppression.
  • Modification/Ajout d’un Jeu de Données :

    1. Sélectionner le jeu de données à modifier ou « Nouveau jeu de données ».
    2. Déposer le fichier de données.
    3. Confirmer avec le bouton « Valider ».
  • Suppression d’un Jeu de Données :

    1. Sélectionner le jeu de données à supprimer.
    2. Confirmer avec le bouton « Supprimer ».

Onglet « Préconfiguration »

Page de la fonctionnalité - Détection d’anomalies de système - Preset
  • Panneau de Configuration :

    • Un menu déroulant pour sélectionner le modèle.
    • Une checklist pour sélectionner le cas d’application.
    • Sélection des variables à afficher et à modéliser.
    • Sélection de la période d’étude.
    • Un bouton de validation « Définir valeur par défaut ».
  • Configuration des Valeurs par Défaut :

    1. Sélectionner le modèle et le cas d’application.
    2. Configurer les paramètres de modélisation (variables affichées, modélisées, période).
    3. Confirmer avec le bouton « Définir valeur par défaut ».

Types de Fichiers

  • Modèles : Fichiers .tpkl pour les modèles et .json pour les hyperparamètres.
  • Études d’Impact : Fichier Python avec les configurations pour l’étude.
  • Jeux de Données : Fichiers .csv contenant les informations utilisées par les modèles pour les prédictions.
  • Préconfigurations : Fichier .json avec les valeurs associées aux modèles et à la fonctionnalité utilisée.