Rendre l' IA accessible à tous

Mois : juin 2023

Bases des modèles conversationnels III : multilinguisme, fenêtre de contexte, tokens…

Dans cet article, vous trouverez quelques compléments d’information utiles sur les modèles de langage conversationnels, bons à savoir avant de se lancer dans les cas d’utilisation proprement dits.

1. Multilinguisme

ChatGPT est capable de converser dans 95 langages différents, et ce dans leur alphabet natif (latin, cyrillique, mandarin…). Il est également capable de combiner les langages au cours d’une même conversation, comme par exemple dans le cas d’une demande de traduction.

Cependant, le degré d’expertise dans chaque langage varie en fonction du volume de données d’entraînement. En pratique, la compétence est maximale en Anglais, suivi par l’ Allemand, le Russe, le Français, le Chinois et l’Espagnol…pour vous donner une idée, vous trouverez sur ce lien la répartition linguistique de la base de données Common Crawl qui est une des principales sources de données d’entraînement. L’ Anglais à lui seul représente 45% du volume total, le second étant l’Allemand avec….6%.

La capacité à combiner les langues au sein d’un même dialogue offre des perspectives tout à fait originales: il est possible de demander à un modèle de langage de jouer le rôle de professeur de langues, et vous pouvez laisser parler votre créativité….regardez plutôt ceci :

Figure 1 – Dialogue avec ChatGP4 : un poème d’amour multilingue

Pour remédier à l’asymétrie des compétences linguistiques, certains Grands Modèles de Langage comme Bloom visent à une représentation plus égalitaire entre les langages d’entraînement. Si vous intéressés, je vous invite à en lire plus sur cet intéressant projet ici.

Enfin, les Modèles de Langage sont également entraînés sur différents langages de programmation, qu’ils « parlent » donc avec une éloquence variable. C’est un sujet passionnant, au potentiel applicatif énorme, sur lequel je reviendrai ultérieurement.

2. Fenêtre de contexte et tokens

Contrairement à ce que vous pourriez croire, les Modèles de Langage sont amnésiques. Après chaque réponse, ils oublient tout! Mais direz-vous, ceci n’est pas possible, puisqu’ ils sont capables de soutenir un dialogue…

Eh bien en fait il y a un truc : a chaque fois que vous posez une question au modèle, le programme réinjecte au modèle la totalité du dialogue depuis le début, avec les questions-réponses précédentes, et ce jusqu’à la dernière question.

Peu importe, direz-vous, c’est un détail invisible pour l’utilisateur. Eh bien pas tout à fait, cela joue un rôle important à cause de la limitation de taille des fenêtres de contexte.

Tous les modèles de langage actuels fonctionnent avec une fenêtre de contexte limitée, c’ est une contrainte de leur architecture technique. Cela veut dire que la totalité du texte qui est analysé par le modèle, à la fois dans la question (qui reprend les questions-réponses passées) et dans la réponse qui va être générée, ne peut dépasser la taille de la fenêtre de contexte sous peine de résultats fantaisistes.

Et ces fenêtes de contexte ne sont pas énormes. 4096 tokens pour chatGPT v3.5, 8192 tokens pour chatGPT4. Ces tailles excluent l’analyse d’un livre ou d’un long article. Elles signifient aussi que vous devez viser une certaine efficacité dans vos dialogues avec le système (le prompt engineering – sujet pour un article futur), et qu’il vaut mieux entamer un nouveau dialogue si vous décidez de changer de sujet en cours de conversation.

C’est un peu regrettable, mais les interfaces utilisateurs web disponibles (chatGPT, Bing) n’affichent pas le nombre de tokens soumis et générés, ce qui signifie que vous naviguez en aveugle sur ce point.

Mais que sont donc ces tokens (jetons en anglais) ? Il s’agit de groupes de lettres qui ressemblent à des syllabes. Vous pouvez jouer ici avec le générateur de tokens d’OpenAI : tapez un texte et il vous montrera la découpe de votre texte en tokens multicolores, comme ceci :

Figure 2 : Découpe d’une phrase en tokens

Il y a 50.257 tokens possibles au total, et c’est en réalité l’identifiant du token qui est passé au générateur, soit un nombre entier. Le modèle de langage se base sur la suite des nombre entiers correspondants aux tokens précédents pour prédire le l’identifiant du prochain token. Un générateur de langage effectue en réalité une opération purement mathématique : il prolonge une suite donnée de nombre entiers. C’est tout de suite moins romantique…

Figure 3 : La séquence correspondante d’identifiants des tokens

Tokens et multilinguisme

