E-book

Chapitre 2

Utiliser l’IA pour concevoir et déployer des algorithmes embarqués


En appliquant une approche traditionnelle du développement d’algorithmes, vous écrivez un programme qui traite des entrées pour produire un résultat souhaité. Il arrive toutefois que les équations soient trop complexes pour être dérivées à partir des principes fondamentaux ou trop gourmandes en calculs pour être déployées, ou qu’une mesure souhaitée soit impossible ou trop coûteuse à implémenter concrètement.

Dans ces cas, envisagez plutôt de créer un modèle d’IA. Les algorithmes d’IA embarqués peuvent s’avérer utiles dans les domaines suivants :

  • Systèmes de contrôle
  • Maintenance prédictive
  • Systèmes avancés d’aide à la conduite (ADAS)
  • Planification de trajectoire
  • Traitement du langage naturel
  • Traitement du signal
  • Capteurs virtuels
  • Détection d’objets
section

Créer un capteur virtuel basé sur l’IA : exemple de l’estimation de l’état de charge d’une batterie

Les batteries lithium-ion sont aujourd’hui omniprésentes, qu’il s’agisse d’accessoires connectés, de téléphones mobiles, d’ordinateurs portables, de véhicules électriques ou de réseaux intelligents. Les systèmes de gestion de batterie (BMS) assurent leur fonctionnement sûr et efficace. L’une des principales tâches des BMS consiste à estimer l’état de charge (SOC).

Pour diverses raisons, il n’est pas physiquement possible de concevoir un capteur déployable pour mesurer directement l’état de charge. Il s’agit d’un défi commun à de nombreux systèmes dans tous les domaines, et pas seulement concernant les batteries.

Dans de nombreuses applications, les capteurs peuvent être :

  • Imprécis
  • Onéreux
  • Lents
  • Bruyants
  • Fragiles
  • Peu fiables
  • Physiquement impossibles

Au lieu d’un capteur physique, vous pouvez créer un capteur virtuel.

Un graphique illustre une correspondance étroite entre les données recueillies auprès d’un moteur et la sortie d’un capteur virtuel basé sur l’IA.

Émissions d’un moteur réel comparées à la sortie d’un capteur virtuel basé sur l’IA qui estime les émissions de NOX. (Crédit : Renault)

Il peut s’avérer tentant d’estimer l’état de charge en utilisant un filtre de Kalman étendu (EKF). Un EKF peut être extrêmement précis, mais nécessite de disposer d’un modèle mathématique non linéaire d’une batterie, ce qui n’est pas toujours disponible ou réalisable. Un filtre de Kalman peut aussi se montrer gourmand en ressources de calcul et, si un état initial est erroné ou si le modèle n’est pas correct, il peut produire des résultats inexacts.

Une autre solution consiste à développer un capteur virtuel en utilisant l’IA. L’IA pourrait être capable d’une meilleure généralisation qu’un filtre Kalman et fournir des résultats précis si elle est entraînée avec les bonnes données.

Un modèle d’IA d’état de charge (SOC) prend en entrée la tension, le courant et la température et donne en sortie une estimation du niveau de charge.

Pour créer un capteur virtuel basé sur l’IA, vous aurez besoin de données pour entraîner votre modèle d’IA. En collectant les relevés de la batterie dans un environnement contrôlé en laboratoire, vous pouvez calculer avec précision les valeurs d’état de charge en intégrant les courants (une technique appelée comptage de Coulomb).

Cette méthode est simple et peu gourmande en ressources de calcul. Pourquoi ne pas l’utiliser dans votre BMS pour estimer l’état de charge ? Elle est sujette aux erreurs si elle n’est pas réalisée dans un environnement de laboratoire, où le courant peut être mesuré avec précision, et n’est donc pas un bon choix pour être utilisée dans votre BMS afin d’estimer l’état de charge. Il s’agit toutefois d’un moyen efficace d’obtenir les données nécessaires à la construction d’un capteur virtuel robuste.

