Grand angle

Les grands modèles de langage (LLM) ouvrent une toute nouvelle ère

02 May. 2023

min.

Fin d'année dernière, j'ai été sidéré par l'incroyable avancée à laquelle nous avons assisté avec l'ouverture de chatGPT, ce chat propulsé par un modèle GPT-3.5 et lancé par OpenAI. C'était du jamais vu et le monde en est devenu fou. C'est un sujet sur lequel Smile a décidé de se lancer et voici pourquoi.

Le mauvais cheval

Je suis d'ordinaire enthousiaste à l'égard de la technologie. Je la vois cependant toujours avec un côté commercial et je me demande quel impact elle pourrait avoir sur nos activités quotidiennes ou celles de nos clients. Je veux dire par là que la technologie n'est intéressante que lorsqu'elle apporte réellement quelque chose pour résoudre un problème, un cas d'utilisation. Plutôt que de me précipiter, je préfère donc m'asseoir et réfléchir un moment, et éviter de parier trop vite sur le mauvais cheval.

L'année dernière, par exemple, tout le monde parlait du Metaverse et on paraissait 'has been' si on n'avait pas quelque chose à dire sur le sujet. Alors j'ai essayé de voir comment cela pouvait être intéressant d'un point de vue commercial ou tout simplement intéressant... tout court, mais je n'ai pas été convaincu, jugeant que cela restait très superficiel, très "gadget" et que cela ne représentait pas de besoin. Il n'est pas surprenant que Meta ait simplement décidé de laisser tomber malgré l'incroyable quantité d'argent qu'ils ont mis sur la table et je suis heureux de n'avoir pas embarqué Smile sur ce sujet et perdre de l'argent aussi (ou faire perdre du temps et de l'argent à nos clients), en errant dans le pays des avatars sans jambe ?

Pour GPT, c'est une toute autre histoire.

Surveillance des sujets IA

L'industrie n'était pas prête et les entreprises qui rêvent de l'IA imaginent (imaginaient) à quel point l'IA est "intelligente".

Je dois d'abord dire que je suis le sujet IA depuis un certain temps. En fait depuis que j'ai pris mon rôle de directeur de l'innovation chez Smile en 2018 (après cette incroyable aventure neopixl que j'ai lancée après que mon patron m'ait dit qu'il ne croyait pas au mobile). Depuis ce moment, avec Alain Rouen, Thibault Milan et d'autres personnes comme Fabien Gasser ou Patrice Ferlet, nous nous sommes intéressés au NLP (Natural Language Processing). D'abord avec des assistants vocaux, comme Snips (poke Yann Lechelle ), puis des chatbots, comme Clevy, et nous avons continué notre voyage vers la Computer Vision avec Amazon Web Services (AWS) et les TPU Google dans notre expérience Warhol et les modèles LSTM pour notre projet Koda parmi tant d'autres projets. De tous ces projets, nous avons appris plusieurs choses :

  1. Nous ne pouvions réussir que si nous disposions de données. Beaucoup de données. Des données que nous pouvions classer nous-mêmes ou en utilisant des services comme AWS Mechanical Turk. Cela signifie que les projets d'IA sont difficiles à mettre en place.
  2. L'intelligence artificielle est tout sauf intelligente. Luc JULIA (créateur de SIRI) à la conférence GEN expliquait comment l'IA fonctionne et pourquoi elle ne peut pas et ne pourra jamais remplacer l'intelligence humaine.
  3. L'industrie n'était pas prête et les entreprises qui rêvaient d'IA fantasmaient des IAs "intelligentes" et manquaient presque toujours de données, ce qui était très souvent un obstacle.

Avec des LLM tels que GPT-3 et 4 utilisés par Chat-GPT, les données utilisées pour entraîner le modèle sont énormes et l'incroyable mise au point et l'apprentissage effectués par OpenAI ont conduit à des résultats étonnants jamais atteints auparavant et progressant rapidement, très rapidement.

