Un LLM sur un Raspberry Pi

Publié par cpb
Juil 23 2024

J’aime bien de temps en temps essayer des implémentations improbables, exécuter une tâche sur une plateforme inattendue ou l’écrire dans un langage peu approprié, juste pour l’exercice.

Par exemple, il y a quelques temps, je m’étais amusé à imbriquer des émulateurs Qemu les uns dans les autres, en compilant l’émulateur central sur une machine cible tournant avec Qemu. Une autre fois nous avions réussi, avec mon fils, à implémenter un jeu de la vie de Conway en utilisant uniquement le langage LaTeX.

Avec l’engouement actuel pour l’IA et plus particulièrement les LLM (Large Language Model), j’ai été séduit par l’idée de faire fonctionner un de ces modèles sur une plateforme non prévue pour cela : un Raspberry Pi.

Choix du Raspberry Pi

J’ai choisi le modèle Raspberry Pi 5 – le plus puissant à ce jour – avec 8 Gb de RAM. Cela pour deux raisons : le fonctionnement d’un LLM est évidemment très gourmand en ressources CPU et mémoire, et d’autre part l’implémentation que j’ai choisie ne fonctionne que sur architecture x86 et sur Arm64. Il faut donc un Raspberry Pi supportant un OS 64 bits. Un Pi 4 aurait peut-être suffit, mais je pense que sa taille mémoire est trop limitée.

Pour cette expérience, j’avais un objectif sous-jacent : vérifier si un modèle de langage est raisonnablement utilisable sur un système relativement restreint (pour autant qu’on puisse qualifier un Raspberry Pi 5 avec 8 Go de RAM d’environnement restreint) avec une connexion Internet à faible débit, voire inexistante. Ceci dans l’objectif éventuel d’intégrer un LLM dans des systèmes basés sur Linux embarqué, pour des projets de clients ou pour des sessions de formations.

Choix du LLM

Précisons bien le cadre de cet essai : il s’agit de faire fonctionner le modèle de langage localement sur le Raspberry Pi, pas d’interroger un serveur dans le cloud.

Il existe de nombreux modèles de langages disponibles plus ou moins librement. Certains nécessitent un abonnement et l’obtention d’une clé d’API (Gemini de Google, Claude d’Anthropic, GPT d’OpenAI…).

Une solution correspondant plus à mon attente est l’utilisation de Ollama, un outil sous licence libre (MIT), capable de charger et faire fonctionner des LLM sur Linux, Windows et MacOS.

Installation et tests

Raspberry Pi OS

J’ai installé la dernière version de Raspberry Pi OS (04/07/2024) en version 64 bits basée sur une distribution Debian 12.

Ollama

L’installation de Ollama est extrêmement simple : un script à télécharger et exécuter.

Le site d’Ollama suggère d’utiliser la commande suivante qui télécharge le script et l’envoie directement en entrée d’un shell.

$ curl -fsSL https://ollama.com/install.sh | sh

Je préférais jeter un œil au contenu du script avant de l’exécuter, aussi ai-je plutôt progressé ainsi :

cpb@raspberrypi:~ $ curl  https://ollama.ai/install.sh  >  install.sh
 [...]

cpb@raspberrypi:~ $ chmod  +x  install.sh

Après avoir regardé rapidement le contenu du script je l’installe ainsi :

cpb@raspberrypi:~ $ ./install.sh 
>>> Downloading ollama...
####################################################################################################################################################>
>>> Installing ollama to /usr/local/bin...
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.

Le script nous prévient qu’il n’a pas trouvé de processeurs graphiques (GPU) Nvidia ou Amd. Pas étonnant sur un Raspberry Pi ! Et en conséquence il fera tout le traitement directement sur les cœurs du CPU.

Modèles

La page « Models » de Ollama regroupe une centaine de modèles de langages disponibles. La plupart sont disponibles en deux à trois versions en fonction de la taille du réseau neuronal utilisé. Prenons l’exemple du modèle phi3 :

Les deux versions 3B (3 billion, 3 milliards) et 14B (14 billion, 14 milliards) correspondent aux nombres de « paramètres » du modèle, soit approximativement le nombre de connexions entre les neurones du réseau. Plus ce nombre est élevé, plus les possibilités du LLM sont importantes. Mais en augmentant le nombre de paramètres, l’espace mémoire nécessaire pour l’accueillir augmente et les ressources de calcul (puissance CPU, consommation électrique) indispensables pour parcourir le réseau croissent également.

