Par Charles Bicari, intégrateur-développeur
Les ressources computationnelles requises pour l’exécution de modèles d’intelligence artificielle varient grandement en fonction du type de modèle. Pour des grands modèles de langage comme GPT-4 ou Llama 2, des modèles de diffusion tels que Stable Diffusion et DALLE-2, ou encore pour des modèles de traitement vidéo en haute résolution ou dédiés au graphisme 3D, l’utilisation de cartes graphiques performantes, mais dispendieuses, se voit nécessaire.
Malgré l’attrait de ces nouvelles capacités, les limites monétaire et technologique peuvent souvent contraindre les artistes curieux·euses d’explorer l’utilisation de l’intelligence artificielle dans leurs projets. Si l’on ajoute à cela les enjeux environnementaux et les considérations éthiques des grands modèles, la motivation des artistes à utiliser ces technologies peut facilement s’étioler. Pourtant, les grands modèles ne sont pas une fatalité et il existe des alternatives.
Considérant que j’œuvre auprès de systèmes embarqués, c’est-à-dire à la conception et la programmation de systèmes contraints en termes d’alimentation, de capacité computationnelle et généralement dédiés à des tâches spécifiques, je me suis demandé s’il existait des options de modèles capables d’inférer avec de telles contraintes. En juin 2024, j’ai pu assister au congrès TinyML EMEA du Edge AI Foundation, qui s’est déroulé à Milan et qui portait sur la recherche en développement de modèles miniatures.
Dans cet article, je présente sommairement cette alternative aux grands modèles, certaines considérations matérielles qui y sont liées ainsi que quelques microprocesseurs et ordinateurs à cartes uniques permettant de développer des installations multimédias avec de l’accélération matérielle dédiée à l’intelligence artificielle. Malgré que ces petits modèles n’ont évidemment pas les capacités des plus grands, ils offrent néanmoins des approches créatives pour les arts technologiques qui méritent d’être explorées.
La question se pose : qu’est-ce qui rend un modèle miniature ?
Ce qui définit un modèle miniature, c’est surtout le fait qu’il soit capable d’inférer dans des environnements contraints en capacités computationnelles ainsi qu’énergétiquement, comme par exemple, dans un téléphone intelligent, un casque VR ou encore dans une balayeuse. En termes techniques, ce sont le nombre de paramètres, l’architecture du modèle, le nombre d’opérations requises par inférence et la quantification qui déterminent la taille du modèle.
Le nombre de paramètres est définitivement le facteur le plus important puisque la relation y est plutôt linéaire : moins de paramètres équivaut à une inférence plus rapide. Par exemple, les modèles miniatures ont tendance à avoir moins d’une dizaine de millions de paramètres, tel que MobileNetV2, qui en a environ 3,4 millions et réussit à bien inférer sur les ressources d’un téléphone intelligent. En revanche, Stable Diffusion a plus de 860 millions de paramètres, et d’autres grands modèles se compte en plusieurs milliards de paramètres.
Pour ce qui en est de l’architecture du modèle, celle-ci influence directement la vitesse d’exécution, l’utilisation de la mémoire ainsi que la consommation d’énergie, mais il est difficile d’en détailler les spécificités sans s’engager dans une conversation étendue. Il est important de savoir que deux modèles ayant le même nombre de paramètres, mais des architectures différentes, auront des temps d’inférence différents. Cela est dû à la profondeur d’un modèle, aux types d’opérations qu’il requiert (additions, multiplications, convolutions), ainsi qu’à la manière dont les connexions entre les neurones sont organisées.
En ce qui à trait au nombre d’opérations par inférence, c’est-à-dire l’exécution du modèle pour faire une prédiction ou produire un résultat (par exemple, identifier un objet dans une image), il est évident que le nombre de paramètres et l’architecture du modèle en sont les principaux facteurs déterminants. En effet, un modèle ayant un grand nombre de paramètres et une architecture complexe nécessitera plus de calculs pour chaque inférence, tandis qu’un modèle optimisé ou quantifié pourra réduire cette charge computationnelle tout en maintenant des performances acceptables.
Avoir la capacité de faire une approximation de la complexité computationnelle d’un modèle donné peut nous indiquer si un système est habilité matériellement à en gérer les besoins. Par exemple, certains microprocesseurs disposent désormais d’avoir une accélération matérielle de type NPU (Neural Processing Units) optimisée pour l’inférence en environnement embarqué et mesurent ces capacités en TOPS (Téra Opérations Par Seconde). Si vous cherchez un peu, vous trouverez dans certaines documentations que les modèles sont détaillés en FLOPS ou TOPS. À noter que le ‘FL’ dans l’acronyme FLOPS représente des nombres en virgules flottantes (plus précis mais plus gourmands en ressources), tandis qu’en TOPS, nous nous référons plutôt aux nombres entiers ou binaires (plus rapides et moins coûteux en termes de ressources). Ainsi, un microprocesseur doté d’un NPU de quatre TOPS peut effectuer quatre trillions d’opérations par seconde sur des nombres entiers ou binaires, ce qui est souvent suffisant pour un modèle simple de reconnaissance d’objets. Si l’on pousse un peu plus l’exemple, considérez qu’en traitement vidéo, lorsque l’on parle d’une capture à 30i/s (trente images par seconde), notre logiciel doit idéalement être en mesure de convertir chaque image capturée en données compatibles avec le modèle afin que ce dernier puisse appliquer son analyse, trouver les motifs qu’il cherche, et produire le résultat. Tout celà en un trentième de seconde pour chaque image. Dans le cas d’un NPU à quatre TOPS, c’est-à-dire quatre trillions d’opérations par seconde, et que l’inférence doit se faire en moins d’un trentième de seconde pour une capture à 30i/s, cela signifie que le modèle doit pouvoir effectuer l’inférence en moins de 133 milliards d’opérations.
Pour revenir à nos qualités techniques, nous avons brièvement abordé la question de l’unité numérique sous laquelle peut être encodé notre modèle. Plus précisément, un même modèle peut exister sous plusieurs représentation numérique : par exemple, mais non exhaustivement, en virgule flottante à 16, 32, 64 bits, en nombre entier à 8, 16, 32, 64 bits, en binaire, ou même en nombre complexe. Or, certaines de ces représentations ne sont pas optimales pour le milieu embarqué, contraint en ressources computationnelles. Ainsi, dans le but d’alléger le nombre d’opérations requises pour une inférence, le processus de quantification permet d’encoder un modèle en valeurs plus simples à gérer pour un microprocesseur, tels que des entiers à 4, 8, 32 bits, ou des booléens. Bien que ce processus réduit la précision d’un modèle, il en optimise la vitesse d’exécution. En simplifiant les structures de données, les calculs deviennent moins lourds, bien plus rapides en traitement et plus légers en mémoire.
Quelles sont les possibilités pratiques des modèles miniatures ?
Les modèles miniatures sont généralement conçus pour des tâches précises comme la reconnaissance d’images, le traitement basique du langage naturel et l’analyse prédictive simple telle que la reconnaissance de gestes ou de mouvements précis.
Vous pouvez certainement essayer d’utiliser des modèles existants tels que Tiny-Yolo pour la reconnaissance d’objets, ou encore Whisper Tiny pour la transcription automatique de la parole. Toutefois, en tant que créateur·rice, vous êtes sûrement plus inspiré·e par la possibilité de créer vos propres petits modèles, comme, par exemple, la reconnaissance de mouvement pour les arts vivants, ou bien des micro-changements perçus dans certains organismes biologiques à des fins d’installations artistiques. Vous pourriez peut-être même avoir envie de mettre plusieurs petits modèles en réseaux afin de distribuer la tâche d’inférer à plusieurs systèmes distribués !
Il existe plusieurs solutions pour répondre à ce besoin. L’approche propriétaire de Edge Impulse est un bon point de départ pour les débutant·e·s puisque la plateforme est très bien documentée et offre une interface simple d’utilisation, où les modèles peuvent être optimisés pour des microcontrôleurs spécifiques. De plus, il est très facile de recueillir des données audio, vidéo ou provenant de capteurs en entrée avec lesquelles vous pourrez entraîner et tester votre modèle par la suite. Étant propriétaire, cette option logicielle présente des limitations, mais elle permet aux débutant·e·s de s’amuser et d’apprendre de manière plus intuitive dans ce domaine assez opaque. Une autre manière de créer ses propres modèles serait avec l’outil Weka, une suite de logiciels d’apprentissage automatique libre et développée à l’Université de Waikato en Nouvelle-Zélande. Ce logiciel ne présente aucune contrainte autre que d’avoir à faire un traitement préalable de vos données afin qu’elles respectent les besoins en entrées du programme. Malgré que ce logiciel offre une interface un peu plus austère, elle demeure puissante et versatile tout en étant bien documentée et libre d’utilisation. D’ailleurs, si vous voulez en apprendre davantage sur les logiciels libres et mieux comprendre comment les intégrer dans vos pratiques, vous pouvez consulter l’article de Jean-Michaël Celerier, directeur du développement technologique à la SAT.
Historiquement, les modèles d’IA ont été développés pour fonctionner sur des architectures matérielles assez précises. Par exemple, ceux et celles qui utilisent les ressources logicielles de CUDA étaient contraints aux cartes graphiques de Nvidia, tandis que ceux et celles qui utilisent les ressources logicielles d’Intel étaient limité·e·s aux GPU d’Intel, et pareillement pour les librairies d’AMD destinée à l’utilisation de leurs cartes graphiques respectives (voir cartographie expérimentale). Cependant, un consortium s’est penché sur la question d’interopérabilité des modèles et des plateformes matérielles, et a proposé le Open Neural Network Exchange, aussi connu sous son acronyme ONNX. De là en découle également la question de l’opérabilité en temps réel, et donc l’avènement d’ONNX Runtime. Pour le milieu embarqué, l’utilisation d’ONNX-Runtime et des modèles qui y sont compatibles signifie qu’il est possible d’exécuter l’inférence sur la partie NPU d’un microcontrôleur, ou même de sa partie CPU. De plus, de nombreux modèles pré-entraînés sont déjà disponibles au format ONNX, ce qui facilite leur déploiement sur du matériel embarqué, à condition que ces modèles ne soient pas trop lourds pour les capacités de la plateforme. Sinon, la conversion de modèles vers le format ONNX n’est pas trop laborieuse et peut s’en tenir à quelques lignes d’un script python.
Les composantes rapportées ci-dessus offrent pratiquement toutes les fonctionnalités typiques d’un microprocesseur (MCU) mais également de l’accélération matérielle de type NPU. Celles-ci ont été répertoriées dans le but de trouver des plateformes permettant de faire des installations multimédia incluant de petits modèles d’IA. Si cela vous intéresse, je vous invite à voir les produits de Khadas, OrangePi, Radxa pour le MCU RK3588, le BeagleY-AI pour le MCU AM67A, ainsi que Debix, Ezurio ou Verdin pour le MCU NXP i.MX 8M Plus. Pour ceux et celles qui sont plus habitué·e·s à travailler avec des Raspberry Pi, il existe également le nouveau AI Hat+ avec le MCU Hailo-8 qui permet d’ajouter l’accélération matérielle de type NPU à la plateforme RaspberryPi 5. Tous ces systèmes vous offrent les avantages d’avoir accès à un OS Linux précompilé (voir Armbian), à des ports d’entrées/sorties audio/vidéo requis pour du multimédia, à une connexion ethernet ou WiFi, ainsi qu’à des ressources en ligne pour du développement avec Gstreamer.
Petit conseil additionnel : comme l’inférence requiert un accès rapide à la mémoire, la bande passante disponible d’une RAM peut rapidement devenir un goulot d’étranglement. Pour de meilleurs résultats, optez plutôt pour un système offrant une RAM plus récente telle que la LPDDR5 plutôt que la LPDDR4. Ne vous fiez pas uniquement aux TOPS puisque si ce système a une capacité de calcul élevée mais une bande passante mémoire restreinte, vous n’aurez pas de meilleures performances.
Cet article aborde de nombreux aspects de l’intelligence artificielle embarquée, tout en laissant plusieurs pistes ouvertes. La présentation de ces réflexions, bien que abrégée, permet d’illustrer que l’intelligence artificielle ne se limite pas à des ordinateurs puissants et à des modèles entraînés sur d’immenses volumes de données en ligne. Il existe en effet des solutions à faible consommation énergétique et computationnelle, adaptées à des œuvres utilisant l’intelligence artificielle.
Il y en a certes beaucoup à apprendre et ça devient rapidement étourdissant. N’hésitez pas à nous joindre lors de nos rencontres portant sur l’art et l’intelligence artificielle pour en discuter en personne ou même de nous écrire directement afin de voir si nous pouvons vous aiguiller dans une direction ou une autre en fonction de nos capacités pour vos projets.