{"id":1087,"date":"2024-02-05T19:15:05","date_gmt":"2024-02-05T18:15:05","guid":{"rendered":"https:\/\/artificiellementintelligent.wordpress.com\/?p=1087"},"modified":"2024-02-05T19:15:05","modified_gmt":"2024-02-05T18:15:05","slug":"les-modeles-generatifs-locaux","status":"publish","type":"post","link":"https:\/\/artificiellementintelligent.eu\/index.php\/2024\/02\/05\/les-modeles-generatifs-locaux\/","title":{"rendered":"Les mod\u00e8les g\u00e9n\u00e9ratifs locaux"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si 2023 a \u00e9t\u00e9 domin\u00e9e par les mod\u00e8les mis \u00e0 disposition dans le <em>cloud<\/em> comme chatGPT ou Claude, cette approche pourrait fort bien \u00e9voluer cette ann\u00e9e. Ceci est d\u00fb aux progr\u00e8s rapides des mod\u00e8les <em>open-source<\/em>, qui r\u00e9duisent progressivement l&rsquo; \u00e9cart avec les mod\u00e8les propri\u00e9taires. Ces mod\u00e8les open-source rendent possible l&rsquo; ex\u00e9cution locale de mod\u00e8les, ce qui offre de nouvelles perspectives que je vais exposer dans cet article.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo; ai d\u00e9j\u00e0 publi\u00e9 une analyse g\u00e9n\u00e9rale des avantages et inconv\u00e9nients des mod\u00e8les open-source <a href=\"https:\/\/artificiellementintelligent.wordpress.com\/2023\/12\/03\/les-modeles-de-langage-open-source\/\">ici<\/a>, ainsi qu&rsquo;une pr\u00e9sentation de la start-up fran\u00e7aise <em>Mistral<\/em> (<a href=\"https:\/\/artificiellementintelligent.wordpress.com\/2023\/12\/25\/mistral-la-start-up-francaise-qui-fait-du-bruit\/\">ici<\/a>). Cet article pr\u00e9sente les choses d&rsquo; un point de vue plus pratique : quels sont les \u00e9lements \u00e0 prendre en compte lors du choix et de l&rsquo; installation d&rsquo; un mod\u00e8le local, et comment l&rsquo; exploiter ensuite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Identifier et choisir un mod\u00e8le local<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re question est de d\u00e9terminer les cas d&rsquo; utilisation de mod\u00e8les g\u00e9n\u00e9ratifs qui sont pertinents pour vous. Vous pourrez alors vous orienter vers un mod\u00e8le r\u00e9pondant \u00e0 vos besoins. Pour cela, vous pourrez vous baser sur diff\u00e9rents indicateurs de performance qui sont publi\u00e9s r\u00e9guli\u00e8rement pour tous les mod\u00e8les disponibles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous trouverez <a href=\"https:\/\/huggingface.co\/spaces\/lmsys\/chatbot-arena-leaderboard\">ici<\/a> un tableau de bord reprenant une s\u00e9rie repr\u00e9sentative d&rsquo;indicateurs de performance. Ce tableau de bord est remis \u00e0 jour tr\u00e8s r\u00e9guli\u00e8rement. Etudions-le un peu plus en d\u00e9tail.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240205a.png\" alt=\"\" class=\"wp-image-1091\" \/><figcaption class=\"wp-element-caption\">Figure 1 : Le LMSYS Chatbot Arena sur Huggingface<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Voyons tout d&rsquo; abord comment interpr\u00e9ter les diff\u00e9rents indicateurs de performance mentionn\u00e9s:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Arena Elo<\/em> : Il s&rsquo; agit d&rsquo; un syst\u00e8me de classement comparable aux points <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Classement_Elo\">Elo<\/a> utilis\u00e9 par les joueurs d&rsquo; \u00e9checs. Un \u00eatre humain pose une question et la r\u00e9ponse de deux mod\u00e8les choisis au hasard lui est pr\u00e9sent\u00e9e en retour. L&rsquo; humain choisit la meilleure r\u00e9ponse (le gagnant), et les points Elo des deux mod\u00e8les sont mis \u00e0 jour en cons\u00e9quence. Le syst\u00e8me compte \u00e0 ce jour plus de 200.000 affrontements entre mod\u00e8les&#8230;<br><\/li>\n\n\n\n<li><em>MT-bench<\/em> : Ce test est bas\u00e9 sur une s\u00e9rie de 80 dialogues standardis\u00e9s couvrant huit domaines (10 questions par domaine) : r\u00e9daction, incarnation de r\u00f4le, extraction d&rsquo; information, raisonnement, math\u00e9matiques, programmation, sciences naturelles et sciences humaines. Chaque dialogue consiste en plusieurs questions successives sur le m\u00eame sujet. Une fois le dialogue termin\u00e9, GPT4 \u00e9value la qualit\u00e9 de la r\u00e9ponse et lui attribue un score.<br><\/li>\n\n\n\n<li><em>MMLU<\/em> : Cet indicateur utilise un grand nombre de questions \u00e0 choix multiples choisies parmi 57 cat\u00e9gories couvrant l&rsquo; essentiel du savoir humain. L&rsquo; avantage d&rsquo; un QCM est que l&rsquo; \u00e9valuation de la r\u00e9ponse est imm\u00e9diate et sans ambiguit\u00e9.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Et si la programmation est votre cas d&rsquo; utilisation principal, il existe un indicateur sp\u00e9cialis\u00e9 <em>HumanEval<\/em> qui \u00e9value l&rsquo; aptitude \u00e0 la programmation \u00e0 travers 164 tests. Vous pouvez acc\u00e9der \u00e0 un tableau de bord pour HumanEval <a href=\"https:\/\/klu.ai\/glossary\/humaneval-benchmark\">ici<\/a> :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240225b.png\" alt=\"\" class=\"wp-image-1111\" \/><figcaption class=\"wp-element-caption\">Figure 2 : Un tableau de bord HumanEval (credit : KLU.ai)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">En r\u00e8gle g\u00e9n\u00e9rale, au plus le mod\u00e8le compte de param\u00e8tres, au plus les r\u00e9ponses du mod\u00e8le seront riches et pr\u00e9cises, mais au plus de ressources son exploitation n\u00e9cessitera. Beaucoup de mod\u00e8les \u00e9tant disponibles en plusieurs tailles, c&rsquo;est un param\u00e8tre sur lequel vous pouvez jouer dans une seconde \u00e9tape si vous vous rendez compte que le mod\u00e8le est trop impr\u00e9cis ou trop gourmand en ressources. Il faudra tenir compte de certaines contraintes: la m\u00e9moire de votre machine limitera la taille des mod\u00e8les qui pourront fonctionner dessus, alors que la performance d\u00e9pendra surtout du ou des processeurs disponibles (CPU ou GPU).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Autre point : certains mod\u00e8les ont \u00e9t\u00e9 <em>affin\u00e9s<\/em> pour exceller dans un domaine particulier (la cr\u00e9ation artistique, la programmation, le domaine m\u00e9dical&#8230;). Si vous pouvez mettre la main sur un mod\u00e8le affin\u00e9 dans le domaine qui vous int\u00e9resse, utilisez-le en priorit\u00e9 car il a toutes les changes de pr\u00e9senter une meilleure efficacit\u00e9 relative qu&rsquo; un mod\u00e8le g\u00e9n\u00e9raliste de m\u00eame taille. Par exemple, si c&rsquo; est la programmation qui vous int\u00e9resse, orientez-vers <em>WizardCoder<\/em>, <em>Magicoder<\/em> ou <em>CodeLlama<\/em>&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez aussi affiner vous-m\u00eame un mod\u00e8le open-source g\u00e9n\u00e9raliste pour le faire approcher au plus pr\u00e8s de votre cas d&rsquo; utilisation. C&rsquo;est une approche plus complexe, dont je parlerai dans un article futur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, pensez toujours \u00e0 v\u00e9rifier les conditions de licence pour voir si cette derni\u00e8re est compatible avec l&rsquo; utilisation que vous envisagez. Les mod\u00e8les de langage sont souvent publi\u00e9s sous des licences open-source modifi\u00e9es contenant certaines restrictions d&rsquo; utilisation&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Installer un programme d&rsquo; exploitation et t\u00e9l\u00e9charger le mod\u00e8le<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo; heure est maintenant venue d&rsquo; installer un moteur d&rsquo; exploitation sur votre ordinateur. En voici trois, tous gratuits :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/ollama.ai\/\">Ollama<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/lmstudio.ai\/\">LM Studio<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/oobabooga\/text-generation-webui\">Text-generation-Webui<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Vous trouverez quelques bonnes vid\u00e9os explicatives des m\u00e9canismes d&rsquo; installation et d&rsquo; utilisation de ces programmes dans la partie \u00ab\u00a0R\u00e9f\u00e9rences\u00a0\u00bb ci-dessous. Ces programmes contiennent une fonctionnalit\u00e9 int\u00e9gr\u00e9e de recherche et d&rsquo; installation des mod\u00e8les. Le t\u00e9l\u00e9chargement manuel du mod\u00e8le depuis un site comme <em>HuggingFace<\/em> n&rsquo; est donc en g\u00e9n\u00e9ral pas n\u00e9cessaire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prenons l&rsquo; exemple de <em>Ollama<\/em> qui est extr\u00eamement facile \u00e0 utiliser. Une fois l&rsquo; application install\u00e9e sur votre machine, vous pouvez aller voir la liste des mod\u00e8les disponibles <a href=\"https:\/\/ollama.ai\/library\">ici<\/a> :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240205c.png\" alt=\"\" class=\"wp-image-1099\" \/><figcaption class=\"wp-element-caption\">Figure 3 : Liste des mod\u00e8les Ollama disponibles)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Il suffit ensuite de demander le lancement d&rsquo; un mod\u00e8le via la commande <code>ollama run *model*<\/code>. Ollama t\u00e9l\u00e9chargera d&rsquo; abord le mod\u00e8le si ce dernier n&rsquo; est pas d\u00e9j\u00e0 pr\u00e9sent localement, puis ouvrira une session de dialogue interactif. Tapez <code>\/bye<\/code> pour arr\u00eater la session interactive. <br><br>Quelques autres commandes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Ollama list<\/code> :\u2002fournit la liste des mod\u00e8les disponibles localement.<\/li>\n\n\n\n<li><code>Ollama pull *model*<\/code> :  installe un mod\u00e8le sans lancer l&rsquo; ex\u00e9cution.<\/li>\n\n\n\n<li><code>Ollama rm *model*<\/code> :  supprime le mod\u00e8le local.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Difficile de faire plus simple&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Exploiter un mod\u00e8le local<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Premier cas d&rsquo; utilisation, le plus \u00e9vident : la conversation avec le mod\u00e8le. Les applications d\u00e9crites au point pr\u00e9c\u00e9dent offrent cette fonctionnalit\u00e9 sans besoin d&rsquo; installations suppl\u00e9mentaires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le second cas d&rsquo; utilisation que je voudrais pr\u00e9senter est l&rsquo; assistant de programmation int\u00e9gr\u00e9 dans un environnement de d\u00e9veloppement (IDE). Je vais prendre comme example un des environnements les plus r\u00e9pandus: <em>Microsoft VSCode<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe des extensions pour VSCode comme <a href=\"https:\/\/continue.dev\/\">Continue<\/a> et <a href=\"https:\/\/sourcegraph.com\/cody\">Cody<\/a> qui fournissent une fonction d&rsquo; assistance en interagissant avec un mod\u00e8le de langage. Pour interagir avec un mod\u00e8le cloud, il faudra configurer le mod\u00e8le d\u00e9sir\u00e9 et la cl\u00e9 d&rsquo;acc\u00e8s. Pour un mod\u00e8le local, il suffit de sp\u00e9cifier l&rsquo; application (Ollama ou autre) et le mod\u00e8le \u00e0 utiliser. C&rsquo;est tout.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple, voici <em>Continue<\/em> utilisant le mod\u00e8le <em>Mistral7B<\/em> via Ollama sur mon iMac :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240205d.png\" alt=\"\" class=\"wp-image-1103\" \/><figcaption class=\"wp-element-caption\">Figure 4 : Int\u00e9gration de VSCode et Mistral7B via l&rsquo; extension Continue<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Enfin, troisi\u00e8me cas d&rsquo;utilisation, l&rsquo; acc\u00e8s direct aux mod\u00e8les locaux via un programme informatique. Ici aussi, c&rsquo; est facile : la pr\u00e9sence d&rsquo; interfaces de programmation sur les applications les rend facilement int\u00e9grables dans des processus informatis\u00e9s internes. Par exemple, Ollama offre un point d&rsquo;entr\u00e9e REST accessible sur le port 11434 dont la documentation est accessible <a href=\"https:\/\/github.com\/ollama\/ollama\/blob\/main\/docs\/api.md\">ici<\/a>. Et depuis peu, une librairie <a href=\"https:\/\/github.com\/ollama\/ollama-python\">ollama-python<\/a> est disponible ce qui simplifie encore plus les choses.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. R\u00e9flexions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avec les applications actuelles, l&rsquo; utilisation de mod\u00e8les locaux est devenue tr\u00e8s ais\u00e9e. Les progr\u00e8s rapides des mod\u00e8les <em>open-source<\/em> en font une option tr\u00e8s int\u00e9ressante qui r\u00e9sout un certain nombre de d\u00e9savantages des mod\u00e8les propri\u00e9taires dans le cloud. Ces mod\u00e8les n&rsquo; atteignent pas encore les performances des meilleurs mod\u00e8les propri\u00e9taires comme GPT-4, mais la disponibilit\u00e9 prochaine de <em>Llama 3<\/em> et les progr\u00e8s rapides de <em>Mistral<\/em> permettent d&rsquo; \u00eatre optimistes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si les mod\u00e8les locaux sont op\u00e9rationnels d\u00e8s aujourd&rsquo;hui, 2024 devrait voir l&rsquo; \u00e9mergence de mod\u00e8les fonctionnant sur <em>smartphone<\/em>. Internet bruisse de rumeurs selon lesquelles Apple se pr\u00e9parerait \u00e0 lancer une nouvelle version de Siri bas\u00e9e sur un mod\u00e8le g\u00e9n\u00e9ratif pouvant piloter certaines applications du t\u00e9l\u00e9phone. <em>Samsung<\/em>, de son c\u00f4t\u00e9 a d\u00e9velopp\u00e9 un mod\u00e8le de langage appel\u00e9 <em>Gauss<\/em> destin\u00e9 \u00e0 \u00eatre int\u00e9gr\u00e9 sur ses t\u00e9l\u00e9phones dans un avenir proche&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Notes et r\u00e9f\u00e9rences<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>What are quantized LLMs ?<\/em>, par Miguel Carrera Neves le 16 d\u00e9cembre 2023 sur TensorOps : <a href=\"https:\/\/www.tensorops.ai\/post\/what-are-quantized-llms\">https:\/\/www.tensorops.ai\/post\/what-are-quantized-llms<\/a><br><\/li>\n\n\n\n<li>Tutoriel Youtube Ollama : <a href=\"https:\/\/youtu.be\/MGr1V4LyGFA?si=LE9wmBeVcO0euk3N\">https:\/\/youtu.be\/MGr1V4LyGFA?si=LE9wmBeVcO0euk3N<\/a><br><\/li>\n\n\n\n<li>Tutoriel Youtube LMStudio Youtube par Matthew Berman : <a href=\"https:\/\/youtu.be\/yBI1nPep72Q?si=x85RpRA9m3ckc8GY\">https:\/\/youtu.be\/yBI1nPep72Q?si=x85RpRA9m3ckc8GY<\/a><br><\/li>\n\n\n\n<li>Tutoriel Youtube text-generate-webui par Matthew Berman : <a href=\"https:\/\/youtu.be\/VPW6mVTTtTc?si=TgkUXx8hX1629fab\">https:\/\/youtu.be\/VPW6mVTTtTc?si=TgkUXx8hX1629fab<\/a><br><\/li>\n\n\n\n<li>Utilisation de Continue comme assistant VSCode par World Of AI: <a href=\"https:\/\/youtu.be\/dtfuFeXJ_p8?si=sZftOKiH82s7WZ2G\">https:\/\/youtu.be\/dtfuFeXJ_p8?si=sZftOKiH82s7WZ2G<\/a><br><\/li>\n\n\n\n<li><em>Samsung announces ChatGPT rival coming soon to its devices<\/em>, par Cecily Mauran sur MAshable le 8 novembre 2023 : <a href=\"https:\/\/mashable.com\/article\/samsung-announcement-chatgpt-rival-coming-soon-devices\">https:\/\/mashable.com\/article\/samsung-announcement-chatgpt-rival-coming-soon-devices<\/a><br><\/li>\n\n\n\n<li><em>Apple unveils Ferret : an open-source Generative AI model that bridges Vision and Language<\/em>, par Aayush Mittal le 29 d\u00e9cembre 2023 pour Techopedia : <a href=\"https:\/\/www.techopedia.com\/apple-unveils-ferret-an-open-source-genai-for-vision-language-tasks\">https:\/\/www.techopedia.com\/apple-unveils-ferret-an-open-source-genai-for-vision-language-tasks<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si 2023 a \u00e9t\u00e9 domin\u00e9e par les mod\u00e8les en cloud comme chatGPT et Claude, 2024 pourrait faire place aux mod\u00e8les open-source, offrant de nouvelles perspectives d&rsquo;utilisation et d&rsquo;int\u00e9gration. Des indicateurs de performance, des choix et installations de mod\u00e8les locaux, ainsi que des applications pratiques sont pr\u00e9sent\u00e9s.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12],"tags":[],"class_list":["post-1087","post","type-post","status-publish","format-standard","hentry","category-modeles-dimage","category-modeles-de-langage","post-preview"],"_links":{"self":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/1087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1087"}],"version-history":[{"count":0,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/1087\/revisions"}],"wp:attachment":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/categories?post=1087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/tags?post=1087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}