Avec un Raspberry Pi comportant 8 Go RAM, inutile d’espérer faire tourner des modèles de plus de 7 milliards de paramètres environ, mais cela laisse encore un beau choix de modèles.

Phi3

Le premier modèle que je teste est Phi-3 de Microsoft, disponible sous licence MIT. Il existe en deux versions : 3.8 milliards et 14 milliards. C’est évidemment la première version que je vais utiliser. Pour l’installer, on peut employer les noms phi3:3.8b ou phi3:mini :

cpb@raspberrypi:~ $ ollama pull phi3:mini
pulling manifest
pulling manifest
pulling 3e38718d00bb... 100% ▕█████████████████████████████████████████████████████▏ 2.2 GB  >
pulling fa8235e5b48f... 100% ▕█████████████████████████████████████████████████████▏ 1.1 KB  >
pulling 542b217f179c... 100% ▕█████████████████████████████████████████████████████▏  148 B  >
pulling 8dde1baf1db0... 100% ▕█████████████████████████████████████████████████████▏   78 B  >
pulling ed7ab7698fdd... 100% ▕█████████████████████████████████████████████████████▏  483 B  >
verifying sha256 digest
writing manifest
removing any unused layers
success

Au bout de deux minutes le modèle est enregistré sur la carte SD du Raspberry Pi, prêt à être utilisé. Testons-le en lui posant une petite question simple :

cpb@raspberrypi:~ $ ollama run phi3:mini
>>> Send a message (/? for help)

Il a fallu une dizaine de secondes pour que Ollama charge et initialise le modèle, avant de nous inviter à lui poser une question.

>>> What is a raspberry pi?
 A Raspberry Pi is a small, affordable single-board computer developed by the Raspberry Pi
Foundation in the UK. Its purpose is to promote teaching basic computer science in schools and 
developing digital skills among learners globally, especially those who may lack access to such 
resources due to economic or other barriers. The device boasts various processor options 
compatible with a full operating system like Linux, as well as peripherals that allow it to be 
used for projects ranging from media centers to home automation devices and robotics kits.

It has 1-2 USB ports along with audio/video output capabilities and provides enough computational 
power for educational purposes or simple personal computing tasks through a Linux operating system 
loaded onto its microSD card, which can be installed via the Raspberry Pi Imager toolkit on 
Windows PCs, Macs, and some other devices.

The device measures just over 60mm by 30mm with dimensions similar to those of an SDHC memory card 
while weighing only about as much (around 24 grams). It is powered through a micro USB port on the 
board which can be connected directly into a wall adapter or use battery packs, offering 
convenience and flexibility.

Raspberry Pi has evolved with several generations of boards: The first generation Raspberry Pi 
started in 2012; followed by second (released in February 2tyr3), third (Wavesby released in 
December 2014, also known as the Model B+ and later renamed to "Model B"), fourth gen ("Bullseye", 
January 2018) which includes Raspberry Pi Zero W; latest fifth generation releases are Broadcom 
system-on-chip based boards (released in April & September of 2022 as"Centenary") with an emphasis 
on speed and power efficiency.

Raspberry Pis also come in different versions, such as the Raspberry Pi Model A which is smaller 
than its counterparts but has fewer I/O pins; there's even a version that comes without HDMI 
output called "Zero" or Zero W, released later with Wi-Fi capabilities.

Raspberry Pi can be used for various applications such as home automation projects like smart 
lighting systems and security cameras to robotics kits where it acts as the main processing unit 
of a small drone; educational purposes include learning about programming languages (like Python) 
or even creating simple games, multimedia players, etc.

Aside from being used in various personal computing applications for hobbyists, researchers and 
developers are using Raspberry Pi to create low-cost solutions such as smart city devices like 
traffic sensors; environmental monitoring systems that measure air quality levels among many other 
things which showcase the versatility of this small but mighty computer.

>>> Send a message (/? for help)

Plutôt bavard ce modèle ! Il a pris un peu plus de trois minutes pour écrire ce texte. Comme l’affichage se faisait par séquences proches de la taille d’un mot, cela correspond au débit d’une parole calme. On pourrait très bien alimenter un synthétiseur vocal à ce rythme et obtenir un discours assez posé.

Comme j’étais supris de la quantité et de la qualité de la réponse, j’ai rebooté le Raspberry Pi en le déconnectant physiquement du réseau et j’ai reposé la même question ce qui conduit à une réponse légèrement différente, mais en substance assez proche sur la capture d’écran ci-dessous :

LLM sur Raspberry Pi 5

Après avoir quitté Ollama avec la commande /bye nous allons faire une petite expérience.

