[Partie 1] Comprendre les LLM : ce qu'ils pensent, disent et se souviennent.
![[Partie 1] Comprendre les LLM : ce qu'ils pensent, disent et se souviennent.](https://paco-villetard.ghost.io/content/images/2023/11/paco_onlydust_old_technical_plan_of_an_textual_IA_LLM_artificia_d11ff4e1-c8a9-4820-96e9-438469bfae43.png)
Contenu de la série : "Des LLM aux agents autonomes"
Partie 1 : Comprendre les LLM : ce qu'ils pensent, disent et se souviennent
Partie 2 : ChatGPT : Analyse de l'implémentation d'OpenAI
Partie 3 : Prompt Engineering : Dominer pour ne pas se faire remplacer
Partie 4 : Les LLM et leur mémoire : Déléguer votre mémoire pour ne plus penser.
Partie 5 : Vers une ère d'assistants artificiels personnels pour tous
Bonus : Construire sa mini AGI personnelle
Les Intelligences Artificielles Génératives (IAG) sont les modèles d’IA qui sont derrière des outils comme ChatGPT, MidJourney et DALL.E. Ces modèles sont devenus récemment connus du grand public en raison de la sortie de ChatGPT à la fin de 2022 qui a démocratisé l’usage des LLM. Les LLM, Large Language Models, sont des types d’Intelligences Artificielles Génératives.
Tous les LLM sont des IAG, mais tous les IAG ne sont pas des LLM.
Les LLM sont des types d'intelligences artificielles génératives qui génèrent du contenu textuel. On va discuter dans cet article du fonctionnement des LLM et ce qui est essentiel de comprendre pour les utiliser efficacement, les incorporer dans votre quotidien et vous motiver à créer un produit autour.
Cet article est le premier d'une série qui vise à expliquer comment utiliser les LLM et comment cette technologie peut nous aider à créer des assistants IA autonomes. Nous verrons comment fonctionnent ces agents, comment les GPTs de OpenAI n'en sont qu'une version simplifiée et ce qu'iul est possible de construire.
Mon objectif avec cette série de posts est de vous transmettre toutes les connaissances que j’ai pu accumuler sur le sujet mois pour vous donner les billes et vous lancer dans cet univers.
Commençons tout de suite avec cette première partie sur le fonctionnement des LLM.
Que sont donc que les LLM ?
Un Large Language Model ou LLM est un type de modèle d'intelligence artificielle qui permet de générer du texte. Ce sont des modèles qui sont entraînés sur une grande quantité de contenus avec pour objectif la création de règles de structure du langage humain afin de le reproduire.
Ces modèles sont basés sur un technique que l’on appelle des réseaux de neurones. Ce fonctionnement est inspiré de la biologie du cerveau humain où chaque neurone reçoit un signal en entrée et renvoie ou non un signal électrique en sortie. C’est cette succession de signaux électrique qui permet les fonctionnements complexes de notre cerveau.
Dans le cas d’un réseau de neurones en IA, chaque neurone reçoit aussi un signal en entrée, le transforme grâce à une formule mathématique et passe le résultat au neurone suivant. Ce processus permet au réseau de « prendre des décisions » sur ce qui est le plus probable ou le plus pertinent dans un contexte donné. C’est l’entraînement du modèle sur un gigantesque nombre de textes qui lui permet d’affiner des valeurs numériques, les “poids” des connexions entre les neurones. Ces valeurs composent “l’intelligence” du modèle, ce sont elles qui modifient les résultats de chaque neurone.
Tous ces neurones collaborent, chacun apportant sa propre contribution pour arriver à un résultat final. Chaque neurone contient une petite information qui orientera le modèle dans une direction. Lors d’une demande de génération de texte, le modèle utilisera ces neurones pour obtenir le résultat souhaité : déterminer quels seront les prochains mots à générer.

Le processus de création du modèle implique l'analyse de textes pour en générer les poids de ce réseau de neurones. Une fois généré le modèle va utiliser les données d’entrée pour calculer un espace de probabilités. Cet espace de probabilités est déterminé par les poids des connexions entre les neurones et les données d'entrée. Cet espace est une sorte de carte mentale que le modèle utilisera pour choisir les mots les plus appropriés.
Ces probabilités représentent en quelques sorte les connaissances que le LLM a acquises en analysant les textes. Elles lui permettent de générer statistiquement des contenus qui respectent les règles de textes produits par des humains.
Une fois entraîné, Le LLM pourra produire un texte qui suivra les règles grammaticales et syntaxiques des textes humaines telles que son réseau de neurones les a déterminés. La génération de chaque mot s'appuiera sur les mots précédents, et en explorant son réseau, il déterminera les successeurs les plus probables. Ce processus d’exploration de ses probabilités est ce qui permet au modèle de créer des réponses cohérentes et logiques.
Un LLM est donc modèle d’intelligence artificielle qui génère les mots qui devraient statistiquement suivre une séquence donnée.
En se basant sur des mots en entrée et grâce aux paramètres de ses neurones, il générera les mots les plus probables pour suivre le texte d'entrée. Si vous lui demandez la suite de “Le ciel est” il vous répondra “bleu.” car ses règles de probabilités, apprises lors de son entraînement, lui indiqueront que c’est la suite la plus probable.
ChatGPT est basé sur un tel LLM. Lorsqu'il formule ses réponses, ChatGPT ne se base pas sur sa compréhension de ce que vous lui demandez, mais sur les règles statistiques qu'il a appris durant sa phase d’entrainement. C’est cet apprentissage qui lui permet de prédire que le mot “bleu” a le plus de chance de suivre les mots “le ciel est”. Il ne comprend pas ce que vous lui demandez. Il ne réfléchit pas, il applique les règles de probabilités du langage humain pour vous apporter la réponse qu’il estime la plus pertinente.
Chacune de ses neurones participe à l’évaluation des probabilités pour chaque mot à générer. Ses règles ne sont pas des instructions implémentées par les concepteurs de ChatGPT mais bien des modèles statistiques que le LLM sous-jacent a construit lors de son entraînement. Ces poids ne correspondent pas à des règles grammaticales ou structurelles. Ils représentent des conditions qui orientent le modèle dans ses choix. C’est l’enchaînement complexe de ces milliards de conditions qui permettent à ChatGPT de générer le prochain mot et de produire sa réponse.
Lorsque nous faisons une demande au LLM, si nous parlons de Charles Dickens par exemple, le modèle s’orientera grâce à ses neurones vers une section spécifique de son espace spécifique à Dickens, tandis que s'il s'agit de Victor Hugo, il s’orientera vers une autre dédiée à Hugo.
Si vous demandez à LLM de générer un texte dans le style d'un de ces auteurs, il ira chercher les éléments de langage dans le sous-espace spécifique à chaque auteur et il produira un texte qui reflète le style distinctif de Dickens ou de Hugo. Chacune de vos demandes orientera le LLM dans un espace différent et il viendra vous répondre avec les mots et expressions présents dans cet espace.
C’est le contenu en entrée qui orientera le modèle et qui lui permettra de générer les probabilités d’apparition des prochains mots.
Pour mieux visualiser ce fonctionnement vous pouvez vous le représenter sous la forme d’un arbre. Le LLM prendrait des parcours différents en fonction des mots que vous lui donnez : chaque nouveau mot l’orienterait dans une branche particulière qui l’enverrait sur une autre branche et ainsi de suite jusqu’à arriver à la feuille qui sera le mot-clé généré.

Cet exemple est simplifié car les LLMs actuels de type GPT4 ont énormément de paramètres et de dimensions différentes. Ce n’est pas simplement un espace en deux dimensions dans lequel il recherche mais plutôt un espace en milliers de dimensions. Il est complexe de se le représenter mentalement, aussi bien en termes de nombre de dimensions mais aussi en termes de nombre de paramètres différents qui lui servent à naviguer dedans.

L’espace de probabilités du LLM est multidimensionnel, chaque dimension représentant une caractéristique possible des données d’entrée. Ces caractéristiques, qui sont des aspects du langage, par exemple la structure grammaticale ou le contexte, sont apprises et créées par le modèle pendant son entraînement. Ces caractéristiques sont représentées par les poids stockés dans chaque neurone du modèle. L’ensemble de ces poids constitue l'espace de probabilités qu'il va utiliser pour générer sa réponse.

Un LLM imite l'intelligence humaine
La pensée humaine est stockée dans tous les textes que nous avons produit. Un modèle entraîné sur ces contenus accède donc à une construction de probabilités qui lui permettent de reproduire une partie de l’intelligence humaine. Son analyse lui permet de produire des patterns qui lui permettent d’imiter la réflexion humaine. Ces modèles prédisent les prochains mots et donc les prochaines idées mais ils ne pensent pas ou ne réfléchissent. Ils font passer votre demande dans une énorme quantité de règles qui leur permettent d’obtenir les mots qu’ils doivent vous donner pour vous répondre.
Un LLM peut compléter des phrases, classifier des contenus, répondre à des questions et traduire du contenu même s’il n’a pas été entraîné pour le faire. Demandez à ChatGPT par exemple de traduire un contenu, il le traduira de manière satisfaisante alors que ce modèle n’a jamais été conçu pour de la traduction. Il “prédit” que le résultat le plus probable est cette suite de mots et ces mots correspondent à un traduction.
Grâce à son entraînement sur un grand nombre de textes ses réponses seront convaincantes et donneront l’impression d’une intelligence. En IA on qualifie ce type d’intelligence faible. Ce type d’intelligence est à opposer à l’intelligence forte qui serait une intelligence artificielle qui reproduirait l’intelligence humaine. L’intelligence faible applique des règles pour produire un résultat là ou l’intelligence forte utiliserait sa compétence d’analyse et de réflexion pour fournir une réponse. L’intelligence faible ne pouvant pas faire de choix, elle restera dans les règles qu’elle a apprise.
Malgré tout les LLM, même s’ils ne comprennent pas le sens des mots comme nous, sont impressionnants dans leur capacité à modéliser des séquences de mots qui répondent à nos demandes. Ils sont incroyablement efficaces pour générer des textes qui sont au niveau de textes rédigés par des humains. Et tout cela dans un temps très court. Et nous verrons pas la suite que leur génération peut servir à planifier et à organiser des actions. Tâches qui seront très utiles lorsque nous voudrons créer notre assistant.
Lorsque vous discutez avec ChatGPT il donne l’impression de discuter avec une intelligence. Il semble qu’il réponde spécifiquement à vos demandes et s’adapte en fonction de l’évolution de la conversation. En réalité il ne s’adapte pas, ses réponses sont pertinentes et personnalisées mais il ne fait que prévoir les mots qui doivent suivre votre demande. Son modèle détermine que selon votre demande telle suite de mots va probablement convenir. Il n’a pas conscience qu’il vous parle ni ne prend en compte vos instructions pour la suite de la conversation.
On voit sur internet des instructions pour faire des demandes à ChatGPT du type “Réponds moi comme si tu étais expert en marketing” ou encore “Tu es un docteur en neurosciences avec 10 ans d’expérience”. C’est une technique connue pour lui faire prendre des rôles et qu’il augmente la qualité de ses réponses. Et ces instructions fonctionnent, elles améliorent réellement la qualité des réponse du modèle. Mais ces phrases ne lui font pas changer de rôle, elles orientent simplement la direction qu’il prendra dans son ensemble de probabilités pour vous répondre. Ses réponses vont paraître intégrer vos instructions, en réalité ce sont vos instructions qui oriente le modèle dans une direction spécifique dans son espace de probabilités. Il ne faut donc pas voir vos instructions à prendre en compte mais bien des instructions pour orienter le modèle dans une direction précise. En ajoutant ces phrases vous augmentez vos chances que le modèle aille dans l’espace qui vous intéresse : l’espace de l’expertise dans le sujet donné.
Un LLM et donc ChatGPT n’est qu’un modèle qui traite des probabilités d’apparition de mots et utilise ces probabilités pour produire un texte qui vous semble être une réponse cohérente. Et on peut aller plus loin : un LLM ne vous répond même pas réellement. Il se base sur son entraînement pour identifier les prochains mots qui sont le plus probables dans le dialogue qui lui est fourni.
Vous êtes juste une des parties de ce dialogue.
Lorsque ChatGPT converse avec vous il doit prévoir la suite de :
User : Je voudrais un plan marketing pour Github.
Assistant :
En recevant ce message, le LLM prédira que les prochains mots probables sont :
Un plan marketing pour une plateforme comme GitHub, qui est une plateforme de développement logiciel collaboratif largement utilisée par les programmeurs et les entreprises pour héberger leurs projets, gérer du code, suivre les problèmes et contribuer à des logiciels open source, doit prendre en compte plusieurs facteurs clés. [...]
Et vous recevrez la réponse.
Il continue le dialogue qui lui est fourni. Et sa réponse vous est envoyée.
Aucun LLM en 2023 ne s’adapte à vous. Il ne connaît rien de vous et ne se souvient de rien. Chaque conversation commence comme avec n’importe qui. Chaque réponse qu’il génère suit les mêmes règles de probabilités pour vous que pour répondre aux centaines de milliers d’utilisateurs qui discutent avec lui en même temps. La force de ces modèles est que leur entraînement leur permet de reproduire des suites logiques de mots qui nous semblent non plus seulement cohérents mais bien pertinentes.
En imitant la structure des phrases humaines ils imitent la logique humaine et peuvent remplacer une partie de notre travail intellectuel. Sans intelligence.
Simplement en ayant analysé un recueil énorme de textes et en en ayant tiré des règles d’apparition de chaque mot.
Comment interagir avec un LLM ?
Il existe différentes manières d'interagir avec des modèles de LLM. L'une des interfaces les plus accessibles et connues est ChatGPT. Elle permet une conversation fluide en langage naturel tout en se basant sur les modèle de OpenAI GPT3.5 et GPT4. ChatGPT offre une expérience utilisateur simple et d’appuie sur une mémoire temporaire qui lui permet de continuer la conversation et générer des réponses pertinentes. Nous verrons dans l’article dédié à ChatGPT comment OpenAI a implémenté cette mémoire et comment vous pourrez aussi le faire dans vos agents.
Il est également possible d'accéder directement aux API des modèles de langage comme GPT-3.5 et GPT-4 et de les intégrer dans vos propres applications. Cette approche demande des compétences de développement basiques (ou des outils nocode) pour interagir avec ces API, mais donne un contrôle total sur la manière d'utiliser le modèle. Vous pouvez ainsi créer des expériences conversationnelles personnalisées adaptées à vos besoins spécifiques. C’est la manière que je recommande lorsque vous souhaitez itérer sur vos prompts et les enchainer. C’est en utilisant l’API que nous aurons une utilisation avancée de ChatGPT et que nous le transformerons en agent personnel.
Vous pouvez télécharger un modèle de langage et l'exécuter directement sur votre ordinateur. Cela requiert une puissance de calcul importantes mais présente l'avantage de fonctionner même hors ligne. Vous conservez ainsi le contrôle total du modèle, de son utilisation et de vos données. Plus complexe à mettre en place, cette approche offre une flexibilité maximale. Elle est néanmoins faisable uniquement sur des modèles open source comme Llama 2 ou Mistral.
Quelle que soit la méthode choisie, le principe fondamental reste identique : vous fournissez une entrée textuel au modèle, qui analyse alors le contexte et génère une suite de mots plausible et cohérente.
Comment le LLM vous répond
Il faut savoir qu’un LLM ne prédit pas réellement des mots mais des entités que l’on appelle tokens. Un token peut représenter un mot, une partie de mot ou parfois même un caractère spécial ou un signe de ponctuation.
En prenant un exemple basé sur le modèle GPT de OpenAI la phrase “Many words map to one token, but some don't: indivisible.” est composée de 15 tokens : “Many”, “words”, “map”, “to”, “one”, “token”, “,”, “but”, “some”, “don”, “’t”, “:”, “indiv”,“isible”, “.”.
À noter que dans les modèles d’OpenAI un contenu en français utilise plus de tokens que l’anglais. Le modèle a été entraîné sur des textes en anglais et les tokens sont découpés sur la base de mots anglais. Lorsque GPT traite une autre langue le découpage des tokens ne sont pas optimisés pour celle-ci. Le fait de converser en anglais avec un LLM entraîné sur de l’anglais permet d’optimiser la taille des conversations. En effet le LLM est limité en nombre de tokens pour ses réponses, plus une langue en consomme, moins il va pouvoir afficher de mots. Le fait de discuter avec ChatGPT en anglais vous permettra de fournir et d’obtenir davantage de contenu.
Le LLM génère son output token par token en fonction de leurs probabilités. Ce mode de fonctionnement fait que vous pourrez obtenir parfois des mots qui n’existent pas. C’est le cas dans certaines langues qui n’utilisent pas l’alphabet latin.
Par exemple, si on discute en Russe avec ChatGPT, il consomme énormément de tokens car chaque caractère de l’alphabet cyrillique devient un token. Il se retrouve aussi de temps en temps à construire des phrases contenants des mots qui n’existent pas qui sont étrangement construits. Les émojis étant encore pires car elles consomment plusieurs tokens pour un seul émoji.
Ces tokens en entrée qui constitue votre demande sont appelés la fenêtre de tokens. C’est l’espace disponible pour fournir du contenu au LLM. Dans le cas de ChatGPT votre question est la fenêtre de tokens qui sera envoyée au modèle.
Elle est limitée à un certain nombre de tokens (Entre 4000 et 8000 tokens pour les modèles les plus courants). Le nombre de mots que vous pouvez intégrer en entrée dans un LLM est donc limité et sa réponse l'est de la même manière. Dans un modèle 8k vous pouvez injecter jusqu’à 4k de tokens et il vous répondra 4k maximum. Dans un modèle 32k, 16k en entrée, 16k en sortie. Comme nous l’avons vu au-dessus l’anglais consomme le moins de tokens et des langues avec des alphabets différents consomment davantage de tokens.
Le processus de génération de tokens en sortie du modèle s’appelle l’inférence. On dit que le modèle infère les prochains tokens. Il les infère à partir du contenu de la fenêtre de tokens. Le modèle répète ensuite le processus en ajoutant à la fenêtre de tokens le nouveau token et infère le prochain token. Ce processus est répété encore et encore pour construire une réponse complète jusqu’à obtenir le caractère qui lui signale qu’il a atteint la fin de la réponse.

Analyse d'une structuration efficace d'une demande
C’est cette fenêtre de tokens que l’on appelle le prompt. Ce sont donc les informations que l’ont fourni à l’entrée au LLM pour qu’il entame son inférence. Le fait de structurer correctement un prompt permet d’orienter le modèle dans une direction. On peut voir la structure du prompt comme une manière d’aider le LLM à cadrer son rendu en se dirigeant dans la bonne direction dans son réseau de neurones. En pratique le fonctionnement est beaucoup plus abstrait et imprévisible mais penser la structure de prompt de cette manière permet souvent d’obtenir de meilleurs résultats.
Vous pouvez trouver sur le web des quantités de sites qui vous mettent à disposition des prompts à copier coller dans ChatGPT.
On peut analyser une fenêtre de tokens et donc un prompt efficace en la découpant en 3 grandes parties :
- Des éléments de contexte
- Des instructions
- Des exemples
Le contexte c’est ce qui permettra au LLM d’obtenir des informations spécifiques sur vous. Cela peut aller de l’historique de la conversation jusqu’au informations sur votre entreprise ou vous-même. Les custom instructions de ChatGPT sont par exemple des éléments de contexte. Ce sont des informations qui sont rajoutés à chaque demande à ChatGPT, elles permettent donc d’ajouter des informations sur vous, sur qui vous êtes et ce que vous souhaitez. Encore une fois ces informations ne sont pas “comprises” par ChatGPT mais bien utilisés pour inférer la suite de tokens après ces informations + votre demande.
Les instructions sont les demandes que vous faites au LLM. Qu’est ce que vous attendez de lui, quel objectif, quel format. C’est la partie qui constitue votre demande. La plupart des questions à ChatGPT rentrent dans cette partie.
Les exemples sont assez peu utilisés lors des utilisations standards. Les LLMs récents réussissent à très bien se débrouiller sans exemple. Ce qui était moins le cas lors des générations présentes. Néanmoins ajouter des exemples de réponses attendus à une demande d’inférence permet d’augmenter la qualité de la réponse dans la plupart des situations.
Ces trois catégories résument selon moi bien les types d’informations que vous retrouvez dans un prompt. Il faut bien comprendre que ces informations ne sont pas séparées dans le fenêtre de tokens du LLM et que celui-ci n’a pas une connaissance séparées de ces informations. Il les reçoit dans le même bloc de texte. Cette séparation est uniquement une stratégique pour bien construire une demande. Elle permet de se souvenir des types d’informations nécessaires pour effectuer une bonne demande.
Vous avez probablement pu voir sur internet le terme prompt engineering, ce terme regroupe les compétences nécessaires pour structurer l’information dans un prompt pour que le LLM ait toutes les information à sa disposition pour fournir le rendu souhaité. Ce que vous devez lui demander, comme lui demander, quels types d’exemples lui fournir. Le prompt engineering c’est donc la connaissance de comment structurer l’information dans chacune des catégories que je viens de vous citer.
Il existe plusieurs techniques pour bien structurer l'information dans chacune de ces parties et certaines font même l’objet de papiers scientifiques. (Liu et al. 2022, Yao et el. (2023), Long (2023))
Ces techniques vous permettent de bien orienter le modèle pour vous assurer du résultat le plus optimal. Je ferai un contenu spécialement sur le prompt engineering et comment bien construire une demande.
Avant de creuser spécifiquement sur ces techniques de prompting vous pouvez déjà pour inspirer des prompts que vous trouverez sur le web. Vous pouvez en retrouver des gratuits sur Github et vous pouvez les tester sur ChatGPT. Ces prompts déjà structurés sont idéals pour tester les LLM et découvrir leur potentiel. Il sera probablement assez difficile d’intégrer ces prompts dans votre quotidien et vous finirez probablement par ne pas savoir vraiment comment les intégrer dans votre quotidien. Nous verrons ça ensemble dans les article dédiés à ChatGPT et au prompt engineering.
Un LLM ne change plus après son entrainement
Une notion qu’il est important de comprendre c’est qu’un LLM ne change plus après son entraînement. Son espace de probabilités est créé lors de son entraînement et ne sera plus modifié par la suite. À chaque demande le modèle infère les prochains tokens mais il n'utilise pas cette prédiction pour changer ses probabilités.
Ce qui veut dire que le modèle n’a aucune connaissance des interactions passées. Chaque demande est isolée. Le modèle reçoit les tokens en entrée, fait passer la suite de tokens dans son réseau de neurones et vient sélectionner le prochain token. Le modèle n’a pas de mémoire long terme, il n’apprendra pas de nouvelles informations car il ne changera pas ses poids. À chaque interaction avec le modèle celui-ci sera identique. Chaque conversation avec ChatGPT repartira de zéro et utilisera les mêmes paramètres pour vous générer une réponse.
Interagir avec un LLM c’est comme avoir une conversation avec une personne qui oublie tout ce que vous lui avez dit dès que vous finissez de parler. Chaque question est traitée comme si c'était la première de votre échange.
Il existe malgré tout des techniques pour faire évoluer un modèle déjà entraîné. Il est possible par exemple de fine-tuner le modèle. C’est une démarche spécifique et qui nécessite un échantillon de données structurées qui permettent de changer les poids et d’orienter l’espace selon votre use case. C’est une sorte de second entraînement qui oriente le modèle sur votre use case.
Fine tuner un modèle
Le fine tuning consiste à prendre le modèle et à lui fournir des ensembles de question/réponse pour orienter son espace de probabilités grâce à ces ensembles.
Le modèle entrainé a une connaissance généraliste de l’intelligence humaine et de la manière de structurer un texte. En le fine-tenant il est possible de lui rajouter des informations et expertises mais aussi de l’orienter spécifiquement sur des tournures de phrase que l’on souhaite.
Par exemple, il est possible de modifier le modèle pour lui apporter du savoir spécifique de mon entreprise. Avec un fine tuning spécifique le modèle modifiera ses probabilités pour que ses textes ressemblent aux textes de mon entreprise et donc reprennent le ton. Son espace de probabilités changera pour l’orienter vers de l’inférence de tokens qui seront similaires aux contenus de mon entreprise. Il pourra aussi bénéficier d’informations spécifiques et uniques sur mon entreprise comme son marché ou encore ses chiffres.
Il est aussi possible de modifier le style du modèle, de le rendre plus poli, d’orienter ses idées politiques, de lui interdire de parler de certaines choses. Tout ça en lui fournissant de la matière sous la forme question/réponse qui orientera son apprentissage.
Le fine-tuning est une expertise délicate car la qualité des résultats dépend de la qualité de vos ensembles - des ensembles question/réponse de mauvaise qualité viendra dégrader la qualité des réponses du modèle - mais aussi de la quantité de données que vous viendrez lui fournir - vous ne pourrez pas vous en sortir avec peu de données. Il vous faudra pour chaque cas des dizaines voir des centaines de couples question/réponse pour espérer faire rentrer de nouvelles informations dans le modèle.
Ce finetuning consistera à apporter au modèle des ensembles de questions / réponses pour l'entrainer à nouveau sur des cas spécifiques dont il n’avait pas connaissance. On peut donc lui apprendre un nouveau langage de programmation, une manière d’écrire ou bien le censurer sur certains aspects de ses réponses. Cet entraînement ne se fait pas en continu, c’est une étape à part entière qui est une sorte de second entraînement du modèle. Lorsque le fine tuning est terminé le modèle ne change pas. Il est actuellement impossible de fine-tuner les modèles en live après chaque conversation.
À noter que la grande majorité des outils qui disent personnaliser le modèle sur vos données ne font pas de fine-tuning mais utilise des segments de vos données dans le prompt de l’appel au LLM. Le fine-tuning est réellement une modification du modèle et il n’est pas utile de passer par là pour une grande partie des cas d’utilisation.
La température dans les LLM, la créativité du modèle
Mais alors si un LLM ne change pas et que ces réponses sont toujours identiques pour une question donnée, pourquoi ChatGPT ne nous répond pas la même chose à chaque fois que nous lui posons la même question ?
Si l’espace de probabilités d’un LLM ne change pas, ses réponses devraient être identiques à chaque fois que la même question est posée. Mais si vous testez avec ChatGPT, vous vous rendrez compte que ce n’est pas le cas, une même question peut donner plusieurs réponses différentes.
Pour comprendre ce comportement il faut aller creuser dans les paramètres que l’on peut fournir lorsque l’on interagit directement avec un LLM. Ceux-ci possèdent un critère que l’on peut personnaliser qui s’appelle la température. Plus la température est basse plus le modèle donnera les mêmes réponses, plus celle-ci est haute plus ces réponses seront différentes. On dit souvent que cette température influence le degré de créativité du modèle lors du choix des tokens. Mais comment un modèle probabiliste peut-il être créatif ?
Reprenons ensemble le fonctionnement du LLM lorsqu’on lui demande une inférence. Celui-ci commence par déterminer le premier token suivant le plus probable à partir de la suite de tokens en entrée.
Ensuite le processus recommence pour choisir le prochain token, la séquence d'entrée étant votre demande augmentée du précédent token généré. Le modèle continue ainsi sa génération jusqu'à ce qu'il reçoive un signal spécial indiquant la fin de sa réponse.
Le LLM génère en réalité pour chaque inférence non pas un mais une liste de tokens les plus probables pour le prochain emplacement. Pour chaque token il obtient une probabilité d’apparition à partir de son espace de probabilités.
Exemple
Demande de l'utilisation
Le ciel est
Le LLM détermine les probabilités d'apparition suivantes
80% bleu
10% nuageux
5% sombre
C'est là que la température entre en jeu.
La température c'est le degré d'aléatoire que l'on laisse au modèle pour choisir le prochain token.
Avec une température de 0, le modèle choisira toujours le token le plus probable. Ce qui donnera un résultat déterministe qui sera identique si vous relancez la génération : une même question sera toujours égale à la même réponse. Mais plus la température augmente plus le modèle a de chance de choisir un token moins probable augmentant ainsi sa « créativité ».
Plus la température est basse plus le modèle va jouer la sécurité et choisir les mots les plus probables en fonction de ses données. Une température basse donne généralement des textes très cohérents, prévisibles et assez fades. Mais si la température est plus élevée, le modèle va prendre des risques et choisir des mots moins probables. Cela va vous donner des textes plus surprenants, plus étranges parfois moins cohérents ou même contenant des fautes d’orthographe.
Cette température est un paramètre important que vous devrez définir en fonction de votre cas. Une température faible sera parfaite pour un rendu de classification ou de la génération de code. Une température haute sera plus efficace pour générer des contenus publicitaires ou marketing. La température est un des paramètres que vous pourrez utiliser pour diriger le modèle. En l’adaptant en fonction de vos besoins de génération vous pourrez produire des contenus plus adaptés à ce que vous souhaitez.
Les différents LLM en novembre 2023
Depuis le lancement de ChatGPT par OpenAI fin 2022, de nombreuses entreprises se sont lancées dans la course aux modèles de langage, communiquant abondamment sur leurs propres solutions d'intelligence artificielle conversationnelle.
Il existe désormais une grande variété de modèles de langage disponibles. Parmi les plus connus et performants en novembre 2023, on peut citer :
- GPT-3.5, la première itération du modèle d'OpenAI sous jacent de ChatGPT
- GPT-4, la toute nouvelle version également développée par OpenAI, encore plus puissante.
- Bard, le modèle conversationnel de Google
- Claude, conçu par Anthropic comme une alternative open source et sécurisée
- Llama 2, un modèle open source sous licence permissive développé par Meta
- Mistral, un modèle open source développé par une entreprise française.
La licence open source de Llama 2 a permis le développement de nombreux modèles dérivés. GPT-4 est actuellement le modèle le plus avancé mais les modèles concurrents open source comme Mistral ou Llama 2 ont l'avantage de pouvoir fonctionner localement et sans internet. Il est facile de tester ces modèles conversationnels sur son ordinateur en utilisant le GPU de celui-ci. Cet utilisation des modèles LLM ouvre des portes à une utilisation local plus confidentiel que l’utilisation des modèles closed source. Qui dit local dit aussi que vos demandes ne sont pas envoyée sur les serveurs de OpenAI.
On arrive à la fin de cette première partie. Vous devez maintenant mieux comprendre comment fonctionnent ces modèles d'IA. Dans les prochaines parties nous verrons l'implémentation de OpenAI avec ChatGPT et comment ils lui ont ajouté de la mémoire.
Member discussion