Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Optimisation de l'IA pour les applications embarquées

Dans mon blog précédent, j'ai expliqué à quel point la demande d'interfaces basées sur l'IA est devenue presque inévitable et que l'ajout d'une interface basée sur l'IA comme face-id pour autoriser l'accès à une machine peut à première vue sembler un énorme pas en avant, ce n'est pas le cas. ont été aussi difficiles que vous pourriez le penser. Il existe une multitude de plates-formes d'IA disponibles, de nombreuses options de formation et même des applications open source, comme cet exemple de face-id. Vous pouvez être opérationnel et tester assez rapidement avec un prototype que vous pouvez exécuter sur votre PC.


(Source :CEVA)

Contraintes

Déplacer un réseau formé vers votre application intégrée peut sembler être un autre obstacle de taille. Les réseaux formés par PC ou cloud n'optimisent pas beaucoup l'utilisation de la mémoire ou la puissance. Ils peuvent utiliser des mots à virgule flottante ou des mots doubles pour les calculs de réseau, et ils s'appuieront fortement sur les accès mémoire hors puce lorsqu'ils traiteront des fenêtres coulissantes sur une image. Ce n'est pas un problème pour un prototype fonctionnant sur un PC hautes performances branché sur une prise murale, mais vous devez être beaucoup plus économe dans votre application finale, sans compromis sur les performances.

L'essentiel de l'optimisation

Une étape clé de l'optimisation s'appelle la quantification. Le passage des poids de virgule flottante à virgule fixe et la réduction de la taille à virgule fixe, disons de 32 bits à virgule flottante à des entiers de 8 bits, affectent non seulement la taille des poids mais également les valeurs de calcul intermédiaires. Cela seul peut réduire considérablement l'empreinte mémoire, avec peu d'impact notable sur la qualité de la reconnaissance dans la plupart des cas.

Une deuxième manipulation consiste à exploiter la parcimonie des poids avec un impact minimal sur la précision. Cette pratique tirera parti des poids qui sont proches de zéro et les arrondira à zéro, tout en gardant une trace étroite de l'impact sur la précision. Les poids sont utilisés pour multiplier des sommes partielles, un exercice inutile lorsque l'un des facteurs est nul, il n'est donc pas nécessaire d'effectuer l'opération.

Dans les mises en œuvre pratiques, les images sont traitées de manière incrémentielle, de sorte que les poids doivent être mis à jour au fur et à mesure que la fenêtre de calcul se déplace sur l'image. Cela peut entraîner de nombreuses mises à jour et beaucoup de trafic. En forçant un grand pourcentage des poids à être nul, le tableau de poids peut être compressé, ce qui permet de stocker tout ou une grande partie du tableau dans la SRAM sur puce, pour décompresser à la demande. Cela minimise à son tour le besoin d'aller à la mémoire principale et augmente donc les performances et réduit la puissance. Cela réduit également le trafic sur puce lors du chargement des poids. Moins de conflits de trafic signifie un débit plus élevé.

Un autre facteur doit être pris en compte. Comme la plupart des applications complexes, les réseaux de neurones dépendent de bibliothèques sophistiquées. Vous devrez utiliser une bibliothèque conçue pour être utilisée dans des environnements de microcontrôleurs et un compilateur sur la plate-forme de votre choix. Un bon point de départ peut être une bibliothèque open source, telle que TensorFlow Lite, mais pour une utilisation complète du microcontrôleur, une solution sur mesure dédiée sera nécessaire.

Bien sûr, savoir ce que vous avez à faire ne facilite pas les choses. Vous devez maintenant trouver une plate-forme qui rationalisera ces opérations et fournira des bibliothèques optimisées pour le matériel.

Comment puis-je en faire un flux facile à utiliser ?

Ce que vous voulez, c'est un flux dans lequel vous pouvez utiliser le réseau que vous avez formé sur votre plate-forme spécifique, TensorFlow par exemple, et le compiler directement sur votre solution intégrée, sans autre intervention que de composer quelques exigences de base. Bien sûr, vous souhaitez également avoir la possibilité d'optimiser davantage à la main, en définissant peut-être différents niveaux de quantification dans différents plans. Peut-être expérimenter avec des seuils de poids par rapport aux tailles de mémoire sur puce. Et vous voulez des bibliothèques optimisées pour le matériel et du matériel optimisé pour les bibliothèques.

Les plateformes d'IA éprouvées comme le CDNN de CEVA sont conçues pour fournir ce type de flux. CDNN propose un ensemble d'outils de processeur hors ligne pour la quantification et la génération de tâches d'exécution, ainsi que des bibliothèques d'exécution personnalisées pour les accélérateurs matériels de CEVA DSP et des utilisateurs clients. La solution de CEVA prend en charge tous les formats de modèles d'IA courants, y compris TensorFlow Lite, ONNX, Caffe et autres.


Contenus associés :

Pour plus d'informations sur Embedded, abonnez-vous à la newsletter hebdomadaire d'Embedded.


Embarqué

  1. VersaLogic publie des ordinateurs de classe serveur pour les applications intégrées
  2. Infineon lance la série de puissance embarquée TLE985x pour les applications automobiles
  3. Sundance :module de processeur embarqué VCS-1 pour les applications de robotique de précision
  4. PPA pour les applications de mobilité électrique
  5. 4 conseils pour optimiser votre jet d'eau
  6. Applications idéales pour les actionneurs pneumatiques
  7. 4 types d'outils pour les applications minières
  8. Applications typiques des freins à étrier
  9. Applications militaires pour les alliages de bronze