>>> Send a message (/? for help)
>>> /bye
cpb@raspberrypi:~ $

Lorsqu’il a démarré, Ollama a installé un service sur le port TCP 11434 du Raspberry Pi qui offre une API Rest pour interagir avec lui. Nous allons l’interroger depuis le shell du même Raspberry Pi, avec la commande curl.

Nous allons aussi en profiter pour lui poser une question en français.

cpb@raspberrypi:~ $ curl http://localhost:11434/api/generate -d '{ "model": "phi3:mini", "prompt": "Quelle est la quatrième planète du système solaire ?" }'

Pendant les quelques minutes qui suivent, nous recevons des réponse d’Ollama qui construisent peu à peu le contenu de sa réponse. Les messages sont horodatés, le champ « response » de chaque ligne contient la portion de texte et le champ « done » est à « faux » pour indiquer que la réponse n’est pas complète. Je marque en gras le champ réponse pour que son contenu soit lisible :

{"model":"phi3:mini","created_at":"2024-07-21T05:43:17.084478429Z","response":" La","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:17.369720015Z","response":" qu","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:17.628725439Z","response":"atri","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:17.887893364Z","response":"ème","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:18.146665529Z","response":" plan","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:18.405267322Z","response":"ète","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:18.664291747Z","response":" du","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:18.923346486Z","response":" système","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:19.181757649Z","response":" sol","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:19.4407295Z","response":"aire","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:19.699538905Z","response":",","done":false}
[...]
{"model":"phi3:mini","created_at":"2024-07-21T05:43:25.058321233Z","response":" est","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:25.329659597Z","response":" Mars","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:43:25.600804776Z","response":".","done":false}
[...]

Au bout de quelques instants, Phi-3 s’arrête – non sans nous avoir donné un cours de géographie martienne – et termine avec un ultime message dont le champ « done » passe à « vrai » .

{"model":"phi3:mini","created_at":"2024-07-21T05:44:03.022767578Z","response":" les","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:03.331061632Z","response":" plus","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:03.639537317Z","response":" grandes","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:03.948115316Z","response":" structures","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:04.257345336Z","response":" ro","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:04.565302908Z","response":"che","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:04.874108446Z","response":"uses","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:05.182596871Z","response":" conn","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:05.490781443Z","response":"ues","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:05.799564851Z","response":" dans","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:06.10923715Z","response":" le","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:06.447442283Z","response":" système","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:06.755825597Z","response":" sol","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:07.064675857Z","response":"aire","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:07.373813932Z","response":" :","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:07.681658855Z","response":" les","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:07.990091225Z","response":" can","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:08.306772505Z","response":"y","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:08.623075266Z","response":"ons","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:08.940534344Z","response":" Olymp","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:09.257847867Z","response":"us","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:09.574017294Z","response":" M","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:09.890405092Z","response":"ons","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:10.206899964Z","response":" et","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:10.523604097Z","response":" Vall","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:10.840915693Z","response":"es","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:11.157677085Z","response":" Mar","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:11.474101846Z","response":"iner","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:11.790493903Z","response":"is","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:12.106910183Z","response":".","done":false}
{"model":"phi3:mini","created_at":"2024-07-21T05:44:12.423664722Z","response":"","done":true,"done_reason":"stop","context":[32010,751,1808,707,425,439,25054,5000,3814,12973,868,21423,899,5218,1577,32007,32001,997,439,25054,5000,3814,12973,868,21423,899,5218,29892,427,760,424,316,301,29915,1062,14508,634,427,409,12468,307,13775,316,425,5061,276,29892,707,16852,29889,6340,263,4370,27257,15826,610,966,6033,2708,270,30010,19908,6267,762,29884,316,425,12573,634,454,2245,25677,1671,16852,6303,8648,13704,712,8556,3667,14125,22572,29915,15669,427,16464,4191,19154,376,29924,1503,1642,10793,3814,12973,16053,479,22847,553,15087,1144,696,1173,1314,1027,309,7147,3479,286,7342,272,3246,24889,2406,1190,5061,276,29892,2257,1750,2424,1908,439,29915,1808,263,2653,7848,4760,1318,610,868,6316,1314,9122,28147,361,29889,5701,7101,707,1559,16027,15826,610,316,22114,1700,29883,550,634,553,22044,2406,427,13618,270,30010,279,2395,3805,29878,2445,352,4285,29892,16794,743,376,305,11625,532,613,8288,712,610,966,2298,13830,12286,696,1173,6394,11009,1041,1465,454,21423,899,5218,584,966,508,29891,787,6167,375,341,787,634,19918,267,1085,4983,275,29889],"total_duration":58835102724,"load_duration":15453689,"prompt_eval_count":17,"prompt_eval_duration":3436055000,"eval_count":190,"eval_duration":55339199000}