Une fois que vous avez collecté les données d’entrée/de sortie relevées avec précision, vous pouvez utiliser ce jeu de données pour entraîner un modèle de capteur virtuel basé sur l’IA qui peut être déployé dans le cadre d’un système de gestion de la batterie.

Pour créer et intégrer un modèle d’IA dans Simulink, trois options s’offrent à vous :

1. Entraîner le modèle dans le framework de Machine Learning dans MATLAB.

2. Importer le modèle depuis TensorFlow ou PyTorch.

3. Entraîner le modèle dans le framework de Deep Learning dans MATLAB.

Le modèle d’IA a l’avantage d’être entraîné directement sur des données mesurées. Les données d’apprentissage saisissent les relations complexes entre l’état de charge et les entrées telles que le courant, la tension, la température et la moyenne mobile du courant et de la température, ce qui construit l’intelligence du modèle.

Le modèle d’IA peut ainsi être à la fois plus rapide et plus précis qu’un modèle mathématique basé sur les principes fondamentaux.

Une fois que vous avez investi dans la création d’un jeu de données d’apprentissage de haute qualité, vous pouvez utiliser MATLAB® ou d’autres outils pour créer plusieurs modèles d’IA en utilisant différentes techniques de Machine Learning ou de Deep Learning. Vous pouvez déterminer lequel des modèles est le plus performant en les intégrant dans Simulink et en les évaluant l’un par rapport à l’autre.

Remarque sur l’obtention des données

Il est très difficile de collecter de bonnes données d’apprentissage. Dans le domaine de l’IA, les jeux de données publics ont stimulé la recherche. En utilisant les mêmes jeux de données, les chercheurs peuvent facilement faire des comparaisons et réaliser des benchmarks sur différentes techniques d’IA. Les jeux de données et modèles partagés facilitent la reproductibilité et renforcent la confiance dans l’IA.

Dans l’industrie, cependant, les données proviennent souvent de jeux de données soigneusement sélectionnés, parfois produits par de véritables bancs de tests spécialisés ou par des simulations complexes haute fidélité basées sur les principes fondamentaux. Ces expériences peuvent s’avérer coûteuses et chronophages, mais un modèle d’IA bien entraîné peut valoir l’investissement initial. Les ingénieurs disposant de l’expertise métier nécessaire peuvent apporter une valeur ajoutée lors de la création de modèles d’IA en concevant des expérimentations qui produisent des données d’apprentissage de haute qualité.

section

Simuler et tester un capteur virtuel basé sur l’IA

Une fois que vous avez entraîné vos modèles d’IA, vous pouvez les intégrer dans Simulink et les tester. À l’aide de Simulink, vous pouvez identifier le modèle d’IA le plus performant et déterminer s’il surpasse d’autres alternatives, comme l’approche EKF n'utilisant pas l’IA. Comme indiqué précédemment, le filtre de Kalman nécessite un modèle de batterie interne, qui peut ne pas être disponible.

Cet exemple comprend un EKF et trois modèles d’IA, tous entraînés avec les mêmes données, mais utilisant des approches d’IA différentes :

  • Arbre de régression avec une arborescence fine : approche de Machine Learning qui construit un arbre de valeurs pour des indicateurs de plus en plus spécifiques utilisés pour interpréter les données d’entrée. Un arbre de régression avec une arborescence fine comporte de nombreuses petites feuilles pour une fonction de réponse très flexible.
  • Réseau à propagation avant (DL-FFN) : système adaptatif de Deep Learning qui apprend en utilisant des nœuds interconnectés qui regroupent ou classent les entrées. Au cours de l’inférence, les informations circulent en avant dans le réseau, jamais en arrière.
  • Réseau LSTM (Long Short-Term Memory) : système adaptatif de Deep Learning utilisant des nœuds interconnectés qui se sert de la rétroaction à travers le réseau pour traiter non seulement des entrées uniques, mais aussi des séquences d’entrées interdépendantes.
 Une capture d’écran Simulink présentent quatre blocs, qui reçoivent les mêmes entrées et produisent des sorties différentes, afin de les comparer.