Les tokens ont été choisis pour avoir une efficacité maximale en Anglais; selon OpenAI il faut en moyenne 100 tokens pour encoder 75 mots. Les autres langues utilisant l’alphabet latin (comme le Français) seront encodées de manière encore assez efficace, quoique moindre que l’ Anglais. Par contre, l’encodage est peu efficace pour les langues utilisant un autre alphabet.

Je me suis amusé à extraire le texte du préambule de la Déclaration Universelle des Droits de l’Homme – qui est le texte le plus traduit au monde et accessible ici – dans 16 langues différentes pour voir l’efficacité du tokenizer sur ce texte. Voici les résultats :

Figure 4 – Performance du tokenizer d’OpenAI pour 16 langages

On voit bien que le nombre de tokens nécessaire par mot est minimal pour l’ Anglais (1,17 token/mot), suivi par les autres langues utilisant l’alphabet latin (2 à 3 tokens/mot), jusqu’à l’ Indonésien. Ensuite viennent les langues utilisant d’autres alphabets (Arabe, Grec, Cyrillique) pour terminer par les langages asiatiques. Pour ces dernières, il vaut mieux se baser sur le nombre d’ idéogrammes on voit qu’il faut environ 2 tokens pour encoder un idéogramme.

Différents encodeurs de tokens existent. La description ci-dessus utilise le générateur de tokens d’OpenAI mais les autres tokenizers ont des caractéristiques similaires.

3. Détecteurs de texte généré par un modèle

Depuis l’ apparition des modèles générationnels grand public, un certain nombre d’acteurs utilisent ces derniers pour générer du contenu sans nécessairement le déclarer, ce qui peut poser des problèmes de véracité de contenu, de paternité ou de droits d’auteur. Pensez aux dissertations rédigées par ChatGPT pour vous faire une idée du problème…

Et comme il est en principe nettement plus facile d’auto-générer du texte que de le rédiger à la main, ces manipulations se prêtent à des actions à grande échelle, visant par exemple à donner une visibilité artificielle à une marque ou à une information (vraie ou fausse). Dans un monde où la désinformation est répandue, il y a manifestement un potentiel d’utilisation nuisible des modèles.

Un autre problème est que, les modèles de langage étant eux-même entraînés sur des bases de donnée extraites d’Internet, on court le risque d’aboutir à un cercle vicieux dans lequel du contenu auto-généré sert à entraîner la génération suivantes de modèles de langage qui se déconnectent progressivement de la réalité humaine…

Tout ceci réclame une capacité à détecter automatiquement si un texte a été rédigé par un modèle de langage ou non. Et les premiers outils permettant de le faire sont disponibles, mais ils sont encore de nature expérimentale et les recherches pour améliorer ces détecteurs vont bon train. Un raffinement possible est de modifier le générateur lui-même pour qu’il modifie sont algorithme de génération de texte mot à mot pour rendre ce dernier plus aisément identifiable par la suite.

Vous pouvez essayer le détecteur fourni par OpenAI ici mais ses limitations sont clairement exposées, et il n’est pas d’une grande fiabilité. C’est une technique potentiellement promise à un grand avenir mais encore en phase d’émergence et il sera intéressant de suivre à la fois ses progrès techniques futurs et son exploitation dans le cadre du futur cadre réglementaire qui ne manquera pas d’apparaître.

4. Modèles de langage locaux ou dans le cloud

Les modèles conversationnels disponibles au grand public comme ChatGPT, Bing Chat, Google Bard… sont tous exécutés dans le cloud. La raison en est que les besoins en puissance de calcul et en mémoire pour l’exécution dépassent de loin les capacités des ordinateurs personnels ou des smartphones. L’ exécution se fait donc sur des serveurs surpuissants situés dans des datacenters.

Mais cela veut aussi dire que ces derniers constituent un sérieux goulet d’étranglement. Que ce soit à cause d’une demande trop forte ou d’une perte de connectivité, vous restez tributaire à tout instant de la santé de l’ infrastructure du fournisseur et de la connectivité qui vous y lie. Pas moyen de travailler de manière autonome.

C’est pourquoi de nombreuses recherches actuelles ont pour but de rendre des modèles moins gourmands pour leur permettre de fonctionner de manière autonome sur un ordinateur de bureau. L’utilisateur averti pourra installer l’application faraday.dev, qui permet de télécharger certains modèles et de les faire tourner localement. Attention, il vaut mieux posséder une machine puissante…

Bases des modèles conversationnels II : comment structurer le dialogue

Dans cet article, nous parlerons des techniques de base pour obtenir les meilleurs résultats lors de dialogues avec un modèle conversationnel type ChatGPT.