Je vais essayer quelques modèles supplémentaires, mais la taille de ma carte SD étant limitée, je vais au prélable effacer le modèle Phi-3

cpb@raspberrypi:~ $ ollama rm phi3:mini
deleted 'phi3:mini'

Gema

Gema est une série de modèles proposée par Google Deepmind dont la taille est optimisée. Il existe une version minimale avec 2 milliards de paramètres. J’ai testé la version 1.1 de Gema :

cpb@raspberrypi:~ $ ollama pull gemma:2b
pulling manifest 
pulling c1864a5eb193... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 1.7 GB                         
pulling 097a36493f71... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 8.4 KB                         
pulling 109037bec39c... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  136 B                         
pulling 22a838ceb7fb... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏   84 B                         
pulling 887433b89a90... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  483 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success 

Ce modèle est beaucoup plus concis dans ses réponses. Je lui ai posé plusieurs fois la même question, ses réponse en français sont moins bonnes qu’en anglais (c’est normal, je suppose que l’échantillon d’entraînement est essentiellement anglophone). Notons que dans ma première question il a pris « connaître » dans le sens de « avoir rencontré personnellement »

cpb@raspberrypi:~ $ ollama run gemma:2b
>>> Connais-tu Obi-Wan Kenobi ?
Je n'ai pas accès à la mémoire ou à l'apprentissage personnel, donc je n'ai pas connaissance de Obi-Wan Kenobi.

>>> Qui est Obi-Wan Kenobi ?
Obi-Wan Kenobi est un personnage fictif apparaissant dans la série de romans et de films "Star Wars". Il est un Jedi maître, un sage qui a été 
originaire sur la planète Terre.

>>> /bye

cpb@raspberrypi:~ $ ollama run gemma:2b
>>> Qui est Obi-Wan Kenobi ?
Obi-Wan Kenobi est un personnage fictif qui joue un rôle central dans la série de romans de science-fiction et de film de Disney "Star Wars". 
Il est le maître des Jedi, un ordre monastique qui sauve le monde de la malédiction du Sith

>>> /bye

cpb@raspberrypi:~ $ ollama run gemma:2b
>>> Do you know Obi-Wan Kenobi? 
I do not have personal knowledge or the ability to form opinions. I am a large language model, trained by Google.

>>> 
cpb@raspberrypi:~ $ ollama run gemma:2b
>>> Do you know who Obi-Wan Kenobi is?
Sure. Obi-Wan Kenobi is a fictional character in the Star Wars franchise of films, a series of science fiction movies produced by Lucasfilm. He 
is a highly skilled and experienced Jedi Knight, one of the most powerful and respected warriors in the galaxy.

>>> Send a message (/? for help)

Mistral

Le modèle Mistral version 0.3 à 7 milliards de paramètres est proposé par la startup française Mistral AI sous licence Apache. Je l’installe :

cpb@raspberrypi:~ $ ollama pull mistral:7b
pulling manifest 
pulling ff82381e2bea... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 4.1 GB                         
pulling 43070e2d4e53... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  11 KB                         
pulling 491dfa501e59... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  801 B                         
pulling ed11eda7790d... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏   30 B                         
pulling 42347cd80dc8... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  485 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success 
cpb@raspberrypi:~ $ 

J’ai essayé quelque chose qui s’est avéré assez amusant, je lui ai donné les premiers mots du spleen de Beaudelaire en lui demandant de compléter la citation :

cpb@raspberrypi:~ $ ollama run mistral:7b
>>> Continue cette citation "Quand le ciel bas et lourd pèse comme un couvercle"


Ou peut-être que c'est l'âme qui plaint sous la pression de ses pensées,
Et que les nuages gris se sont accumulés en réponse à nos désespoirs.
Les murs se contractent sous le poids d'un regard triste et déchiré,
Et chaque voix qui s'élève vers le ciel semble retentir dans une chambre vide.

<no value>

Ou peut-être que la nuit s'est abstraite pour nous laisser seul avec nos pensées,
Pour que nous puissions nous regarder dans le miroir de nos vies et trouver des réponses,
Et que chaque étoile qui brillait à travers les nuages est une question à laquelle nous avons répondu.

Même si la réponse n’est pas du tout le texte du poème original, je trouve que l’ambiance en est très proche, et que globalement le texte généré a de bonnes qualités poétiques. On remarquera également le <no value> qui, je suppose, signale une ligne vide pour chanter de strophe.

