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
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.
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.
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é.
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.
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.
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.
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.
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.
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é
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.
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)
Tester vos connaissances
Vrai ou faux : Vous pouvez intégrer des modèles d’IA issus d’outils open source tels que TensorFlow™ ou PyTorch™ dans Simulink.
Bien tenté ! Vous pouvez élaborer des modèles d’IA en utilisant MATLAB ou un outil open source et les intégrer dans Simulink.
Correct ! Vous pouvez élaborer des modèles d’IA en utilisant MATLAB ou un outil open source et les intégrer dans Simulink.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)