{"id":6326,"date":"2024-07-23T06:30:00","date_gmt":"2024-07-23T05:30:00","guid":{"rendered":"https:\/\/www.blaess.fr\/christophe\/?p=6326"},"modified":"2024-11-15T08:48:55","modified_gmt":"2024-11-15T07:48:55","slug":"un-llm-sur-un-raspberry-pi","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2024\/07\/23\/un-llm-sur-un-raspberry-pi\/","title":{"rendered":"Un LLM sur un Raspberry Pi"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-full\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-00-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"225\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-00-1.png\" alt=\"\" class=\"wp-image-6396\"\/><\/a><\/figure><\/div>\n\n\n<p>J\u2019aime bien de temps en temps essayer des impl\u00e9mentations improbables, ex\u00e9cuter une t\u00e2che sur une plateforme inattendue ou l&rsquo;\u00e9crire dans un langage peu appropri\u00e9, juste pour l\u2019exercice.<\/p>\n\n\n\n<p>Par exemple, il y a quelques temps, je m\u2019\u00e9tais amus\u00e9 \u00e0 <a href=\"https:\/\/www.blaess.fr\/christophe\/2022\/02\/03\/5973\/\" data-type=\"post\" data-id=\"5973\"><strong>imbriquer des \u00e9mulateurs Qemu<\/strong><\/a> les uns dans les autres, en compilant l\u2019\u00e9mulateur central sur une machine cible tournant avec Qemu. Une autre fois nous avions r\u00e9ussi, avec mon fils, \u00e0 impl\u00e9menter un <a href=\"https:\/\/github.com\/Ezotose-1\/LaTeX_GameOfLife\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>jeu de la vie de Conway<\/strong><\/a> en utilisant uniquement le langage LaTeX.<\/p>\n\n\n\n<p>Avec l\u2019engouement actuel pour l&rsquo;IA et plus particuli\u00e8rement les <strong><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Grand_mod%C3%A8le_de_langage\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LLM<\/a><\/strong> (<em>Large Language Model<\/em>), j\u2019ai \u00e9t\u00e9 s\u00e9duit par l\u2019id\u00e9e de faire fonctionner un de ces mod\u00e8les sur une plateforme non pr\u00e9vue pour cela&nbsp;: un <strong>Raspberry Pi<\/strong>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h1 class=\"wp-block-heading\">Choix du Raspberry Pi<\/h1>\n\n\n\n<p>J\u2019ai choisi le mod\u00e8le <strong>Raspberry Pi 5<\/strong> &#8211; le plus puissant \u00e0 ce jour &#8211; avec 8 Gb de RAM. Cela pour deux raisons&nbsp;: le fonctionnement d&rsquo;un LLM est \u00e9videmment tr\u00e8s gourmand en ressources CPU et m\u00e9moire, et d&rsquo;autre part l&rsquo;impl\u00e9mentation que j&rsquo;ai choisie ne fonctionne que sur architecture x86 et sur Arm64. Il faut donc un Raspberry Pi supportant un OS <strong>64 bits<\/strong>. Un Pi 4 aurait peut-\u00eatre suffit, mais je pense que sa taille m\u00e9moire est trop limit\u00e9e.<\/p>\n\n\n\n<p>Pour cette exp\u00e9rience, j&rsquo;avais un objectif sous-jacent&nbsp;: v\u00e9rifier si un mod\u00e8le de langage est raisonnablement utilisable sur un syst\u00e8me relativement restreint (pour autant qu&rsquo;on puisse qualifier un Raspberry Pi 5 avec 8 Go de RAM d&rsquo;environnement restreint) avec une connexion Internet \u00e0 faible d\u00e9bit, voire inexistante. Ceci dans l&rsquo;objectif \u00e9ventuel d&rsquo;int\u00e9grer un LLM dans des syst\u00e8mes bas\u00e9s sur <strong>Linux embarqu\u00e9<\/strong>, pour des projets de clients ou pour des <strong><a href=\"https:\/\/www.logilin.fr\/formation-linux-embarque-avec-yocto-project.php\">sessions de formations<\/a><\/strong>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Choix du LLM<\/h1>\n\n\n\n<p>Pr\u00e9cisons bien le cadre de cet essai&nbsp;: il s&rsquo;agit de faire fonctionner le mod\u00e8le de langage <strong>localement<\/strong> sur le Raspberry Pi, pas d&rsquo;interroger un serveur dans le <em>cloud<\/em>.<\/p>\n\n\n\n<p>Il existe de nombreux mod\u00e8les de langages disponibles plus ou moins librement. Certains n\u00e9cessitent un abonnement et l&rsquo;obtention d&rsquo;une cl\u00e9 d&rsquo;API (<em>Gemini<\/em> de Google, <em>Claude<\/em> d&rsquo;Anthropic, <em>GPT<\/em> d&rsquo;OpenAI&#8230;).<\/p>\n\n\n\n<p>Une solution correspondant plus \u00e0 mon attente est l&rsquo;utilisation de <a href=\"https:\/\/ollama.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>Ollama<\/strong><\/a>, un outil sous licence libre (<em>MIT<\/em>), capable de charger et faire fonctionner des LLM sur Linux, Windows et MacOS.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Installation et tests<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Raspberry Pi OS<\/h2>\n\n\n\n<p>J&rsquo;ai install\u00e9 la derni\u00e8re version de Raspberry Pi OS (04\/07\/2024) en version 64 bits bas\u00e9e sur une distribution Debian 12.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ollama<\/h2>\n\n\n\n<p>L&rsquo;installation de <strong>Ollama<\/strong> est extr\u00eamement simple&nbsp;: un script \u00e0 t\u00e9l\u00e9charger et ex\u00e9cuter.<\/p>\n\n\n\n<p>Le site d&rsquo;Ollama sugg\u00e8re d&rsquo;utiliser la commande suivante qui t\u00e9l\u00e9charge le script et l&rsquo;envoie directement en entr\u00e9e d&rsquo;un shell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ <strong>curl -fsSL https:\/\/ollama.com\/install.sh | sh<\/strong><\/code><\/pre>\n\n\n\n<p>Je pr\u00e9f\u00e9rais jeter un \u0153il au contenu du script avant de l&rsquo;ex\u00e9cuter, aussi ai-je plut\u00f4t progress\u00e9 ainsi&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>curl  https:\/\/ollama.ai\/install.sh  &gt;  install.sh<\/strong>\n &#91;...]\n\ncpb@raspberrypi:~ $ <strong>chmod  +x  install.sh<\/strong><\/code><\/pre>\n\n\n\n<p>Apr\u00e8s avoir regard\u00e9 rapidement le contenu du script je l&rsquo;installe ainsi&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>.\/install.sh <\/strong>\n&gt;&gt;&gt; Downloading ollama...\n####################################################################################################################################################&gt;\n&gt;&gt;&gt; Installing ollama to \/usr\/local\/bin...\n&gt;&gt;&gt; Creating ollama user...\n&gt;&gt;&gt; Adding ollama user to render group...\n&gt;&gt;&gt; Adding ollama user to video group...\n&gt;&gt;&gt; Adding current user to ollama group...\n&gt;&gt;&gt; Creating ollama systemd service...\n&gt;&gt;&gt; Enabling and starting ollama service...\nCreated symlink \/etc\/systemd\/system\/default.target.wants\/ollama.service \u2192 \/etc\/systemd\/system\/ollama.service.\n&gt;&gt;&gt; The Ollama API is now available at 127.0.0.1:11434.\n&gt;&gt;&gt; Install complete. Run \"ollama\" from the command line.\nWARNING: No NVIDIA\/AMD GPU detected. Ollama will run in CPU-only mode.<\/code><\/pre>\n\n\n\n<p>Le script nous pr\u00e9vient qu&rsquo;il n&rsquo;a pas trouv\u00e9 de processeurs graphiques (<em>GPU<\/em>) Nvidia ou Amd. Pas \u00e9tonnant sur un Raspberry Pi&nbsp;! Et en cons\u00e9quence il fera tout le traitement directement sur les c\u0153urs du CPU.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Mod\u00e8les<\/h1>\n\n\n\n<p>La page \u00ab\u00a0<a href=\"https:\/\/ollama.com\/library\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Models<\/a>\u00a0\u00bb de Ollama regroupe une centaine de mod\u00e8les de langages disponibles. La plupart sont disponibles en deux \u00e0 trois versions en fonction de la taille du r\u00e9seau neuronal utilis\u00e9. Prenons l&rsquo;exemple du mod\u00e8le <code>phi3<\/code> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"452\" height=\"177\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-01.png\" alt=\"\" class=\"wp-image-6353\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-01.png 452w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-01-300x117.png 300w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><\/figure>\n\n\n\n<p>Les deux versions <code><strong>3B<\/strong><\/code> (<em>3 billion<\/em>, 3 milliards) et <code><strong>14B<\/strong><\/code> (<em>14 billion<\/em>, 14 milliards) correspondent aux nombres de \u00ab\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Param%C3%A8tre_d%27un_mod%C3%A8le_de_langage\" data-type=\"link\" data-id=\"https:\/\/fr.wikipedia.org\/wiki\/Param%C3%A8tre_d%27un_mod%C3%A8le_de_langage\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>param\u00e8tres<\/strong><\/a>\u00a0\u00bb du mod\u00e8le, soit approximativement le nombre de connexions entre les neurones du r\u00e9seau. Plus ce nombre est \u00e9lev\u00e9, plus les possibilit\u00e9s du LLM sont importantes. Mais en augmentant le nombre de param\u00e8tres, l&rsquo;espace m\u00e9moire n\u00e9cessaire pour l&rsquo;accueillir augmente et les ressources de calcul (puissance CPU, consommation \u00e9lectrique) indispensables pour parcourir le r\u00e9seau croissent \u00e9galement.<\/p>\n\n\n\n<p>Avec un Raspberry Pi comportant 8 Go RAM, inutile d&rsquo;esp\u00e9rer faire tourner des mod\u00e8les de plus de 7 milliards de param\u00e8tres environ, mais cela laisse encore un beau choix de mod\u00e8les.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Phi3<\/h2>\n\n\n\n<p>Le premier mod\u00e8le que je teste est <a href=\"https:\/\/ollama.com\/library\/phi3\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>Phi-3 de Microsoft<\/strong><\/a>, disponible sous licence MIT. Il existe en deux versions&nbsp;: 3.8 milliards et 14 milliards. C&rsquo;est \u00e9videmment la premi\u00e8re version que je vais utiliser. Pour l&rsquo;installer, on peut employer les noms <code>phi3:3.8b<\/code> ou <code>phi3:mini<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama pull phi3:mini<\/strong>\npulling manifest\npulling manifest\npulling 3e38718d00bb... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 2.2 GB  &gt;\npulling fa8235e5b48f... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 1.1 KB  &gt;\npulling 542b217f179c... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  148 B  &gt;\npulling 8dde1baf1db0... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f   78 B  &gt;\npulling ed7ab7698fdd... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  483 B  &gt;\nverifying sha256 digest\nwriting manifest\nremoving any unused layers\nsuccess<\/code><\/pre>\n\n\n\n<p>Au bout de deux minutes le mod\u00e8le est enregistr\u00e9 sur la carte SD du Raspberry Pi, pr\u00eat \u00e0 \u00eatre utilis\u00e9. Testons-le en lui posant une petite question simple&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama run phi3:mini<\/strong>\n&gt;&gt;&gt; Send a message (\/? for help)<\/code><\/pre>\n\n\n\n<p>Il a fallu une dizaine de secondes pour que Ollama charge et initialise le mod\u00e8le, avant de nous inviter \u00e0 lui poser une question.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; <strong>What is a raspberry pi?<\/strong>\n A Raspberry Pi is a small, affordable single-board computer developed by the Raspberry Pi\nFoundation in the UK. Its purpose is to promote teaching basic computer science in schools and \ndeveloping digital skills among learners globally, especially those who may lack access to such \nresources due to economic or other barriers. The device boasts various processor options \ncompatible with a full operating system like Linux, as well as peripherals that allow it to be \nused for projects ranging from media centers to home automation devices and robotics kits.\n\nIt has 1-2 USB ports along with audio\/video output capabilities and provides enough computational \npower for educational purposes or simple personal computing tasks through a Linux operating system \nloaded onto its microSD card, which can be installed via the Raspberry Pi Imager toolkit on \nWindows PCs, Macs, and some other devices.\n\nThe device measures just over 60mm by 30mm with dimensions similar to those of an SDHC memory card \nwhile weighing only about as much (around 24 grams). It is powered through a micro USB port on the \nboard which can be connected directly into a wall adapter or use battery packs, offering \nconvenience and flexibility.\n\nRaspberry Pi has evolved with several generations of boards: The first generation Raspberry Pi \nstarted in 2012; followed by second (released in February 2tyr3), third (Wavesby released in \nDecember 2014, also known as the Model B+ and later renamed to \"Model B\"), fourth gen (\"Bullseye\", \nJanuary 2018) which includes Raspberry Pi Zero W; latest fifth generation releases are Broadcom \nsystem-on-chip based boards (released in April &amp; September of 2022 as\"Centenary\") with an emphasis \non speed and power efficiency.\n\nRaspberry Pis also come in different versions, such as the Raspberry Pi Model A which is smaller \nthan its counterparts but has fewer I\/O pins; there's even a version that comes without HDMI \noutput called \"Zero\" or Zero W, released later with Wi-Fi capabilities.\n\nRaspberry Pi can be used for various applications such as home automation projects like smart \nlighting systems and security cameras to robotics kits where it acts as the main processing unit \nof a small drone; educational purposes include learning about programming languages (like Python) \nor even creating simple games, multimedia players, etc.\n\nAside from being used in various personal computing applications for hobbyists, researchers and \ndevelopers are using Raspberry Pi to create low-cost solutions such as smart city devices like \ntraffic sensors; environmental monitoring systems that measure air quality levels among many other \nthings which showcase the versatility of this small but mighty computer.\n\n&gt;&gt;&gt; Send a message (\/? for help)\n<\/code><\/pre>\n\n\n\n<p>Plut\u00f4t bavard ce mod\u00e8le&nbsp;! Il a pris un peu plus de trois minutes pour \u00e9crire ce texte. Comme l&rsquo;affichage se faisait par s\u00e9quences proches de la taille d&rsquo;un mot, cela correspond au d\u00e9bit d&rsquo;une parole calme. On pourrait tr\u00e8s bien alimenter un synth\u00e9tiseur vocal \u00e0 ce rythme et obtenir un discours assez pos\u00e9.<\/p>\n\n\n\n<p>Comme j&rsquo;\u00e9tais supris de la quantit\u00e9 et de la qualit\u00e9 de la r\u00e9ponse, j&rsquo;ai reboot\u00e9 le Raspberry Pi en <strong>le d\u00e9connectant physiquement du r\u00e9seau<\/strong> et j&rsquo;ai repos\u00e9 la m\u00eame question ce qui conduit \u00e0 une r\u00e9ponse l\u00e9g\u00e8rement diff\u00e9rente, mais en substance assez proche sur la capture d&rsquo;\u00e9cran ci-dessous&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"600\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-02.png\" alt=\"LLM sur Raspberry Pi 5\" class=\"wp-image-6362\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-02.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-02-300x176.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2024\/07\/llm-on-pi-02-768x450.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Apr\u00e8s avoir quitt\u00e9 Ollama avec la commande <code>\/bye<\/code> nous allons faire une petite exp\u00e9rience.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; Send a message (\/? for help)\n&gt;&gt;&gt; <strong>\/bye<\/strong>\ncpb@raspberrypi:~ $<\/code><\/pre>\n\n\n\n<p>Lorsqu&rsquo;il a d\u00e9marr\u00e9, Ollama a install\u00e9 un service sur le port TCP 11434 du Raspberry Pi qui offre une API Rest pour interagir avec lui. Nous allons l&rsquo;interroger depuis le shell du m\u00eame Raspberry Pi, avec la commande <code><strong>curl<\/strong><\/code>.<\/p>\n\n\n\n<p>Nous allons aussi en profiter pour lui poser une question en <strong>fran\u00e7ais<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>curl http:\/\/localhost:11434\/api\/generate -d '{ \"model\": \"phi3:mini\", \"prompt\": \"<span style=\"text-decoration: underline;\">Quelle est la quatri\u00e8me plan\u00e8te du syst\u00e8me solaire ?<\/span>\" }'<\/strong><\/code><\/pre>\n\n\n\n<p>Pendant les quelques minutes qui suivent, nous recevons des r\u00e9ponse d&rsquo;Ollama qui construisent peu \u00e0 peu le contenu de sa r\u00e9ponse. Les messages sont horodat\u00e9s, le champ \u00ab\u00a0<em>response<\/em>\u00a0\u00bb de chaque ligne contient la portion de texte et le champ \u00ab\u00a0<em>done<\/em>\u00a0\u00bb est \u00e0 \u00ab\u00a0faux\u00a0\u00bb pour indiquer que la r\u00e9ponse n&rsquo;est pas compl\u00e8te. Je marque en gras le champ r\u00e9ponse pour que son contenu soit lisible&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:17.084478429Z\",\"response\":\"<strong> La<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:17.369720015Z\",\"response\":\"<strong> qu<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:17.628725439Z\",\"response\":\"<strong>atri<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:17.887893364Z\",\"response\":\"<strong>\u00e8me<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:18.146665529Z\",\"response\":\"<strong> plan<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:18.405267322Z\",\"response\":\"<strong>\u00e8te<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:18.664291747Z\",\"response\":\"<strong> du<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:18.923346486Z\",\"response\":\"<strong> syst\u00e8me<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:19.181757649Z\",\"response\":\"<strong> sol<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:19.4407295Z\",\"response\":\"<strong>aire<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:19.699538905Z\",\"response\":\"<strong>,<\/strong>\",\"done\":false}\n&#91;...]\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:25.058321233Z\",\"response\":\"<strong> est<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:25.329659597Z\",\"response\":\"<strong> Mars<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:43:25.600804776Z\",\"response\":\"<strong>.<\/strong>\",\"done\":false}\n&#91;...]\n<\/code><\/pre>\n\n\n\n<p>Au bout de quelques instants, Phi-3 s&rsquo;arr\u00eate &#8211; non sans nous avoir donn\u00e9 un cours de g\u00e9ographie martienne &#8211; et termine avec un ultime message dont le champ \u00ab\u00a0<em>done<\/em>\u00a0\u00bb passe \u00e0 \u00ab\u00a0vrai\u00a0\u00bb .<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:03.022767578Z\",\"response\":\" <strong>les<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:03.331061632Z\",\"response\":\"<strong> plus<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:03.639537317Z\",\"response\":\"<strong> grandes<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:03.948115316Z\",\"response\":\"<strong> structures<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:04.257345336Z\",\"response\":\"<strong> ro<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:04.565302908Z\",\"response\":\"<strong>che<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:04.874108446Z\",\"response\":\"<strong>uses<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:05.182596871Z\",\"response\":\"<strong> conn<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:05.490781443Z\",\"response\":\"<strong>ues<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:05.799564851Z\",\"response\":\"<strong> dans<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:06.10923715Z\",\"response\":\"<strong> le<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:06.447442283Z\",\"response\":\"<strong> syst\u00e8me<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:06.755825597Z\",\"response\":\"<strong> sol<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:07.064675857Z\",\"response\":\"<strong>aire<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:07.373813932Z\",\"response\":\"<strong> :<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:07.681658855Z\",\"response\":\"<strong> les<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:07.990091225Z\",\"response\":\"<strong> can<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:08.306772505Z\",\"response\":\"<strong>y<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:08.623075266Z\",\"response\":\"<strong>ons<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:08.940534344Z\",\"response\":\"<strong> Olymp<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:09.257847867Z\",\"response\":\"<strong>us<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:09.574017294Z\",\"response\":\"<strong> M<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:09.890405092Z\",\"response\":\"<strong>ons<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:10.206899964Z\",\"response\":\"<strong> et<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:10.523604097Z\",\"response\":\"<strong> Vall<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:10.840915693Z\",\"response\":\"<strong>es<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:11.157677085Z\",\"response\":\"<strong> Mar<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:11.474101846Z\",\"response\":\"<strong>iner<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:11.790493903Z\",\"response\":\"<strong>is<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:12.106910183Z\",\"response\":\"<strong>.<\/strong>\",\"done\":false}\n{\"model\":\"phi3:mini\",\"created_at\":\"2024-07-21T05:44:12.423664722Z\",\"response\":\"\",<strong>\"done\":true<\/strong>,\"done_reason\":\"stop\",\"context\":&#91;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}\n<\/code><\/pre>\n\n\n\n<p>Je vais essayer quelques mod\u00e8les suppl\u00e9mentaires, mais la taille de ma carte SD \u00e9tant limit\u00e9e, je vais au pr\u00e9lable effacer le mod\u00e8le Phi-3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama rm phi3:mini<\/strong>\ndeleted 'phi3:mini'<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Gema<\/h2>\n\n\n\n<p>Gema est une s\u00e9rie de mod\u00e8les propos\u00e9e par <em>Google Deepmind<\/em> dont la taille est optimis\u00e9e. Il existe une version minimale avec 2 milliards de param\u00e8tres. J&rsquo;ai test\u00e9 la version 1.1 de Gema&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ ollama pull gemma:2b\npulling manifest \npulling c1864a5eb193... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 1.7 GB                         \npulling 097a36493f71... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 8.4 KB                         \npulling 109037bec39c... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  136 B                         \npulling 22a838ceb7fb... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f   84 B                         \npulling 887433b89a90... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  483 B                         \nverifying sha256 digest \nwriting manifest \nremoving any unused layers \nsuccess \n<\/code><\/pre>\n\n\n\n<p>Ce mod\u00e8le est beaucoup plus concis dans ses r\u00e9ponses. Je lui ai pos\u00e9 plusieurs fois la m\u00eame question, ses r\u00e9ponse en fran\u00e7ais sont moins bonnes qu&rsquo;en anglais (c&rsquo;est normal, je suppose que l&rsquo;\u00e9chantillon d&rsquo;entra\u00eenement est essentiellement anglophone). Notons que dans ma premi\u00e8re question il a pris \u00ab\u00a0conna\u00eetre\u00a0\u00bb dans le sens de \u00ab\u00a0avoir rencontr\u00e9 personnellement\u00a0\u00bb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama run gemma:2b<\/strong>\n&gt;&gt;&gt; <strong>Connais-tu Obi-Wan Kenobi ?<\/strong>\nJe n'ai pas acc\u00e8s \u00e0 la m\u00e9moire ou \u00e0 l'apprentissage personnel, donc je n'ai pas connaissance de Obi-Wan Kenobi.\n\n&gt;&gt;&gt; <strong>Qui est Obi-Wan Kenobi ?<\/strong>\nObi-Wan Kenobi est un personnage fictif apparaissant dans la s\u00e9rie de romans et de films \"Star Wars\". Il est un Jedi ma\u00eetre, un sage qui a \u00e9t\u00e9 \noriginaire sur la plan\u00e8te Terre.\n\n&gt;&gt;&gt; <strong>\/bye<\/strong>\n\ncpb@raspberrypi:~ $ <strong>ollama run gemma:2b<\/strong>\n&gt;&gt;&gt; <strong>Qui est Obi-Wan Kenobi ?<\/strong>\nObi-Wan Kenobi est un personnage fictif qui joue un r\u00f4le central dans la s\u00e9rie de romans de science-fiction et de film de Disney \"Star Wars\". \nIl est le ma\u00eetre des Jedi, un ordre monastique qui sauve le monde de la mal\u00e9diction du Sith\n\n&gt;&gt;&gt; <strong>\/bye<\/strong>\n\ncpb@raspberrypi:~ $ <strong>ollama run gemma:2b<\/strong>\n&gt;&gt;&gt; <strong>Do you know Obi-Wan Kenobi? <\/strong>\nI do not have personal knowledge or the ability to form opinions. I am a large language model, trained by Google.\n\n&gt;&gt;&gt; \ncpb@raspberrypi:~ $ <strong>ollama run gemma:2b<\/strong>\n&gt;&gt;&gt; <strong>Do you know who Obi-Wan Kenobi is?<\/strong>\nSure. Obi-Wan Kenobi is a fictional character in the Star Wars franchise of films, a series of science fiction movies produced by Lucasfilm. He \nis a highly skilled and experienced Jedi Knight, one of the most powerful and respected warriors in the galaxy.\n\n&gt;&gt;&gt; Send a message (\/? for help)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mistral<\/h2>\n\n\n\n<p>Le mod\u00e8le Mistral version 0.3 \u00e0 7 milliards de param\u00e8tres est propos\u00e9 par la startup fran\u00e7aise <strong>Mistral AI<\/strong> sous licence Apache. Je l&rsquo;installe&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama pull mistral:7b<\/strong>\npulling manifest \npulling ff82381e2bea... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 4.1 GB                         \npulling 43070e2d4e53... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  11 KB                         \npulling 491dfa501e59... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  801 B                         \npulling ed11eda7790d... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f   30 B                         \npulling 42347cd80dc8... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  485 B                         \nverifying sha256 digest \nwriting manifest \nremoving any unused layers \nsuccess \ncpb@raspberrypi:~ $ \n<\/code><\/pre>\n\n\n\n<p>J&rsquo;ai essay\u00e9 quelque chose qui s&rsquo;est av\u00e9r\u00e9 assez amusant, je lui ai donn\u00e9 les premiers mots du <a href=\"https:\/\/fr.wikisource.org\/wiki\/Les_Fleurs_du_mal_(1861)\/Spleen_(%C2%AB_Quand_le_ciel_bas_et_lourd_p%C3%A8se_comme_un_couvercle_%C2%BB)\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>spleen de Beaudelaire<\/strong><\/a> en lui demandant de compl\u00e9ter la citation&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama run mistral:7b<\/strong>\n&gt;&gt;&gt; <strong>Continue cette citation \"Quand le ciel bas et lourd p\u00e8se comme un couvercle\"<\/strong>\n\n\nOu peut-\u00eatre que c'est l'\u00e2me qui plaint sous la pression de ses pens\u00e9es,\nEt que les nuages gris se sont accumul\u00e9s en r\u00e9ponse \u00e0 nos d\u00e9sespoirs.\nLes murs se contractent sous le poids d'un regard triste et d\u00e9chir\u00e9,\nEt chaque voix qui s'\u00e9l\u00e8ve vers le ciel semble retentir dans une chambre vide.\n\n&lt;no value&gt;\n\nOu peut-\u00eatre que la nuit s'est abstraite pour nous laisser seul avec nos pens\u00e9es,\nPour que nous puissions nous regarder dans le miroir de nos vies et trouver des r\u00e9ponses,\nEt que chaque \u00e9toile qui brillait \u00e0 travers les nuages est une question \u00e0 laquelle nous avons r\u00e9pondu.<\/code><\/pre>\n\n\n\n<p>M\u00eame si la r\u00e9ponse n&rsquo;est pas du tout le texte du po\u00e8me original, je trouve que l&rsquo;ambiance en est tr\u00e8s proche, et que globalement le texte g\u00e9n\u00e9r\u00e9 a de bonnes qualit\u00e9s po\u00e9tiques. On remarquera \u00e9galement le <code><strong>&lt;no value&gt;<\/strong><\/code> qui, je suppose, signale une ligne vide pour chanter de strophe.<\/p>\n\n\n\n<p>J&rsquo;ai r\u00e9essay\u00e9 en anglais avec le d\u00e9but de <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Si_(po%C3%A8me)\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u00ab\u00a0<strong>If<\/strong>\u00a0\u00bb de Kipling<\/a>, toutefois les r\u00e9sultats sont beaucoup moins po\u00e9tiques. Peut-\u00eatre un biais d\u00fb \u00e0 la consultation de trop nombreux textes de d\u00e9veloppement personnel&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; <strong>Please complete this text: \"If you can keep your head when all about you are losing theirs and\"<\/strong>\n remain calm, and in control. That is the sign of a true leader.\n\nIn other words, it means that even in chaotic or stressful situations, you should be able to think clearly and make rational decisions. This \nquality is often sought after in leadership roles because it shows that you can maintain composure, focus on the task at hand, and not let \nemotions cloud your judgment.\n\nBeing 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 \nthat they can rely on you to stay calm and steady in difficult situations, which can help improve morale and increase productivity.\n\nOverall, keeping your head in stressful situations is an essential skill for anyone who wants to succeed in their personal or professional \nlife. It requires discipline, self-awareness, and the ability to stay focused on the task at hand. But by cultivating this skill, you can \nbecome a more effective leader, build stronger relationships, and achieve greater success.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Llama2<\/h2>\n\n\n\n<p>La famille de mod\u00e8le Llama distribu\u00e9e par Meta sous licence \u00ab\u00a0<em>Llama Acceptable Use Policy<\/em>\u00a0\u00bb se d\u00e9cline en plusieurs g\u00e9n\u00e9rations. La plus puissantes est Llama3, mais elle est, je pense, beaucoup trop grosse pour la m\u00e9moire du petit Raspberry Pi. En revanche la version 2 existe en mod\u00e8le \u00e0 7 milliards de param\u00e8tres que je vais tenter d&rsquo;utiliser<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama pull llama2:7b<\/strong>\npulling manifest \npulling 8934d96d3f08... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 3.8 GB                         \npulling 8c17c2ebb0ea... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 7.0 KB                         \npulling 7c23fb36d801... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f 4.8 KB                         \npulling 2e0493f67d0c... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f   59 B                         \npulling fa304d675061... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f   91 B                         \npulling 42ba7f8a01dd... 100% \u2595\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f  557 B                         \nverifying sha256 digest \nwriting manifest \nremoving any unused layers \nsuccess \ncpb@raspberrypi:~ $ <\/code><\/pre>\n\n\n\n<p>L&rsquo;installation du mod\u00e8le se passe bien, malheureusement son chargement en m\u00e9moire est impossible&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cpb@raspberrypi:~ $ <strong>ollama run llama2:7b<\/strong>\nError: model requires more system memory (8.4 GiB) than is available (7.6 GiB)\n\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>L&rsquo;objectif de cette exp\u00e9rience \u00e9tait de voir s&rsquo;il \u00e9tait possible <strong>d&rsquo;utiliser<\/strong> un mod\u00e8le de langage <strong>LLM<\/strong> sur un syst\u00e8me relativement restreint comme on en rencontre dans le domaine des syst\u00e8mes embarqu\u00e9s. Il n&rsquo;\u00e9tait \u00e9videmment pas question de faire l&rsquo;entra\u00eenement du mod\u00e8le qui r\u00e9clame des ressources computationnelles gigantesques par rapport \u00e0 un <strong>Raspberry Pi<\/strong>.<\/p>\n\n\n\n<p>Les r\u00e9sultats sont \u00e9tonnament bons. Certains mod\u00e8les de tailles r\u00e9duites donnent de tr\u00e8s bonnes r\u00e9ponses. J&rsquo;ai \u00e9t\u00e9 tr\u00e8s s\u00e9duit par cette petite exp\u00e9rience, je vais probablement la prolonger sur d&rsquo;autres <strong>syst\u00e8mes embarqu\u00e9s<\/strong> en essayant de m&rsquo;affranchir au maximum de l&rsquo;OS.<\/p>\n\n\n\n<p>Pendant bon nombre d&rsquo;essais, le Raspberry Pi \u00e9tait <strong>d\u00e9connect\u00e9 du r\u00e9seau<\/strong> pour s&rsquo;assurer qu&rsquo;il n&rsquo;y ait pas d&rsquo;interactions avec un serveur distant.<\/p>\n\n\n\n<p>J&rsquo;ai entendu beaucoup de critiques de l&rsquo;IA concernant sa consommation \u00e9lectrique. Nous voyons pourtant qu&rsquo;interroger un petit LLM ne consommera qu&rsquo;au maximum 27W (l&rsquo;alimentation du Raspberry Pi 5) pendant quelques dizaines de secondes. L&rsquo;utilisation d&rsquo;un mod\u00e8le est donc tr\u00e8s raisonnable. Bien s\u00fbr la phase d&rsquo;apprentissage initiale est beaucoup plus couteuse, d&rsquo;autant que les gros LLM actuels sont plut\u00f4t constitu\u00e9s de centaines de milliards de param\u00e8tres. Mais compar\u00e9 au domaine des crypto-monnaies, ou des NFT, je ne suis pas s\u00fbr que l&rsquo;IA soit la plus vorace en \u00e9nergie.<\/p>","protected":false},"excerpt":{"rendered":"<p>J&rsquo;aime bien de temps en temps essayer des impl&eacute;mentations improbables, ex&eacute;cuter une t&acirc;che sur une plateforme inattendue ou l&rsquo;&eacute;crire dans un langage peu appropri&eacute;, juste pour l&rsquo;exercice. Par exemple, il y a quelques temps, je m&rsquo;&eacute;tais amus&eacute; &agrave; imbriquer des &eacute;mulateurs Qemu les uns dans les autres, en compilant l&rsquo;&eacute;mulateur central sur une machine cible [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,8,11],"tags":[],"class_list":["post-6326","post","type-post","status-publish","format-standard","hentry","category-ia","category-linux-2","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/6326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=6326"}],"version-history":[{"count":52,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/6326\/revisions"}],"predecessor-version":[{"id":6985,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/6326\/revisions\/6985"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=6326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=6326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=6326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}