Il est possible d’obtenir des résultats satisfaisants avec des prompts spontanés mais la qualité des résultats sera impactée par la structure de la demande et son contenu. Nous allons donc passer successivement en revue les élements constitutifs d’une demande bien construite ainsi que les mécanismes les plus efficaces pour mettre interactivement le modèle conversationnel sur la voie de la réponse souhaitée.

Cet article ne décrit que des techniques générales à garder en mémoire lors de toute interaction avec ces modèles; il est souhaitable de les parcourir avant de présenter des cas d’utilisation concrets comme nous le ferons dans les prochains articles.

1. Eléments constitutifs de la question

Les éléments constitutifs d’une question adressée à un modèle conversationnel sont les suivants :

  • Instruction : ce que vous demandez au modèle;
  • Contexte : information externe ou circonstancielle qui va aider le modèle à comprendre correctement la demande;
  • Données en entrée : informations fournies au modèle en entrée pour le traitement. Les données en entrée s’apparentent au contexte mais sont en général de nature plus précise et spécifique;
  • Format de la réponse : vous pouvez ici spécifier un modèle de réponse désirée, par exemple en termes de longueur, de langue, de style ou de format de fichier. De même vous désirez une simple réponse binaire de type oui/non ou vrai/faux, dites-le.

Ces éléments ne sont pas tous systématiquement présents, mais il est bon de parcourir mentalement cette liste lors de chaque question initiale afin d’être sûr de ne rien oublier. bien sûr, il est possible d’apporter des précisions dans la suite du dialogue, mais cela est moins optimal.

2. Principes de bases du questionnement

Voici quelques principes de base pour vous aider à élaborer une question pertinente et susceptible d’être traitée efficacement par le modèle :

Premier principe : Soyez directif. Vous ne vous adressez pas à un être humain. Pas besoin de salutation ou de forme de politesse interrogative. Utilisez l’indicatif ou l’impératif, pas le conditionnel. Dites « fais ceci » ou « je veux cela » et pas « est-ce que tu pourrais ? » ni « pardon de vous importuner » ? Inutile de dire bonjour ou merci. Si votre sentiment anthropomorphique est trop fort, imaginez que vous êtes un général qui donne un ordre à un soldat.

Dialogue 1 : Une question simple

Second principe : Ecrivez des instructions claires et précises. Cela ne signifie pas que les instructions doivent être courtes, au contraire. Il vaut mieux être explicite que de laisser le modèle devoir deviner quelque chose d’implicite. Décrivez le contexte de la demande. Expliquez ce que vous attendez et sous quelle forme. Il est préférable que la question initiale fournisse directement l’emsemble es éléments plutôt que de devoir les fournir pièce par pièce lors de dialogues ultérieurs.

N’hésitez pas à utiliser des délimiteurs pour isoler un texte à traiter (par exemple pour une demande de résumé), et n’hésitez pas non plus à être très précis dans le format de la réponse, par exemple en spécifiant un gabarit de phrase dont les champs devront être complétés en fonction de la réponse.

Dialogue 2 : Question élémentaire avec spécification du format de réponse

Troisième principe : Fournissez des exemples. Si cela est possible, fournissez des exemples de question-réponse corrects dans la question initiale, en expliquant qu’il s’agit d’exemples à imiter. Un format « Question : / Réponse :  » est suffisant. Cette technique est appelée en Anglais few-shot learning, alors que le zero-shot learning signifie que l’on demande au modèle de répondre directement à la question sans fourniture d’exemples.

Dialogue 3 : Fourniture d’exemples pour illustrer la demande

Quatrième principe : Encouragez le système à détailler son raisonnement. Si question posée demande au modèle d’effectuer un raisonnement comportant plusieurs étapes successives avec éventuellement des choix intermédiaires, vous pouvez lui ordonner de réfléchir étape par étape et d’ exposer les étapes intermédiaires de son raisonnement. Si le raisonnement s’avère incorrect, vous pourrez alors le remettre sur le droit chemin en lui indiquant l’erreur et lui demandant de reprendre le raisonnement sur cette base.

Une variante qui combine les deux derniers principes consiste à fournir un ou plusieurs exemples de raisonnements avant de poser la vraie question, comme ceci :

Dialogue 4 : fourniture d’un exemple de raisonnement pour faciliter l’analyse

3. Persévérer et recommencer

Obtenir une bonne réponse du système doit être vu comme un processus itératif. Si le dialogue ne vous satisfait pas, relisez les principes ci-dessus et changez d’approche. Formalisez votre demande autrement, n’ hésitez pas à réutiliser certains éléments du dialogue précédent comme contexte pour un nouveau dialogue.