Intégrer des modèles de capteurs virtuels (EKF, ML, DL-FFN et DL-LSTM) dans Simulink pour comparer leurs performances. Les modèles prennent en compte la tension, le courant et la température, et estiment l’état de charge de la batterie.

Pour évaluer les modèles, effectuez des comparaisons simultanées côte à côte dans Simulink. Visualisez et mesurez la précision et l'ajustement des sorties de chaque modèle par rapport au jeu de données de validation. Grâce à ces informations, vous pouvez déterminer si vos modèles répondent aux exigences de précision avant leur déploiement sur du hardware système.

Capture d’écran de Simulink avec un graphique des sorties des quatre modèles de capteurs virtuels. Les lignes se chevauchent, mais celle des sorties du modèle E K F présente le plus gros écart. La ligne correspondant aux sorties produites par le M L s’écarte également des autres.

Tracer une représentation des sorties des quatre modèles de capteurs virtuels sur un seul graphique avec Simulink pour comprendre les différences de précision.

Vous pouvez également utiliser vos modèles d’IA avec d’autres algorithmes pour une simulation de niveau système. Par exemple, vous pouvez exécuter votre modèle d’IA dans le cadre d’une simulation de système global qui comprend le sous-système BMS fonctionnant avec d’autres sous-systèmes, tels que le moteur ou la transmission. Vous pouvez également tester et affiner vos modèles et d'autres composants intégrés pour vous assurer de leur interopérabilité et de leur conformité aux exigences du système.

Schéma d’un système de gestion de batterie dans Simulink montrant les entrées et les sorties interconnectant trois blocs : machine à états, estimation de l’état de charge et logique d’équilibrage.

Utiliser les bibliothèques de blocs de Statistics and Machine Learning Toolbox™ et Deep Learning Toolbox pour apporter les modèles d’IA du bloc SOC_Estimation dans Simulink afin d’effectuer des tests au niveau système.

section

Déployer un modèle d’IA embarqué

L’étape suivante consiste à tester votre modèle d’IA sur le hardware sur lequel il sera finalement déployé. Au cours de cette étape, vous pouvez évaluer les performances du modèle en conditions réelles.

Utilisez les outils de génération de code MATLAB et Simulink afin de générer du code C/C++ sans bibliothèque pour les réseaux de Deep Learning ou les modèles de Machine Learning. Déployez ce code sur votre processeur pour tester son fonctionnement dans le cadre d’un test PIL (Processor-in-the-Loop) où le processeur est interconnecté avec le système physique simulé (développé avec des composants Simscape™ et Simscape Electrical™), qui correspond dans ce cas à la dynamique simulée de la batterie.

Schéma d’un modèle d’I A transformé en code, déployé sur une puce et testé dans un environnement de test simulé.

Générer le code de votre modèle d’IA et le déployer sur le processeur afin d’effectuer des tests Processor-in-the-Loop.

Une fois les tests PIL concluants, le modèle est prêt à être déployé sur du hardware de production. Ce hardware assurera l’exécution du système de gestion de la batterie dans le véhicule.

Diagramme de processus d’un modèle d’IA transformé en code, déployé sur une puce et testé dans un véhicule.

Générer le code de votre modèle d’IA et le déployer sur du hardware pour le tester dans un véhicule.

section

Évaluer la performance

Les tests PIL révèlent les compromis de performance qui seront pertinents pour votre système réel. Par exemple, bien que le modèle d’arbre de régression à arborescence fine ajoute des possibilités d’interprétation qui peuvent faciliter le dépannage, sa taille et sa précision peuvent être inadaptées aux exigences du projet. Dans ce cas, un réseau à propagation avant pourrait être une meilleure option.

Voici d’autres attributs pertinents :

  • La vitesse d’inférence, qui est le temps nécessaire au modèle d’IA pour calculer une prédiction
  • La vitesse d’apprentissage, qui est le temps nécessaire pour entraîner le modèle d’IA à l’aide de vos données d’apprentissage
  • L’effort de prétraitement, car certains modèles nécessitent le calcul de caractéristiques supplémentaires, comme les moyennes mobiles, pour obtenir des informations prédictives sur le passé
