{"id":252,"date":"2023-06-25T11:29:39","date_gmt":"2023-06-25T09:29:39","guid":{"rendered":"https:\/\/artificiellementintelligent.wordpress.com\/?p=252"},"modified":"2023-06-25T11:29:39","modified_gmt":"2023-06-25T09:29:39","slug":"bases-des-modeles-conversationnels-iii-multilinguisme-fenetre-de-contexte-tokens","status":"publish","type":"post","link":"https:\/\/artificiellementintelligent.eu\/index.php\/2023\/06\/25\/bases-des-modeles-conversationnels-iii-multilinguisme-fenetre-de-contexte-tokens\/","title":{"rendered":"Bases des mod\u00e8les conversationnels III : multilinguisme, fen\u00eatre de contexte, tokens&#8230;"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Dans cet article, vous trouverez quelques compl\u00e9ments d&rsquo;information utiles sur les mod\u00e8les de langage conversationnels, bons \u00e0 savoir avant de se lancer dans les cas d&rsquo;utilisation proprement dits.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Multilinguisme<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ChatGPT est capable de converser dans 95 langages diff\u00e9rents, et ce dans leur alphabet natif (latin, cyrillique, mandarin&#8230;). Il est \u00e9galement capable de combiner les langages au cours d&rsquo;une m\u00eame conversation, comme par exemple dans le cas d&rsquo;une demande de traduction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cependant, le degr\u00e9 d&rsquo;expertise dans chaque langage varie en fonction du volume de donn\u00e9es d&rsquo;entra\u00eenement. En pratique, la comp\u00e9tence est maximale en Anglais, suivi par l&rsquo; Allemand, le Russe, le Fran\u00e7ais, le Chinois et l&rsquo;Espagnol&#8230;pour vous donner une id\u00e9e, vous trouverez sur <a href=\"https:\/\/commoncrawl.github.io\/cc-crawl-statistics\/plots\/languages\">ce lien<\/a> la r\u00e9partition linguistique de la base de donn\u00e9es Common Crawl qui est une des principales sources de donn\u00e9es d&rsquo;entra\u00eenement. L&rsquo; Anglais \u00e0 lui seul repr\u00e9sente 45% du volume total, le second \u00e9tant l&rsquo;Allemand avec&#8230;.6%.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La capacit\u00e9 \u00e0 combiner les langues au sein d&rsquo;un m\u00eame dialogue offre des perspectives tout \u00e0 fait originales: il est possible de demander \u00e0 un mod\u00e8le de langage de jouer le r\u00f4le de professeur de langues, et vous pouvez laisser parler votre cr\u00e9ativit\u00e9&#8230;.regardez plut\u00f4t ceci :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/06\/poeme-multilingue.png?w=1024\" alt=\"\" class=\"wp-image-412\" width=\"680\" height=\"626\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/poeme-multilingue.png 1512w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/poeme-multilingue-300x276.png 300w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/poeme-multilingue-1024x943.png 1024w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/poeme-multilingue-768x707.png 768w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><figcaption class=\"wp-element-caption\">Figure 1 &#8211; Dialogue avec ChatGP4 : un po\u00e8me d&rsquo;amour multilingue<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Pour rem\u00e9dier \u00e0 l&rsquo;asym\u00e9trie des comp\u00e9tences linguistiques, certains Grands Mod\u00e8les de Langage comme Bloom visent \u00e0 une repr\u00e9sentation plus \u00e9galitaire entre les langages d&rsquo;entra\u00eenement. Si vous int\u00e9ress\u00e9s, je vous invite \u00e0 en lire plus sur cet int\u00e9ressant projet <a href=\"https:\/\/bigscience.huggingface.co\/blog\/bloom\">ici<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, les Mod\u00e8les de Langage sont \u00e9galement entra\u00een\u00e9s sur diff\u00e9rents langages de programmation, qu&rsquo;ils \u00ab\u00a0parlent\u00a0\u00bb donc avec une \u00e9loquence variable. C&rsquo;est un sujet passionnant, au potentiel applicatif \u00e9norme, sur lequel je reviendrai ult\u00e9rieurement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Fen\u00eatre de contexte et <em>tokens<\/em><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contrairement \u00e0 ce que vous pourriez croire, les Mod\u00e8les de Langage sont amn\u00e9siques. Apr\u00e8s chaque r\u00e9ponse, ils oublient tout! Mais direz-vous, ceci n&rsquo;est pas possible, puisqu&rsquo; ils sont capables de soutenir un dialogue&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eh bien en fait il y a un truc : a chaque fois que vous posez une question au mod\u00e8le, le programme r\u00e9injecte au mod\u00e8le la totalit\u00e9 du dialogue depuis le d\u00e9but, avec les questions-r\u00e9ponses pr\u00e9c\u00e9dentes, et ce jusqu&rsquo;\u00e0 la derni\u00e8re question. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Peu importe, direz-vous, c&rsquo;est un d\u00e9tail invisible pour l&rsquo;utilisateur. Eh bien pas tout \u00e0 fait, cela joue un r\u00f4le important \u00e0 cause de la limitation de taille des fen\u00eatres de contexte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tous les mod\u00e8les de langage actuels fonctionnent avec une fen\u00eatre de contexte limit\u00e9e, c&rsquo; est une contrainte de leur architecture technique. Cela veut dire que la totalit\u00e9 du texte qui est analys\u00e9 par le mod\u00e8le, \u00e0 la fois dans la question (qui reprend les questions-r\u00e9ponses pass\u00e9es) <em>et dans la r\u00e9ponse qui va \u00eatre g\u00e9n\u00e9r\u00e9e<\/em>, ne peut d\u00e9passer la taille de la fen\u00eatre de contexte sous peine de r\u00e9sultats fantaisistes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et ces fen\u00eates de contexte ne sont pas \u00e9normes. 4096 <em>tokens <\/em>pour chatGPT v3.5, 8192 <em>tokens<\/em> pour chatGPT4.  Ces tailles excluent l&rsquo;analyse d&rsquo;un livre ou d&rsquo;un long article. Elles signifient aussi que vous devez viser une certaine efficacit\u00e9 dans vos dialogues avec le syst\u00e8me (le<em> prompt engineering <\/em>&#8211; sujet pour un article futur), et qu&rsquo;il vaut mieux entamer un nouveau dialogue si vous d\u00e9cidez de changer de sujet en cours de conversation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est un peu regrettable, mais les interfaces utilisateurs web disponibles (chatGPT, Bing) n&rsquo;affichent pas le nombre de tokens soumis et g\u00e9n\u00e9r\u00e9s, ce qui signifie que vous naviguez en aveugle sur ce point. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais que sont donc ces <em>tokens<\/em> (jetons en anglais) ? Il s&rsquo;agit de groupes de lettres qui ressemblent \u00e0 des syllabes. Vous pouvez jouer <a href=\"https:\/\/help.openai.com\/en\/articles\/4936856-what-are-tokens-and-how-to-count-them\">ici<\/a> avec le g\u00e9n\u00e9rateur de tokens d&rsquo;OpenAI : tapez un texte et il vous montrera la d\u00e9coupe de votre texte en tokens multicolores, comme ceci :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/06\/image-8.png?w=1024\" alt=\"\" class=\"wp-image-364\" width=\"840\" height=\"339\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-8.png 1434w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-8-300x121.png 300w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-8-1024x414.png 1024w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-8-768x311.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\">Figure 2 : D\u00e9coupe d&rsquo;une phrase en tokens<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Il y a 50.257 tokens possibles au total, et c&rsquo;est en r\u00e9alit\u00e9 l&rsquo;identifiant du token qui est pass\u00e9 au g\u00e9n\u00e9rateur, soit un nombre entier. Le mod\u00e8le de langage se base sur la suite des nombre entiers correspondants aux tokens pr\u00e9c\u00e9dents pour pr\u00e9dire le l&rsquo;identifiant du prochain token. Un g\u00e9n\u00e9rateur de langage effectue en r\u00e9alit\u00e9 une op\u00e9ration purement math\u00e9matique : il prolonge une suite donn\u00e9e de nombre entiers. C&rsquo;est tout de suite moins romantique&#8230;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1426\" height=\"638\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/06\/image-15.png?w=1024\" alt=\"\" class=\"wp-image-431\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-15.png 1426w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-15-300x134.png 300w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-15-1024x458.png 1024w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-15-768x344.png 768w\" sizes=\"auto, (max-width: 1426px) 100vw, 1426px\" \/><figcaption class=\"wp-element-caption\">Figure 3 : La s\u00e9quence correspondante d&rsquo;identifiants des tokens <\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><em>Tokens et multilinguisme<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les tokens ont \u00e9t\u00e9 choisis pour avoir une efficacit\u00e9 maximale en Anglais; selon OpenAI il faut en moyenne 100 tokens pour encoder 75 mots. Les autres langues utilisant l&rsquo;alphabet latin (comme le Fran\u00e7ais) seront encod\u00e9es de mani\u00e8re encore assez efficace, quoique moindre que l&rsquo; Anglais. Par contre, l&rsquo;encodage est peu efficace pour les langues utilisant un autre alphabet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je me suis amus\u00e9 \u00e0 extraire le texte du pr\u00e9ambule de la D\u00e9claration Universelle des Droits de l&rsquo;Homme &#8211; qui est le texte le plus traduit au monde et accessible <a href=\"https:\/\/www.ohchr.org\/en\/human-rights\/universal-declaration\/universal-declaration-human-rights\/about-universal-declaration-human-rights-translation-project\">ici<\/a> &#8211; dans 16 langues diff\u00e9rentes pour voir l&rsquo;efficacit\u00e9 du tokenizer sur ce texte. Voici les r\u00e9sultats :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"518\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/06\/image-16.png?w=976\" alt=\"\" class=\"wp-image-435\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-16.png 976w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-16-300x159.png 300w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/06\/image-16-768x408.png 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><figcaption class=\"wp-element-caption\">Figure 4 &#8211; Performance du tokenizer d&rsquo;OpenAI pour 16 langages<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">On voit bien que le nombre de tokens n\u00e9cessaire par mot est minimal pour l&rsquo; Anglais (1,17 token\/mot), suivi par les autres langues utilisant l&rsquo;alphabet latin (2 \u00e0 3 tokens\/mot), jusqu&rsquo;\u00e0 l&rsquo; Indon\u00e9sien. Ensuite viennent les langues utilisant d&rsquo;autres alphabets (Arabe, Grec, Cyrillique) pour terminer par les langages asiatiques. Pour ces derni\u00e8res, il vaut mieux se baser sur le nombre d&rsquo; id\u00e9ogrammes on voit qu&rsquo;il faut environ 2 tokens pour encoder un id\u00e9ogramme.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diff\u00e9rents encodeurs de tokens existent. La description ci-dessus utilise le g\u00e9n\u00e9rateur de tokens d&rsquo;OpenAI mais les autres <em>tokenizers<\/em> ont des caract\u00e9ristiques similaires.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. D\u00e9tecteurs de texte g\u00e9n\u00e9r\u00e9 par un mod\u00e8le<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Depuis l&rsquo; apparition des mod\u00e8les g\u00e9n\u00e9rationnels grand public, un certain nombre d&rsquo;acteurs utilisent ces derniers pour g\u00e9n\u00e9rer du contenu sans n\u00e9cessairement le d\u00e9clarer, ce qui peut poser des probl\u00e8mes de v\u00e9racit\u00e9 de contenu, de paternit\u00e9 ou de droits d&rsquo;auteur. Pensez aux dissertations r\u00e9dig\u00e9es par ChatGPT pour vous faire une id\u00e9e du probl\u00e8me&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et comme il est en principe nettement plus facile d&rsquo;auto-g\u00e9n\u00e9rer du texte que de le r\u00e9diger \u00e0 la main, ces manipulations se pr\u00eatent \u00e0 des actions \u00e0 grande \u00e9chelle, visant par exemple \u00e0 donner une visibilit\u00e9 artificielle \u00e0 une marque ou \u00e0 une information (vraie ou fausse). Dans un monde o\u00f9 la d\u00e9sinformation est r\u00e9pandue, il y a manifestement un potentiel d&rsquo;utilisation nuisible des mod\u00e8les.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un autre probl\u00e8me est que, les mod\u00e8les de langage \u00e9tant eux-m\u00eame entra\u00een\u00e9s sur des bases de donn\u00e9e extraites d&rsquo;Internet, on court le risque d&rsquo;aboutir \u00e0 un cercle vicieux dans lequel du contenu auto-g\u00e9n\u00e9r\u00e9 sert \u00e0 entra\u00eener la  g\u00e9n\u00e9ration suivantes de mod\u00e8les de langage qui se d\u00e9connectent progressivement de la r\u00e9alit\u00e9 humaine&#8230; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout ceci r\u00e9clame une capacit\u00e9 \u00e0 d\u00e9tecter automatiquement si un texte a \u00e9t\u00e9 r\u00e9dig\u00e9 par un mod\u00e8le de langage ou non. Et les premiers outils permettant de le faire sont disponibles, mais ils sont encore de nature exp\u00e9rimentale et les recherches pour am\u00e9liorer ces d\u00e9tecteurs vont bon train. Un raffinement possible est de modifier le g\u00e9n\u00e9rateur lui-m\u00eame pour qu&rsquo;il modifie sont algorithme de g\u00e9n\u00e9ration de texte mot \u00e0 mot pour rendre ce dernier plus ais\u00e9ment identifiable par la suite.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez essayer le d\u00e9tecteur fourni par OpenAI <a href=\"https:\/\/platform.openai.com\/ai-text-classifier\">ici<\/a> mais ses limitations sont clairement expos\u00e9es, et il n&rsquo;est pas d&rsquo;une grande fiabilit\u00e9. C&rsquo;est une technique potentiellement promise \u00e0 un grand avenir mais encore en phase d&rsquo;\u00e9mergence et il sera int\u00e9ressant de suivre \u00e0 la fois ses progr\u00e8s techniques futurs et son exploitation dans le cadre du futur cadre r\u00e9glementaire qui ne manquera pas d&rsquo;appara\u00eetre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Mod\u00e8les de langage locaux ou dans le cloud<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les mod\u00e8les conversationnels disponibles au grand public comme ChatGPT, Bing Chat, Google Bard&#8230; sont tous ex\u00e9cut\u00e9s dans le cloud. La raison en est que les besoins en puissance de calcul et en m\u00e9moire pour l&rsquo;ex\u00e9cution d\u00e9passent de loin les capacit\u00e9s des ordinateurs personnels ou des smartphones. L&rsquo; ex\u00e9cution se fait donc sur des serveurs surpuissants situ\u00e9s dans des datacenters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais cela veut aussi dire que ces derniers constituent un s\u00e9rieux goulet d&rsquo;\u00e9tranglement. Que ce soit \u00e0 cause d&rsquo;une demande trop forte ou d&rsquo;une perte de connectivit\u00e9, vous restez tributaire \u00e0 tout instant de la sant\u00e9 de l&rsquo; infrastructure du fournisseur et de la connectivit\u00e9 qui vous y lie. Pas moyen de travailler de mani\u00e8re autonome.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est pourquoi de nombreuses recherches actuelles ont pour but de rendre des mod\u00e8les moins gourmands pour leur permettre de fonctionner de mani\u00e8re autonome sur un ordinateur de bureau. L&rsquo;utilisateur averti pourra installer l&rsquo;application <a href=\"https:\/\/faraday.dev\/\">faraday.dev<\/a>, qui permet de t\u00e9l\u00e9charger certains mod\u00e8les et de les faire tourner localement. Attention, il vaut mieux poss\u00e9der une machine puissante&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, d\u00e9couvrez des informations cl\u00e9s sur les mod\u00e8les de langage conversationnels. Ils sont multilingues et fonctionnent avec des fen\u00eatres de contexte limit\u00e9es. De plus, les d\u00e9fis li\u00e9s \u00e0 la d\u00e9tection de texte g\u00e9n\u00e9r\u00e9 et les avantages des mod\u00e8les locaux.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-252","post","type-post","status-publish","format-standard","hentry","category-modeles-de-langage","post-preview"],"_links":{"self":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/252","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=252"}],"version-history":[{"count":0,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/252\/revisions"}],"wp:attachment":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/media?parent=252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/categories?post=252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/tags?post=252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}