Vous voilà maintenant armé pour aborder des cas concrets de résolution de problèmes, que nous aborderons dans les prochains articles.

Bases des modèles conversationnels I : principes de fonctionnement

1. Modèles de Langage

Les Modèles de Langage se focalisent sur le traitement des langages humains. On parle aujourd’hui de « Grands » Modèles de Langage (GML) vu la taille énorme tant des jeux de données d’entraînement (des copies de l’ensemble de l’Internet!) que du nombre de paramètres internes du modèle. Ils peuvent être unilingues ou multilingues en fonction des données d’entraînement fournies mais la tendance actuelle est au multilinguisme: ChatGPT « converse » en 95 langues.

Les (Grands) Modèles de Langage fonctionnent de la manière suivante :

  • ils ont pour principe de chercher à prédire le prochain mot d’une séquence de mots fournie par l’utilisateur.
  • Cette prédiction se fait sous la forme d’une distribution de probabilité qui couvre l’ensemble des mots possibles (disons le dictionnaire).
  • Plusieurs mécanismes sont possibles pour choisir le mot gagnant. Une approche déterministe consiste à choisir systématiquement le mot avec la probabilité la plus élevée. Une approche stochastique constituera à tirer au hasard dans la distribution de probabilité. Le type d’approche dépend du modèle et peut parfois être modifié par l’utilisateur.
  • le mot prédit est alors ajouté à la séquence et le modèle est exécuté à nouveau avec la séquence complétée avec le mot généré, pour prédire le mot suivant.
  • Ce mécanisme est exécuté répétitivement autant de fois que nécessaire jusqu’à l’occurence d’un mot spécial qui signifie la fin du texte (pensez au « STOP » des télégrammes).

Vous trouverez ci-dessous une illustration simple de ce mécanisme pour la séquence initiale « J’ai une voiture… » que le modèle complétera en trois étapes en « J’ai une voiture depuis hier. ».

Figure 1 – Première étape
Figure 2 : Deuxième étape
Figure 3 : Troisième et dernière étape

L’ explication ci-dessus est conceptuellement correcte, mais les modèles actuels contiennent une astuce supplémentaire : ils ne prédisent pas des mots mais des tokens qui sont des parties de mots. Ils ressemblent plutôt à des syllabes que des mots. C’est notamment ce qui permet le multilinguisme. Nous y reviendrons dans un article ultérieur. Mais c’est un detail technique qui ne doit pas nous distraire du principe expliqué ci-dessus.

Les grands modèles de langage sont aussi des généralistes au niveau du type de narration; ils ne privilégient pas le dialogue sur d’autres formes discursives. En d’autres termes, ils ne répondront pas nécessairement à une question par une réponse. Ils sont donc tout à fait capables de ne pas répondre à la question voire de répondre par une autre question si cela leur semble plus plausible.

Tournons-nous maintenant vers les modèles de langage spécialisés en question-réponse et conversationnels, qui adressent précisément ce point.

2. Modèles de langages question/réponse et conversationnels

Les modèles Question/réponse sont des modèles dérivés ayant reçu un entraînement complémentaire qui les pousse à fournir une réponse lorsqu’une question est posée, en utilisant la base de connaissance intégrée dans le modèle lors de l’entraînement généraliste. Ceci rend ce genre de modèle beaucoup plus approprié pour une interaction avec des êtres humains.

Les modèles conversationnels sont un raffinement supplémentaire consiste à entraîner le modèle à tenir compte de l’ensemble d’un dialogue passé avec l’utilisateur -soit potentiellement plusieurs questions-réponses- lors de l’élaboration de la réponse.

Pour prendre le cas concret d’OpenAI, Les modèles GPT2,3 et 4 sont des modèles généralistes de puissance expressive croissante; InstructGPT est un modèle Question/Réponse dérive de GPT et ChatGPT est un modèle conversationnel dérivé d’ InstructGPT.

3. Véracité et hallucinations

Lors de l’entraînement complémentaire, les développeurs du système vont également tenter de privilégier les réponses véridiques, honnêtes et inoffensives. Mais ce n’est pas si simple que cela en a l’air. Le but du système est de compléter la séquence de la manière la plus plausible selon son propre modèle, ce comportement se rapproche plus du baratin que de l’honnêteté.

Ces modèles sont donc de brillants baratineurs et l’utilisateur sera bien averti de TOUJOURS revalider et vérifier le texte généré. Ne faites pas comme cet avocat aux USA qui a remis une plaidoierie générée par ChatGPT sans la relire, qui contenait toute une jurisprudence inventée de toutes pièces par notre espiègle serviteur informatique.