Tableau des compromis de performance, avec quatre colonnes pour chaque modèle, comparant la vitesse d’apprentissage, l’interprétabilité, la vitesse d’inférence, la taille du modèle et la précision. Par exemple, le modèle DLL STM présente une faible vitesse d’inférence, une grande taille de modèle et une grande précision.

Comparaison des attributs importants pour différentes techniques de modélisation de capteurs virtuels. Le modèle basé sur un réseau Deep Learning à propagation avant (DL-FFN) offre une grande vitesse d’inférence et une grande précision, mais il nécessite un effort de prétraitement, il est plus long à entraîner et n’est pas interprétable.

section

Compresser un modèle d’IA

La compression de modèles est un compromis qui nécessite d'analyser, comprendre, itérer et optimiser. Mais pour les ingénieurs en logiciels embarqués, c’est souvent une nécessité, car un modèle d’IA aura parfois une empreinte qui dépasse les contraintes de mémoire du hardware.

Les ingénieurs étudient les moyens de réduire l’empreinte des modèles à l’aide de techniques telles que l’élagage, la quantification et les techniques de conversion en virgule fixe.

Une nouvelle méthode de réduction de la taille du modèle dans Deep Learning Toolbox™ compresse un réseau de Deep Learning en utilisant la projection. Cette technique permet de faire un compromis entre la taille du modèle, la vitesse d’inférence et la précision. Pour cet exemple, la précision n’a pas été réduite de façon significative. La compression utilisant des couches projetées a permis de réduire l’empreinte mémoire de 91 % et de doubler la vitesse d’inférence.

Un tableau compare les modèles D L L S T M non compressés et compressés. Le modèle compressé présente une plus grande vitesse d’inférence et une taille beaucoup plus petite que le modèle non compressé, mais il n’a pas perdu en précision.

La compression peut transformer un modèle extrêmement précis, mais volumineux et lent, en un modèle plus petit et beaucoup plus rapide sans perdre en précision.

section

Revue d'un BMS conçu par un client pour un véhicule électrique

Une entreprise, Gotion, spécialiste des technologies innovantes de stockage d’énergie, souhaitait créer un modèle de réseau de neurones pour estimer l’état de charge pendant la recharge des véhicules électriques. Le modèle devait être précis avec une marge d’erreur de 3 % et présenter une empreinte suffisamment petite pour être utilisable en production. Le modèle devait également être vérifié lors d’un essai à bord d’un véhicule.

Deep Learning Toolbox a offert à l’équipe une approche low-code pour entraîner un réseau de neurones avec des données historiques sur la charge des cellules. Elle a utilisé un workflow itératif pour simuler, améliorer et valider le modèle. Avec Simulink, les ingénieurs ont intégré et testé le modèle avec le reste du système. Pour confirmer que le modèle répondait aux exigences de précision pendant la simulation, ils ont utilisé Simulink Test™.

Une fois satisfaits des performances du modèle, ils ont généré automatiquement le code pour les tests HIL et les tests à bord des véhicules.

De leur utilisation de MATLAB et Simulink, les ingénieurs ont dégagé ces avantages clés :

  • Intégration de l’IA dans leur workflow de vérification et de validation existant à l’aide de Requirements Toolbox, Deep Learning Toolbox, Simulink, Embedded Coder et Simulink Test
  • Exécution du workflow complet, de la capture des exigences au développement du modèle, en passant par l’intégration système, le déploiement du modèle et le hardware de production
  • Assurance, grâce à la simulation et aux tests HIL, que le modèle répondra aux exigences de précision avant le déploiement
  • Code généré automatiquement à partir du réseau de neurones avec une faible empreinte (< 2 KB ROM, < 100 B RAM)
Quatre graphiques montrent que l’état de charge cible et l’état de charge estimé sont similaires dans différentes conditions telles que la variation de la tension, du courant et de la température.

Simulink Test permet de tester la précision au niveau système dans toute une série de conditions, y compris les plus difficiles à simuler dans des tests en conditions réelles, comme les tests par grand froid.

Tester vos connaissances