IA frugale : les précautions à prendre avant de déployer TinyML
L’approche TinyML dispose d’atouts indéniables pour favoriser des déploiements frugaux de l’IA en périphérie. Mais il faut avoir conscience des nombreuses exigences logicielles et matérielles. Voici un ensemble de bonnes pratiques que les développeurs doivent connaître pour simplifier ce processus complexe.
TinyML est une approche générique permettant de réduire la taille des modèles et des applications d’intelligence artificielle afin de les faire fonctionner sur des appareils plus petits, notamment des microcontrôleurs, des processeurs bon marché ou des puces d’intelligence artificielle à faible coût. Elle porte la promesse d’une IA en périphérie, énergétiquement efficiente.
Du même coup, alors que la plupart des outils de développement de l’IA se concentrent sur la construction de modèles toujours plus massifs et plus performants, le déploiement de modèles TinyML exige des développeurs qu’ils pensent à faire plus avec moins.
Les applications TinyML sont souvent conçues pour fonctionner sur des appareils limités par la batterie, avec une puissance de quelques milliwatts, quelques centaines de kilo-octets de RAM et des cycles d’horloge plus lents. Les équipes doivent faire plus de planification en amont pour répondre à ces exigences strictes. Les développeurs d’applications TinyML doivent tenir compte de la gestion du matériel, des logiciels et des données et de la manière dont ces éléments s’imbriqueront pendant le prototypage et la mise à l’échelle des projets.
ABI Research prévoit que le nombre d’appareils exécutant des applications TinyML passera de 15,2 millions en 2020 à un total de 2,5 milliards en 2030. Cela promet de nombreuses opportunités pour les développeurs embarqués et les data scientists rompus à cette approche.
« Le gros du travail est similaire à celui nécessaire pour la conception d’un modèle de machine learning traditionnel, mais il y a deux étapes supplémentaires avec TinyML : la conversion du modèle en code C et la compilation pour le matériel cible », explique Sang Won Lee, PDG de la plateforme d’IA embarquée Qeexo. En effet, les déploiements de TinyML sont destinés aux petits microcontrôleurs, qui ne sont pas conçus pour exécuter de larges portions de code Python.
Il est également essentiel d’anticiper comment les applications TinyML pourraient donner des résultats variables dans différents environnements. Selon Sang Won Lee, ces modèles frugaux fonctionnent généralement avec des données de capteurs IoT qui dépendent fortement de l’environnement dans lequel ils sont installés. Lorsque l’environnement change, les données du capteur changent aussi. Par conséquent, les équipes doivent prévoir de réoptimiser les modèles dans différents environnements.
Que faut-il faire pour démarrer avec TinyML ?
Les spécialistes en IA peuvent souhaiter rafraîchir leurs connaissances en C/C++ et en programmation de systèmes embarqués pour comprendre les bases du déploiement du logiciel TinyML sur du matériel aux capacités limitées.
« Une certaine familiarité avec les principes généraux du machine learning, la programmation de systèmes embarqués, les microcontrôleurs et le travail avec des cartes de microcontrôleurs est nécessaire », insiste Qasim Iqbal, architecte logiciel en chef chez Terradepth, développeur de sous-marins autonomes.
Parmi les bons produits pour faciliter les déploiements de TinyML, citons l’Arduino Nano 33 BLE Sense, le SparkFun Edge et le STMicroelectronics STM32 Discovery Kit. Deuxièmement, un ordinateur portable ou de bureau avec un port USB est nécessaire pour l’interfaçage. Troisièmement, il est intéressant d’expérimenter en équipant le matériel d’un microphone, d’un accéléromètre ou d’une caméra. Enfin, les progiciels Keras et les Jupyter Notebooks peuvent être nécessaires pour entraîner un modèle sur un ordinateur distinct, avant que ce modèle ne soit transféré sur un microcontrôleur pour être exécuté et inféré.
Qasim Iqbal recommande également l’apprentissage d’outils de prétraitement qui transforment les données d’entrée brutes pour les transmettre à un interpréteur TensorFlow Lite. Ensuite, un module de post-traitement peut modifier les inférences du modèle, les interpréter et prendre des décisions. Une fois cette étape terminée, une étape de traitement de la sortie peut être mise en œuvre pour répondre aux prédictions en utilisant les capacités matérielles et logicielles du dispositif.
Avant de passer aux choses sérieuses, quelques PoCs peuvent aider les développeurs à comprendre les implications des diverses contraintes de TinyML. En plus des limitations sur la RAM et la vitesse d’horloge, les équipes peuvent également vouloir explorer les limites des distributions Linux dépouillées qui fonctionnent sur leurs plateformes cibles. Celles-ci ont souvent un support limité pour le système d’exploitation et les bibliothèques système qu’ils attendraient sur des systèmes plus importants basés sur Linux.
« Il est important de prendre des décisions judicieuses concernant le hardware, le support logiciel, l’architecture du modèle d’apprentissage automatique et les considérations logicielles générales », prévient Qasim Iqbal.
Il est utile d’examiner si un microcontrôleur peut prendre en charge l’application prévue ou si des appareils plus grands, tels que les appareils de la série Jetson de Nvidia, pourraient mieux fonctionner.
Combiner matériel et logiciel
Les développeurs qui se familiarisent avec le logiciel TinyML pourraient envisager d’enquêter sur la communauté derrière chaque outil TinyML avant de s’attacher à un outil particulier.
« Très souvent, vous ne pourrez pas trouver de réponse à vos questions dans la documentation officielle », raconte Jakub Lukaszewicz, responsable de l’IA pour la plateforme technologique AI Clearing. Jakub Lukaszewicz s’est souvent retrouvé à parcourir l’internet, Stack Overflow ou des forums spécialisés pour trouver des réponses. Si l’écosystème autour de la plateforme est suffisamment grand et actif, il est plus facile de trouver des personnes qui ont des problèmes similaires et d’apprendre comment elles les résolvent.
Il est également utile d’étudier le matériel disponible avant de plonger trop profondément.
« La triste nouvelle dans la réalité post-pandémique, les délais de livraison peuvent être longs et vous pouvez vous retrouver avec un choix limité de ce qui est actuellement disponible sur l’étagère », rappelle-t-il.
Après avoir obtenu l’ordinateur monocarte, l’étape suivante consiste à choisir le framework ML avec lequel travailler. Jakub Lukaszewicz considère que TensorFlow Lite est actuellement le projet le plus populaire, mais PyTorch Mobile gagne du terrain. Enfin, vous devez trouver des tutoriels ou des projets fictifs utilisant le framework ML et le tableau de votre choix pour voir comment les pièces s’assemblent.
Faites attention aux changements dans les frameworks et le matériel qui peuvent créer des problèmes. Jakub Lukaszewicz s’est souvent heurté à une documentation obsolète et à des problèmes de fonctionnement.
« Il arrive souvent que la plateforme ait été testée avec une version donnée d’un framework, comme TensorFlow Lite, mais qu’elle ait eu des difficultés avec la version la plus récente », illustre-t-il.
Dans ce cas, il recommande de passer à la dernière version prise en charge du framework et d’exécuter à nouveau votre modèle.
Un autre problème consiste à faire face à des opérations non prises en charge ou à une mémoire insuffisante pour adapter le modèle. Idéalement, les développeurs devraient prendre un modèle standard et le faire fonctionner sur un microcontrôleur sans trop de difficultés. « Malheureusement, ce n’est pas souvent le cas avec TinyML », prévient l’expert.
Il recommande d’essayer d’abord des modèles qui ont fait leurs preuves sur la monocarte de votre choix. Il a souvent découvert qu’un modèle de pointe utilise certaines opérations mathématiques qui ne sont pas encore prises en charge par certains appareils. Dans un tel scénario, il faut modifier l’architecture du réseau, remplacer ces opérations par des opérations prises en charge et réentraîner le modèle, en espérant que tout cela ne sacrifie pas sa qualité. La lecture de forums et de didacticiels est un excellent moyen de voir ce qui fonctionne et ce qui ne fonctionne pas sur une plateforme donnée.
Choisir le bon hardware
Jakub Lukaszewicz a déclaré qu’il existe plusieurs possibilités lorsqu’il s’agit de sélectionner le matériel et les configurations appropriés. Les choix les plus populaires incluent des écosystèmes comme Raspberry Pi, ESP32, STM32 et Arduino. Il a trouvé les questions suivantes utiles pour définir les besoins :
- Quel form factor voulez-vous ? Avez-vous besoin de la plus petite carte disponible ou pouvez-vous opter pour une carte plus grande ?
- Qu’en est-il de la consommation d’énergie ? Votre solution reposera-t-elle uniquement sur des piles ou disposerez-vous d’une alimentation externe ?
- Voulez-vous un système de refroidissement passif silencieux et nécessitant peu d’entretien ou un système de refroidissement actif ?
- De quelle quantité de RAM avez-vous besoin ?
- Quels capteurs intégrés doivent se trouver sur la carte ?
- Quels sont les ports et interfaces nécessaires ?
- Quelle est la fourchette de prix acceptable ?
Déployer l’IA en périphérie
Les développeurs doivent envisager toutes les approches viables lorsqu’ils déploient TinyML comme le moteur d’une application robuste et évolutive. La construction d’une application TinyML à l’échelle commence par la rédaction de sa description détaillée et des exigences liées. Cela permettra de guider la sélection du matériel et des logiciels (OS, firmware, etc.).
« Typiquement, une entreprise débute par un cas d’usage qui la pousse vers TinyML et à partir de là, elle commence à identifier une solution qui répond à ses besoins », explique Jason Shepherd, vice-président de l’écosystème chez Zededa et membre du conseil de la Fondation Linux Edge.
Compte tenu de la nature limitée des appareils concernés, il existe un couplage extrêmement étroit entre le logiciel et les capacités du matériel sous-jacent. Cela nécessite une connaissance approfondie du développement de logiciels embarqués pour l’optimisation du calcul et la gestion de l’énergie. Jason Shepherd a déclaré que les organisations construisent souvent des applications TinyML directement au lieu d’acheter l’infrastructure, en particulier dans les premières phases de leur projet d’Edge computing.
C’est un excellent moyen d’apprendre comment toutes les pièces s’assemblent, mais de nombreuses équipes découvrent que c’est plus compliqué qu’elles ne le pensaient, en particulier lorsqu’elles doivent régler les détails du déploiement de l’IA à la périphérie à l’échelle, prendre en charge l’ensemble de son cycle de vie et l’intégrer à des systèmes supplémentaires à l’avenir. Il est intéressant d’étudier les nouveaux outils de fournisseurs tels que Latent AI et Edge Impulse pour simplifier le développement de modèles d’IA optimisés pour le silicium sur lequel ils sont déployés.
Les entreprises qui décident de créer ces applications en interne ont besoin à la fois de développeurs embarqués qui comprennent les compromis inhérents au travail avec du matériel hautement contraint. Selon M. Shepherd, les spécialités clés devraient inclure les éléments suivants :
- la compréhension de la formation et de l’optimisation des modèles ;
- le développement d’une architecture et d’un code logiciels efficaces
- l’optimisation de la gestion de l’énergie
- gérer la radio sous contrainte et les technologies de mise en réseau ; et
- la mise en œuvre de la sécurité sans les ressources disponibles sur un matériel plus performant.
Pour réussir à long terme, les entreprises doivent prendre en compte les implications en matière de confidentialité et de sécurité du déploiement des applications TinyML sur le terrain. Bien que prometteuses, elles pourraient également poser de nouveaux problèmes et susciter des réactions négatives si les entreprises ne font pas attention.
« Le succès de l’IA en périphérie dans son ensemble et de TinyML nécessitera une collaboration et un alignement concertés pour faire progresser l’industrie tout en nous protégeant des abus potentiels en cours de route », conclut Jason Shepherd.