FMDS/RAMS
13/3/2024

Système embarquant une IA : Validation, Série, Change Control

Dans un futur plus ou moins déjà là, une partie non négligeable du logiciel des Systèmes sera faite d’IA. Comment les Valider ? Les produire en Série ? Comment contrôler leur évolution au cours de leur vie ?

La Sécurité est la lutte contre les dysfonctionnements anormaux et involontaires d’un Système, provoquant des dommages au Système lui-même, à son Environnement ou à la Personne.

Cet article suit directement un article précédent décrivant une étude de Sécurité pouvant être menée sur un système embarqué porteur d’une IA.

CNN neural network sécurité vision système embarqué IA edge computing
l'IA considérée

On considère toujours l’exemple semi-humoristique suivant pour notre étude :
2030. Les rats sont devenus trop nombreux en ville et aux abords des villes. Des essaims de drones chasseursRatHunter8000© sont déployés pour les détecter et les tuer via tir de fléchettes empoisonnées.

drone chasseur de rat dans la neige avec une IA embarquée qu'on souhaite sécuriser et valider
Où qui sont les petits rats?

Pertinence de l’Ingénierie Systèmes

Un logiciel qui fait de l’IA reste un logiciel, et il s’insère dans un système complexe (avec de l’électronique, de la mécanique etc. ) éventuellement en embarqué pour répondre à un Besoin.

architecture système aurélien nardini drone chasseur IA embarqué conception
Rappel de l'architecture de notre drone exemple
architecture système aurélien nardini drone chasseur IA embarqué conception Fault Tree Analysis FTA safety
Rappel du FTA pour gérer la probabilité d'occurrence de son risque principal

Ily a 2 grandes activités pour gérer la Sécurité, comme pour un Produit sans IA, correspondant peu ou prou aux 2 grandes phases du V : la descente et la remontée.

Dans cet article, nous traiterons de la Remontée. La Descente a déjà été traitée dans l’article précédent.

Méthodes classiques à conserver

Tout ce qu’on a vu dans les articles précédents de FMDS n’est pas à jeter ! Au contraire !

La planification de l’Intégration, Vérification, Validation

Une fois la Spécification de votre produit construite, vous devez évidemment en vérifier les exigences (de Sécurité et toutes les autres) lors des phases d’IVVQ pour garantir que votre Système est bien conçu et Sécuritaire.

Ces vérifications (que ce soit, concernant l’IA, sur les hyperparamètres du modèle, son data set d’entraînement, ses sorties ou autre…) sont une étape obligée, et cela passe au préalable comme vous le savez par la rédaction de Plans de Tests.

IVVQ systeme embarqué IA vision
La Validation des modèles entrainés : une étape clé

La Gestion de Configuration

En plus de maîtriser le processus de conception et le processus de vérification, validation, intégration, il est important de maîtriser la version du Système d’intérêt tout au long de sa vie.

La version = sa configuration logicielle + sa configuration matérielle (électronique, mécanique).

Savoir quel produit est composé exactement de quelle électronique et quel logiciel est une étape très importante pour savoir de quoi il est capable (ou non capable) et les éventuels risques associés.

Divers outils existent pour ce faire, que ce soit pour des plans mécaniques, des schémas électroniques ou des codes logiciels. Git est certainement le plus connu.

git gestion de configuration change control IA dans système embarqué
Git

Et bien sûr, en plus de l'outillage, le process qui va autour est également important : le change control.

Textes complémentaires

Des textes existent pour vous aider dans la sécurisation de vos produits :

  • DO-178 pour le logiciel
DO-178 synthèse des exigences sécurité système embarqué IA vision réseau neurone
Synthèse d'exigences issues de la DO-178

  • DO-254 pour le hardware
A lire un jour de grand vent

Ces textes invitent à assurer un développement cadré, une validation complète selon le niveau de criticité d’un logiciel, afin d’avoir un Système Sécuritaire à la fin.

Bien que ces textes restent tout à fait valables dans le cadre de l’utilisation de l’intelligence artificielle, de nouveaux textes sont en rédaction spécifiquement pour les Systèmes embarquant du Deep Learning.

Vérification, Validation du Système embarquant de l’IA

Ne pas lésiner sur les tests

Si on décide d’exploiter de l’IA dans un Système, c’est certainement parce-que développer (avec un cerveau humain) une méthode déterministe est jugé trop complexe voire impossible.

Il sera donc compliqué d’être 100% couvrant lors des phases de tests du Système puisqu’il faut arriver à trouver et reproduire tous les cas de sollicitation notable d’une suite buissonnante de petites opérations mathématiques (les neurones du réseau).

Ainsi, si les tests seront de toute façon « trop légers » pour notre Système, en faire un nombre négligemment réduit revient vraiment à lésiner sur la Sécurité. Il faut en faire beaucoup, et tout azimut !

Ne pas hésiter à exploiter toute la palette des types de vérifications :

  • Inspections
  • Analyses
  • Analogies
  • Simulations
  • Tests de vie réelle (via scénarios types, variations, …)