Mais laissons le buzz de côté pour un temps et revenons à ce que j'ai dit au début : est-ce quelque chose d'utile et pourquoi ?

Qu'est-ce qu'un LLM, comment cela fonctionne-t-il ?

Pour le modèle, il n'y a pas de vérité. Il n'y a qu'une séquence de mots la plus probable.

Je n'ai pas la prétention d'expliquer tous les concepts en quelques mots et il existe de nombreux supports d'apprentissage de qualité. Mais pour être sûr que les gens comprennent la vision de Smile, je dirais ceci : les LLMs sont un type d'IA qui consiste en un modèle de langage entraîné sur un très grand ensemble de données qui est simplement du texte extrait de Wikipédia ou de Common Crawl par exemple. Un modèle de langage est un modèle capable de prédire le mot suivant en fonction des mots précédents qui constituent le contexte. La formation est d'abord non supervisée, puis affinée avec une formation supervisée, ce qui signifie que les humains répondent à des questions et que ces paires questions-réponses sont utilisées pour former le modèle. Enfin, il y a un entrainement par renforcement qui est effectué durant lequel le modèle génère différents contenus à partir d'un contexte donné et que ces contenus sont évalués par des humains.

Ce qui est important à comprendre, c'est qu'il n'y a pas de compréhension du texte. Le modèle est simplement basé sur les probabilités que le contenu généré corresponde à ce qui est attendu. Pour le modèle, il n'y a pas de vérité, juste une séquence de mots la plus probable. Cela explique pourquoi il génère parfois un contenu erroné : soit il n'y a pas assez de contenu sur le sujet, soit le contexte fourni par l'utilisateur au modèle n'est pas suffisant pour générer une réponse correcte. Mais comme l'ensemble des données est très vaste, il y a de fortes chances que le contenu généré soit correct.

Une autre chose qui est important à comprendre, c'est ce qu'on appelle le "prompt". Le prompt est ce que vous fournissez au modèle pour le guider dans la génération de contenu. Elle permet de "pondérer" les différents contenus de suivi possibles. Il peut s'agir d'une simple question, mais aussi de gros morceaux de contenu qui s'ajoutent au modèle formé. En fait, vous pouvez fournir jusqu'à 32.000 tokens de contexte à ChatGPT 4, ce qui représente environ 24.000 mots ou 80 pages. En outre, ChatGPT conserve l'historique de la conversation (vos prompts et ses réponses) pour générer des réponses futures, ce qui rend le contexte de plus en plus riche et permet au modèle d'affiner les réponses données. Il est donc très important d'élaborer soigneusement les prompts pour guider le modèle dans la bonne direction, ce que l'on appelle prompt engineering.

Les capacités du modèle sont  assez vastes et vont du résumé de texte à la génération de codes ou à l'analyse des sentiments.

Les avantages pour Smile et ses clients

Au début, je dois admettre que je n'étais pas sûr. Peut-être qu'il s'agissait d'un autre jouet qui, une fois de plus, ne serait pas à la hauteur. Mais après avoir utilisé un peu plus ChatGPT, j'ai compris que l'utilisation du chat en lui-même n'était pas l'objectif final mais plutôt une partie d'une chaîne d'outils plus large permettant d'atteindre un objectif plus important.

Par exemple, vous pouvez demander à ChatGPT de vous aider à générer des prompts pour une autre IA générative telle que MidJourney en enseignant à GPT quels sont les paramètres que vous pouvez passer à une requête /imagine ainsi que quelques bons exemples de réponses basées sur une invite GPT donnée.

Vous pouvez également demander à chatGPT de générer du code source ou de corriger du code source que vous pourrez ensuite copier-coller dans votre projet afin d'accélérer votre développement ou tout simplement améliorer votre code.

