• À la façon de la “Somme contre les gentils” de St Thomas, nous allons partir de fondements communs rationnels pour construire un automate logique “pensant”.
  • Je vais tenter de démystifier le fonctionnement des LLMs (Large Language Models) en vous faisant revivre l’aventure intellectuelle qui va de la matière à l’IA.
    • Tout d’abord nous fabriquerons un ordinateur.
    • Ensuite nous verrons le fonctionnement d’un réseau de neurones artificiel.
    • Enfin nous verrons le fonctionnement d’un LLM.

I - Automate de calcul

Logique fondamentale

La logique est une science qui étudie les principes du raisonnement valide. Elle est fondamentale pour la philosophie, les mathématiques et l’informatique. Elle est fondée sur le principe de non-contradiction. La porte logique NAND est une porte universelle qui permet de construire toutes les autres portes logiques par combinaison.

Imaginer l’automate

En informatique théorique, une machine de Turing est un modèle abstrait du fonctionnement des appareils mécaniques de calcul, tel un ordinateur.

NANDGAME: https://www.nandgame.com/

Construire l’automate

La découverte des jonctions P-N permet de construire de minuscules transistors en silicium. Ces transistors peuvent être assemblés en circuits intégrés qui permettent de construire un ordinateur.

Minecraft CPU: https://youtu.be/TxatLwlj0lU?si=aYUfTmiCIc7kXt56&t=34

Contrôler l’automate

Nous devons maintenant contrôler notre automate et lui faire faire des calculs. Nous créons des langages avec des niveaux d’abstraction de plus en plus élevés et de plus en plus élégants. Nous contrôlons un nouveau type de rapport au langage: l’exécution en plus de la lecture et de l’écriture.

Accélérer l’automate

Au bout d’un certain temps, la miniaturisation des transistors et la fréquence de calcul atteignent des limites physiques. Il faut donc trouver d’autres moyens d’augmenter la puissance de calcul: on duplique et on parallélise en répartissant la charge de travail sur les différents cœurs.

II - Appréhender un monde incertain

Réseaux de neurones et vision machine (ANNs)

Notre machine est déterministe, rapide et précise mais elle n’aime pas l’incertitude, l’ambiguïté et l’approximation. On explore alors comment le cerveau humain arrive à appréhender le monde incertain qui nous entoure avec ses réseaux de neurones. On s’inspire de la nature pour créer des réseaux de neurones artificiels. (La vision humaine serait de 576 millions de pixels, et le cerveau humain contient 86 milliards de neurones. Le traitement quasi instantané de l’information visuelle est fascinant.)

Recap perceptron 3B1B: https://youtu.be/IHZwWFHWa-w?si=LE5qWstbH01bqKZO&t=29

Large Language Models (LLMs)

Une des théories de l’apparition des facultés humaines est le détournement d’une partie de notre puissance de calcul visuelle vers la méta-cognition et les concepts abstraits. Les LLMs sont des réseaux de neurones qui ont été entraînés sur de très grands corpus de données textuelles. Ils sont capables de générer du texte à partir d’un prompt.

Viz NanoLLM: https://bbycroft.net/llm

Voici un exemple d’utilisation de GPT-4 pour créer un chatbot catholique qui enrichi du « Catéchisme de l’Église catholique » répond aux questions posées par les utilisateurs.

Corpus de pré-training

Donner au modèle un corpus de texte suffisamment grand et varié pour qu’il puisse apprendre la structure du langage. Il faut éviter les données redondantes, les biais, nettoyer les balises, etc.

Corpus de domaine

  • Corpus d’adaptation à un domaine particulier et son jargon: médical, légal, financier, etc.

Tokenisation

Conversion d’un texte en une séquence de tokens (mots, caractères, sous-mots, etc.) qui seront utilisés par le modèle.

Choix du type de LLM

Des architectures différentes sont adaptées aux tâches à réaliser :

  • “Auto-encoding” RoBERTa: textes à trous, analyse de sentiments, NER, etc.
  • “Auto-regressive” GPT: génération de texte
  • “Sequence-to-sequence” BART: traduction, résumé, etc.

Fine-tuning

On change les poids du modèle pour qu’il soit adapté à une tâche particulière en lui donnant des exemples de la tâche à réaliser et des réponses attendues. On peut segmenter le modèle en plusieurs parties fine-tuner une partie et geler les poids du reste. (PEFT) Le mode INSTRUCT répond aux instructions données par l’utilisateur.

Benchmark et métriques d’évaluation

On mesure la similarité entre le texte généré et le texte humain attendu avec des métriques de correspondances comme BLEU ou ROUGE. D’autres tests sont plus généralistes comme MMLU.

Renforcement par feedback humain (RLHF)

Un LLM doit suivre les HHH: Helpful, Honest and Harmless On génère plusieurs réponses, on demande à un humain de les classer et on fine-tune le modèle vis à vis de ce feedback. Si un LLM est trop “serviable” il peut être manipulé par un utilisateur pour des activités malveillantes.

Déploiement

Compression, optimisation et déploiement du modèle sur un serveur pour qu’il puisse répondre aux utilisateurs.

Librairie d’orchestration

Permet au LLM de communiquer avec d’autres composants du système, de faire des requêtes de données, etc.

Génération Augmentée de Récupération (RAG)

Permet d’ajouter des sources de données supplémentaires pour enrichir les réponses du modèle à travers des requêtes dans des bases de données, des interrogations de moteurs de recherche, de la recherche sémantique, des appels API, etc. La recherche par similarité vectorielle (embedding vectors) permet de trouver des réponses des textes similaires à la requête qui peuvent être intégrées dans la réponse du modèle.

Biais dans les vecteurs: https://wikipedia2vec.github.io/demo/

Program aided language (PAL) model & ReACT

On donne au modèle la capacité de générer du code informatique permettant de réaliser des tâches complexes. Par exemple un calcul complexe est hors de portée d’un LLM alors qu’il peut écrire un code informatique simple pouvant le résoudre. Le modèle a juste une tâche générale et fait un plan de sous-tâches et d’agents pour y arriver.

Prompt Engineering

Nous disposons suivant les modèles d’un espace limité pour donner des instructions au modèle, la fenêtre de contexte. C’est dans cette fenêtre que nous allons indiquer :

UI/UX

L’interface utilisateur est un élément essentiel pour que le modèle puisse être utilisé par des humains. Elle est généralement proche d’une interface de messagerie instantanée avec des bulles de conversation. Elle comprend également un système de gestion des utilisateurs, un historique des messages, etc.

III - Cas pratique

Démonstration de l’utilisation de GPT-4 pour créer un chatbot catholique qui enrichi du « Catéchisme de l’Église catholique » répond aux questions posées par les utilisateurs.