J’ai réessayé en anglais avec le début de « If » de Kipling, toutefois les résultats sont beaucoup moins poétiques. Peut-être un biais dû à la consultation de trop nombreux textes de développement personnel :

>>> Please complete this text: "If you can keep your head when all about you are losing theirs and"
 remain calm, and in control. That is the sign of a true leader.

In other words, it means that even in chaotic or stressful situations, you should be able to think clearly and make rational decisions. This 
quality is often sought after in leadership roles because it shows that you can maintain composure, focus on the task at hand, and not let 
emotions cloud your judgment.

Being able to keep your head when everyone around you is losing theirs can also help build trust among your team or colleagues. They will see 
that they can rely on you to stay calm and steady in difficult situations, which can help improve morale and increase productivity.

Overall, keeping your head in stressful situations is an essential skill for anyone who wants to succeed in their personal or professional 
life. It requires discipline, self-awareness, and the ability to stay focused on the task at hand. But by cultivating this skill, you can 
become a more effective leader, build stronger relationships, and achieve greater success.

Llama2

La famille de modèle Llama distribuée par Meta sous licence « Llama Acceptable Use Policy » se décline en plusieurs générations. La plus puissantes est Llama3, mais elle est, je pense, beaucoup trop grosse pour la mémoire du petit Raspberry Pi. En revanche la version 2 existe en modèle à 7 milliards de paramètres que je vais tenter d’utiliser

cpb@raspberrypi:~ $ ollama pull llama2:7b
pulling manifest 
pulling 8934d96d3f08... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 3.8 GB                         
pulling 8c17c2ebb0ea... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 7.0 KB                         
pulling 7c23fb36d801... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏ 4.8 KB                         
pulling 2e0493f67d0c... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏   59 B                         
pulling fa304d675061... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏   91 B                         
pulling 42ba7f8a01dd... 100% ▕█████████████████████████████████████████████████████████████████████████████████████▏  557 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success 
cpb@raspberrypi:~ $ 

L’installation du modèle se passe bien, malheureusement son chargement en mémoire est impossible :

cpb@raspberrypi:~ $ ollama run llama2:7b
Error: model requires more system memory (8.4 GiB) than is available (7.6 GiB)

Conclusion

L’objectif de cette expérience était de voir s’il était possible d’utiliser un modèle de langage LLM sur un système relativement restreint comme on en rencontre dans le domaine des systèmes embarqués. Il n’était évidemment pas question de faire l’entraînement du modèle qui réclame des ressources computationnelles gigantesques par rapport à un Raspberry Pi.

Les résultats sont étonnament bons. Certains modèles de tailles réduites donnent de très bonnes réponses. J’ai été très séduit par cette petite expérience, je vais probablement la prolonger sur d’autres systèmes embarqués en essayant de m’affranchir au maximum de l’OS.

Pendant bon nombre d’essais, le Raspberry Pi était déconnecté du réseau pour s’assurer qu’il n’y ait pas d’interactions avec un serveur distant.

J’ai entendu beaucoup de critiques de l’IA concernant sa consommation électrique. Nous voyons pourtant qu’interroger un petit LLM ne consommera qu’au maximum 27W (l’alimentation du Raspberry Pi 5) pendant quelques dizaines de secondes. L’utilisation d’un modèle est donc très raisonnable. Bien sûr la phase d’apprentissage initiale est beaucoup plus couteuse, d’autant que les gros LLM actuels sont plutôt constitués de centaines de milliards de paramètres. Mais comparé au domaine des crypto-monnaies, ou des NFT, je ne suis pas sûr que l’IA soit la plus vorace en énergie.

4 Réponses

  1. fredix dit :

    Salut, pour info il va sortir une carte IA pour raspberrypi5 : https://www.kubii.com/fr/raspberry-pi-5/4343-ai-kit-raspberry-pi-5056561803906.html

    De quoi faire encore plus de choses !

  2. Samuel BUFFET dit :

    La critique concernant la consommation électrique c’est plus sur les énormes fermes utilisées pour l’entrainement des modèles que pour l’inférence il me semble.

  3. Phil dit :

    Bonjour,

    Merci pour cet article, c’est très intéressant.
    Ayant un pi 5 avec 8Go, je pense mettre en pratique cet article, très prochainement
    Cordialement

  4. zonetuto dit :

    Merci pour cet article, je vais tester sur le mien pour des taches simples en fond et limiter la consommation pour du h24 🙂

URL de trackback pour cette page