Hardware in the loop HITL drone test sécurité IVVQ ingénierie systèmes
Simulation Hardware Ine The Loop (HITL) d'un UAV

Exemples :

  • Inspection : Si on a cadré les valeurs de certains poids ou biais, ou spécifié des fonctions d’activation particulières, aller regarder dans le modèle entraîné pour vérifier qu’on a bien ces valeurs-ci.
  • Analogies : se référer à de la littérature spécialisée qui démontre que les hyperparamètres choisis sont les meilleurs pour la tâche à faire accomplir à l’IA*. Ou se référer à un Système conçu précédemment et qui fonctionne avec les performances attendues.
  • Analyses : Démontrer que telle ou telle sortie du modèle, redoutée, n’est pas atteignable
  • Simulations : Alimenter le moteur IA avec un max d’images de Rats et mettre des pièges (photos d’Humains allongés au sol par exemple) pour voir si la classification se fait bien…
  • Tests de vie réelle : Faire fonctionner en tests longs et hypersollicitants (endurance) son Système afin de traquer ses éventuels défaillances

*Pour éviter les erreurs grossières, adopter des architecture de réseaux de neurones plus ou moins éprouvées pour le type de tache à faire (détection de chat --> des hyperparamètres ont été fixés par Google par exemple).

Tester à tous les niveaux du Système

Comme dans toute remontée du V digne de ce nom, des tests doivent être faits depuis les plus petits composants du Système (fonctions logicielles unitaires, cartes électroniques, …) jusqu’au Produit complet inséré dans son environnement opérationnel avec ses utilisateurs.

Niveau IA

Pour ce qui est de l’IA, des tests/comparaisons/moyens de se rassurer à bas niveau, plus ou moins automatisables, existent :

  • Cross Validation (Avoir plusieurs data sets : un d’entrainement, un ou plusieurs datasets de tuning des hyperparamètres, et plusieurs data sets de validation enfin)
  • Vérification des courbes d’apprentissage pour traquer l’overfitting ou l’underfitting
  • Tester les couches de convolution séparément des couches denses
  • Voir comment le modèle réagit à des données inattendues ou bruitées
  • Effectuer une Grid Search pour vérifier que ses hyperparamètres choisis sont bien OK
  • Construire via de l’optimisation Bayesienne son modèle, pour s’assurer qu’on aura choisi au mieux ses hyperparamètres
  • Tests de non régression quand une modification est faite (comme pour tout système ou sous-système, IA ou non).
Fitting modèle IA pour système embarqué sécurité fiabilité maintenabilité disponibilité sûreté FMDS RAMS
Entrainement (fitting) du modèle

Niveau Logiciel intégrant cette IA

Ensuite, si tout est OK au niveau du dessous, il s’agit de tester le logiciel complet (avec l’IA intégrée).

Par exemple, avec des tests d’endurance où on épuise l’aléatoire (Monte Carlo). On exploration une multitude d’entrées possibles et on voit si les sorties sont bien dans le cadre qu’on s’est mis (garde fous opérationnels).

Niveau Système

Enfin, le Système complet (Logiciel, Matériel, Infrastructures etc.) doit être dûment testé.

drone chasseur rat système embarqué IA sécurité
Et c'est là que ça se corse pour moi

Si on ne tient pas les spécifications niveau IA, logiciel, sous-système ou Système : on doit alors mettre au point le produit… et reboucler sur les tests aux niveaux pertinents.

Le client doit être impliqué à 100%. Il faut qu’il ait conscience qu’une partie du Système (IA) est mise sous contrôle mais reste un élément fondamentalement non maîtrisé (une petite zone d’ombre dans une boîte blanche).

Tester le modèle certes… Mais aussi son dataset !

La validation doit se faire aussi sur les data qui ont entrainé notre réseau de neurones.

Les critères suivants sont à évaluer pour ce set :

  • accuracy
  • currency and timeliness
  • correctness
  • consistency
  • usability
  • security and privacy
  • accessibility
  • accountability
  • scalability
  • lack of bias
  • coverage of the state space
Rat data set entrainement modele IA pour drone système embarqué détection classification sécurité FMDS FMD RAM RAMS
Le Rataset

Documenter

Comme toujours, il faut documenter le fonctionnement du Produit, et ses résultats en tests de Validation.

Documenter les éléments suivants revêt alors une importance particulière :

  • Données d’apprentissages,
  • Hyperparamètres (nombre de couches, nombre de neurones, pas d’apprentissage, fonction d’activation)

Cela permettra :

  • de maximiser la maîtrise de ce qu’on installe dans notre Système et de ce qu’il fait
  • de voir si cela a évolué depuis la dernière validation… (Dans le cas où on voudrait que le modèle continue d’évoluer une fois le Système dans la nature).
Michael Scott documentation ingénierie systèmes conception drone embarqué IA vision chasseur tueur
Un petit document explicatif, cela sert toujours !

Vie du Système : Maîtrise des modifications du modèle IA

Ça y est, notre Système RatHunter8000 embarquant de l’IA pour la détection et la classification de rats est développé, validé, et peut donc aller rôder dans les sous-bois pour empoisonner ces dérangeants rongeurs.