Jusqu'ici, tout va bien. Mais dans quelle mesure pourrions-nous utiliser ChatGPT pour aider à la réalisation d'un business case qui (si vous vous souvenez du début de l'article) est la clé de ma décision de m'engager ou non dans une technologie chez Smile.

Auto-GPT pour automatiser l'ingénierie rapide

En fait, ce que j'ai appris de toutes les expériences que j'ai faites, c'est qu'il est assez difficile d'écrire le meilleur prompt pour que ChatGPT génère exactement ce que vous attendez. Bien sûr, il y a quelques astuces, mais lorsque vous souhaitez obtenir des scénarios plus élaborés et que ChatGPT écrit le code source d'un projet entier, vous devez "amorcer" le chat d'une manière très spécifique et cela peut prendre beaucoup de temps pour un résultat potentiellement nul.

C'est alors que j'ai découvert Auto-GPT. Et c'est tout simplement époustouflant. Auto-GPT est capable de cela (extrait du blog de Weaviate) :

Définir de manière autonome les objectifs nécessaires à l'accomplissement de la tâche assignée sans (ou avec un retour d'information et une intervention humaine réduits). Cela s'explique par sa capacité à enchaîner les pensées.
La chaîne de pensée est une méthode utilisée pour aider les modèles de langage à améliorer leur raisonnement. Elle décompose les tâches en étapes intermédiaires nécessaires à leur accomplissement. Le programme fonctionnera ensuite en continu jusqu'à ce qu'il ait accompli ces tâches. Par exemple, s'il travaille sur un projet de codage, il débloquera le code au fur et à mesure. [...] Lors de la configuration, Auto-GPT reçoit une liste d'outils tels qu'un exécuteur de code, une API de recherche Google ou une calculatrice.

GPT y est utilisé dans le cadre d'une chaîne continue de pensées et d'actions qui se corrige d'elle-même pour atteindre un objectif. Cela devient intéressant car d'une interaction orientée chat basée sur le modèle de langage, nous arrivons à un bot automatisé, presque magique et effrayant, qui peut être utilisé comme une partie de l'outil que nous pourrions utiliser pour mettre en œuvre ou améliorer des projets pour nos clients.

Utiliser un corpus privé pour répondre à des questions

Un autre cas d'usage que mon collègue Alain Rouen a exploré très récemment était de voir si nous pouvions utiliser des données privées pour alimenter GPT afin que le modèle puisse répondre à des questions basées sur une base de connaissances privée, fournie préalablement au système. Cela représente un défi de taille. Si vous lisez attentivement la documentation de ChatGPT, vous verrez que les données que vous fournissez au chat peuvent être utilisées comme données d'entraînement pour que le modèle s'améliore (très récemment, il a été possible de désactiver cette fonction, mais c'est le fonctionnement par défaut). Cela signifie que si vous fournissez à ChatGPT des chiffres confidentiels, il y a de fortes chances que ces informations confidentielles fassent partie d'une réponse envoyée à un autre utilisateur.

Pour éviter ce genre de situation, Alain a déployé sa propre instance du modèle GPT-4 en utilisant les services OpenAi de Microsoft Azure. De cette manière, il a pu se débarrasser de tout ralentissement du trafic sur l'API de l'instance publique et garder la discussion privée (et non utilisée dans les entrainements). L'idée générale est donc celle qui a été bien expliquée par Dataiku dans cet excellent article de blog :

  1. Indexer une collection de documents (il peut s'agir de n'importe quoi tant que vous pouvez extraire du texte) en utilisant des embeddings (une représentation d'un texte sous la forme d'une longue série de nombres).
  2. Stocker ces embeddings dans une base de données vectorielle telle que Chroma par exemple (d'autres bases de données vectorielles populaires sont Weaviate ou Pinecone qui, toutes deux, de manière intéressante, ont levé pas mal d'argent au cours des derniers jours...)
  3. Interroger la base de données pour trouver des faits pertinents
  4. Demander à GPT de générer une réponse sur la base d'un modèle de prompt qui doit contenir une question affinée (également par GPT) et tout extrait de document pertinent.

Ceci est bien expliqué dans le schéma de l'article de blog :

Fabrice Dewasmes

Fabrice Dewasmes

Directeur Technique et Innovation