On dit dans le jargon de l’IA que le modèle hallucine. Une hallucination est une déclaration du modèle qui semble plausible mais s’avère être fausse.

4. Apprentissage spécialisé

Les modèles de langage étant à la base entraînés sur un corpus de texte généraliste, il peut être intéressant de leur fournir un entraînement complémentaire dans un domaine spécifique si vous avez une application précise en tête. Par exemple un entraînement sur les codes de loi pour une application juridique ou des ouvrage médicaux de référence pour une application dans le secteur de la santé, afin d’enrichir la puissance expressive du modèle dans la direction recherchée.

Cela reste un exercice relativement complexe qui va demander de faire appel à des experts : un corpus spécialisé de texte va devoir être identifié, prétraité puis les paramètres du modèle modifiés sur base de l’entraînement sur ce jeu de données, suivi d’une phase de test et de validation. L’ avantage de cette approche est que la connaissance du modèle est définitivement enrichie. Les interactions futures entre un utilisateur et le modèle sur le sujet seront plus fructueuses.

Une solution plus rudimentaire consiste à fournir un petit nombre d’exemples (de questions et réponses correctes) dans le texte de la question initiale afin d’ orienter le modèle dans la bonne direction pendant l’exécution. On appelle cela l’apprentissage dans le contexte (in-context learning). Il s’agit d’une des techniques de prompting que nous verrons dans le prochain article.

Accès aux modèles de langage conversationnels : ChatGPT et autres….

Ce qui suit est la situation au 4 juin 2023.

1. OpenAI / ChatGPT

  • ChatGPT en version 3.5 est accessible à la fois via l’interface conversationnelle web chat.openai.com et via l’app mobile ChatGPT qui est déjà disponible pour iPhone (cliquer ici); la version Android est encore en développement et devrait être accessible sous peu.
  • Le modèle ChatGPT v3.5 est accessible gratuitement sans limitation de volume de conversations, moyennant inscription préalable.
  • ChatGPT+, qui coûte 20 USD par mois, donne en outre accès au modèle ChatGPT4 via la même interface, mais avec une limitation à 25 échanges toutes les 3 heures. Les dialogues avec ChatGPT4 sont en général de qualité nettement supérieure à ceux avec ChatGPT 3.5.
  • ChatGPT4 donne aussi accès à deux fonctionnalités additionnelles dont je reparlerai à l’avenir :
    • L’ intégration avec le web qui offre des réponses à jour et contenant des liens vers les informations
    • L’ intégration avec une centaine de programmes applicatifs (plug-ins); ces programmes offrent des fonctionnalités variées que ChatGPT peut exploiter pour répondre à la demande de l’utilisateur: commandes de produits, graphiques….

2. Microsoft

  • Bing Chat est basé sur OpenAI et accessible ici : chat.bing.com , à condition de posséder le navigateur Microsoft Edge.
  • L’utilisation de Bing Chat est gratuite.
  • Bing Chat est aussi accessible via l’ app mobile bing, qui est disponible à la fois pour Android et iOS.
  • Bing Chat propose trois styles conversationnels : précis, équilibré et créatif.
  • L’ interface Bing Chat, utilisée en mode conversationnel créatif, donne en réalité accès à GPT4. Ceci permet donc d’utiliser ChatGPT4 sans payer les 20 USD/mois d’abonnement à OpenAI.

3. Google

  • Google est actuellement occupé à déployer son interface conversationnelle sur bard.google.com, pays par pays
  • A dater du 4 juin 2023, l’accès n’est pas encore possible en Belgique, mais ceci devrait changer rapidement.

4. Huggingface

  • Hugging Face, un des principaux lieu de rendez-vous de la communauté de l’IA, a publié son propre modèle conversationnel, basé sur Llama (développé par Meta).
  • HuggingChat est accessible ici : huggingface.co/chat
  • L’utilisation conversationnelle du modèle est gratuite, moyennant inscription préalable sur le site de HuggingFace.

5. Anthropic

  • Claude, développé par la société Anthropic est disponible moyennant demande d’accès préalable ici.
  • Claude très est intéressant car il est capable d’interpréter des textes beaucoup plus volumineux que les autres modèles (fenêtre de contexte de 100.000 unités au lieu d’environ 4.000 pour ChatGPT 3.5, ce qui correspond à plus ou moins 70.000 mots ).
  • Claude existe en deux versions, Claude Instant et Claude-v1. Claude Instant est plus rapide et Claude-v1 plus puissant. Les deux version sont payantes (Claude v1 étant plus cher).