2 cas de figure :

  • Vous avez figé le modèle une fois entraîné. Il répond en effet au besoin, avec le niveau de performance (Contract) voulu, et il n’y a pas de raison qu’un rat change d’aspect dans les années à venir.
  • Vous avez mis en œuvre l’IA de manière à ce qu’elle continue de s’entraîner en opération.

Dans le cas n°2, il faut éviter une dégradation des performances de l’IA (et plus globalement votre Système). Le pire cas est celui du CACE (change anything = change everything) : une donnée d’entraînement supplémentaire a complètement altéré le comportement de votre réseaux.

De manière générale, le change control est très important pour un Produit. Il devient vital lorsque votre Système va évoluer au gré de ses aventures dans la cambrousse.

Un monitoring à distance du fonctionnement de l’IA et de ses nouvelles données d’entraînement acquises en vie réelle s’impose :

  • Via remontée d’alarmes, de flags, des images exploitées…
  • Puis contrôle par un Humain/Logiciel que tout est OK ?
système embarqué IA continue de s'entrainer au cours de sa vie, comment maitriser ses évolutions et faire du controle du changement ? Ingénierie systèmes sécurité FMDS FMD
 OK, un poids a changé dans tout ce bazar… Du fait de cette nouvelle prise de vue du rat n°6389… C’est OK ou non ?

La notion de Production Série est mise à mal

On est toujours dans le cas n°2 abordé précédemment : le Système RatHunter8000 évolue en poursuivant son entrainement au gré des détections et des tirs sur les rats.

La production série traditionnelle se déroule comme suit :

  • Vous avez une Définition d’un Produit (dans son Dossier de Définition)
  • Vous suivez le mode opératoire de production X fois (Dossier de Fabrication et de Contrôle)
  • Et vous obtenez X fois le même Produit, que vous numérotez avec un Numéro de Série unique pour chaque spécimen.

A priori, le Système numéro N et N+1 seront en tout point identiques (aux tolérances diverses près).

Quid de notre RatHunter8000 évolutif ?

système embarqué avec IA validation qualification sécurité wall-e wall e ingénierie système cycle en v fmds RAMS
Tous les Wall-E ont-ils exactement le même code embarqué après quelques années à nettoyer la Terre ?

La notion de série bat de l’aile :

  • Les X produits seront identiques strictement en sortie d’usine (modèle Deep Learning satisfaisant, entraîné au préalable avec data set satisfaisant)
  • mais ensuite chaque système va vivre sa vie et s’autotune en fonction de ses opérations.

On peut se satisfaire de ce mode là, où chaque Système devient indépendant… Ou alors, on peut préférer que tous les systèmes embarquent le même code strictement.

Dans ce cas-là, on peut peut-être imaginer une boucle de mise à jour collective des spécimens :

  • Chaque spécimen remonte ses évolutions propres
  • Ces évolutions sont évaluées par des critères de qualité automatisés (à se définir)
  • Un opérateur humain décide à intervalle régulier que ce sont les évolutions de tel spécimen (disons le SN5453) qui sont les plus pertinentes (après tests et autres activités du change control)
  • Le modèle IA du repository officiel est modifié pour refléter les évolutions vécues par SN5453
  • Tous les spécimens se mettent à jour et deviennent identiques (pour quelques temps en tout cas) à SN5453.

Pas sûr que ce soit la meilleure solution, mais cela limite les écarts entre les produits d’une série en les synchronisant tous de temps en temps.

système embarqué IA mise à jour descente de modele IA entrainé change control série
On pourra la mise à jour chez tout le monde !

Quelques mots pour conclure

Comment donc intégrer, vérifier, valider, qualifier, faire évoluer, contrôler un Système dont l’une des parties critiques est portée par une IA ? De manière très similaire à ce qu’on connaît déjà.

Si une brique de notre Produit est une IA, cela reste une brique : on identifie les risques, on les mitige, et on s’assure de tenir les performances via des méthodes particulières de développement, et via vérifications et validations complètes à la fin du Développement.

La particularité de l’IA nécessite tout de même des méthodes et outils spécialisés pour la vérifier à bas niveau (hyperparamètres, contrôle de data set…).

Les notions de production série et de contrôle du changement au cours de la vie du Système sont challengées et nécessite d’être (re)pensées au moins un minimum. Ces questions s’anticipent dès la conception de son Produit !

Aurélien NARDINI

Un Système Sans Problème est une ressource de connaissances et de savoir-faire pratiques, avec exemples concrets.

Que vous soyez Chef de Programme, Chef de Projet, Architecte Système, Ingénieur, Manager dans l'Industrie, Etudiant ou Curieux de l'Ingénierie, vous êtes au bon endroit.

Au travers d'articles publiés régulièrement, découvrez ou révisez les Processus, Méthodes, Outils et Astuces utiles pour concevoir et piloter dans les domaines du Software, Firmware, de l’Électronique, et de la Mécanique.
 
Parce-qu'un produit fiable et industrialisable ne s'improvise pas !