====== Le rôle d'un LLM ====== Un LLM (Large Language Model) est un système d'intelligence artificielle conçu pour **prédire le mot suivant** dans une séquence de texte. Il ne comprend pas le langage comme un humain, mais **calcule la probabilité** des mots les plus plausibles à partir du contexte, en s'appuyant sur des milliards d'exemples. 🎯 Objectif : générer, résumer, traduire, classer ou compléter du texte avec cohérence. ====== Anatomie d'un LLM ====== ===== Synthèse générale du fonctionnement des Transformers ===== Les LLM modernes reposent sur une architecture appelée **Transformer**, qui permet de traiter des séquences entières en parallèle. Son fonctionnement repose sur six grandes étapes : - **Tokenisation** : découpage du texte en unités appelées tokens. - **Embeddings** : conversion des tokens en vecteurs numériques. - **Codage positionnel** : ajout d'une information sur la place des mots. - **Attention multi-têtes** : prise en compte du contexte. - **Réseau de neurones** : prédiction du mot suivant. - **Fine-tuning** : spécialisation du modèle sur une tâche ou un domaine. Ce processus est optimisé pour les architectures parallèles comme les GPU, ce qui le rend très performant. ➡️ **L'attention** est une méthode qui permet au modèle de repérer, dans une phrase, quels mots sont les plus pertinents pour comprendre un mot donné. Par exemple, dans la phrase « Le chat qui dort est sur le coussin », pour interpréter correctement « dort », il faut comprendre que c'est le « chat » qui dort. ➡️ **Multi-têtes** signifie que plusieurs mécanismes d'attention sont utilisés en parallèle, chacun observant des types de relations différents (grammaire, sens, structure...). Cela permet au modèle de mieux capter la complexité du langage. Ces représentations enrichies passent ensuite dans un **réseau de neurones profond**, qui agit comme le cerveau du modèle. ➡️ **Un réseau de neurones** est un système inspiré du cerveau humain, composé de couches de calculs qui analysent, combinent et transforment les informations. Dans notre cas, il permet de prédire le mot suivant dans une phrase en fonction du contexte. Enfin, le modèle peut être affiné (**fine-tuning**) pour s'adapter à des cas d'usage spécifiques. ➡️ **Le fine-tuning** consiste à réentraîner légèrement un modèle existant sur un domaine particulier (ex. médical, juridique, industriel) afin qu'il donne de meilleures réponses dans ce contexte précis. Ce processus est entièrement **parallélisable** – c'est-à-dire que toutes les opérations peuvent être effectuées en même temps – ce qui rend l'entraînement efficace sur des machines spécialisées comme les **GPU** (processeurs graphiques très puissants). L'enchaînement cohérent de ces étapes permet aux LLM de générer des textes fluides, pertinents, et adaptés à une grande variété de tâches, sans intervention humaine directe. ===== Embeddings – Transformer les mots en vecteurs ===== * Chaque mot ou token est converti en vecteur numérique dense appelé **embedding**. * Un **vecteur**, c'est une simple liste de nombres. Cela permet au modèle de représenter mathématiquement un mot dans un espace à plusieurs dimensions. * Exemple : le mot "chat" devient ''[0.12, -0.48, 0.33, ...]''. ➡️ **Pourquoi vectoriser les mots ?** Un ordinateur ne comprend pas les mots comme nous. Il ne manipule que des nombres. Pour qu'il puisse « traiter » un mot comme "chat", il faut d'abord le convertir en une forme qu'il peut utiliser dans des calculs : un vecteur. Ce processus de **vectorisation** est donc une étape essentielle pour permettre l'analyse du langage par des algorithmes. ➡️ **Le calcul matriciel, c'est quoi ?** Une **matrice** est un tableau de nombres, comme une grille ou une feuille Excel. Un vecteur est une ligne ou une colonne de cette grille. Les **calculs matriciels** consistent à multiplier, additionner ou transformer ces tableaux pour faire circuler l'information dans un modèle. Cela permet, par exemple, de comparer deux mots entre eux, de transformer un mot selon son contexte, ou de combiner plusieurs mots pour comprendre une phrase. ➡️ **Pourquoi c'est si utile ?** Grâce aux vecteurs et aux matrices, un modèle peut : * mesurer la similarité entre deux mots (ex. "roi" et "reine" sont proches), * capter des relations sémantiques (ex. "roi" - "homme" + "femme" ≈ "reine"), * apprendre à traiter le langage comme un système de relations mathématiques. ➡️ **Pendant l'entraînement :** Le modèle ajuste les valeurs dans ses vecteurs pour apprendre à prédire les bons mots selon le contexte. Il utilise les calculs matriciels pour comparer ses prédictions avec la réalité (les textes qu'on lui montre), puis il se corrige (via une technique appelée rétropropagation). ➡️ **Pendant l'exploitation (inférence) :** Une fois entraîné, le modèle utilise ces vecteurs pour analyser une phrase qu'on lui donne, en appliquant les mêmes calculs que pendant l'entraînement. Cela lui permet de produire une réponse cohérente, même sans compréhension réelle. 🧪 **Exercice :** Montrer que "roi" - "homme" + "femme" ≈ "reine" dans l'espace des embeddings. Cela illustre que les relations sémantiques (comme genre ou rôle social) peuvent être captées par des opérations mathématiques simples. **Explication :** Chaque mot est représenté par un vecteur dans un espace mathématique. Si deux mots ont des significations proches ou sont liés par une relation logique, leurs vecteurs auront une certaine proximité ou structure commune. Dans cet exemple : * "roi" représente un souverain masculin, * "homme" représente le genre masculin, * "femme" représente le genre féminin. Si l'on soustrait le concept de masculin ("homme") au mot "roi", on obtient un vecteur qui représente le concept de "souveraineté" sans le genre. Puis, en ajoutant le vecteur "femme", on injecte l'idée de genre féminin dans le concept de souveraineté. Le résultat de cette opération vectorielle (roi - homme + femme) donne un vecteur très proche de celui de "reine". **Conclusion :** Cela démontre que les modèles peuvent apprendre des relations sémantiques profondes uniquement à partir des statistiques d'usage du langage, et que ces relations peuvent être modélisées de façon mathématique. ===== Positional Encoding – Situer les mots dans la phrase ===== * Les embeddings ne contiennent pas la **position** des mots dans une phrase. * Or, l'ordre des mots est fondamental pour comprendre le sens d'une phrase. * Un codage positionnel est donc ajouté à chaque vecteur pour indiquer **à quelle place** se trouve le mot dans la séquence. ➡️ **Pourquoi c'est important ?** Sans position, une phrase comme « Le chat mange la souris » pourrait être interprétée comme identique à « La souris mange le chat ». Or, le sens est radicalement différent. Les modèles doivent donc intégrer une notion de **séquentialité**, même s'ils traitent les mots en parallèle. ➡️ **Comment ça marche ?** Le codage positionnel ajoute à chaque vecteur d'embedding un second vecteur qui encode sa **position** (1er mot, 2e mot, etc.). Ce codage utilise souvent des fonctions trigonométriques (sinus et cosinus) pour produire une **signature unique** à chaque position tout en permettant au modèle de reconnaître les régularités (comme les répétitions ou les structures). ➡️ **Effet combiné :** Chaque mot est donc représenté à la fois par son sens (embedding) **et** par sa position (codage positionnel). Cela permet au modèle de comprendre que deux occurrences du même mot peuvent avoir des rôles différents selon où elles apparaissent. 💡 **Analogie :** Lire un livre sans ponctuation ni paragraphes – c'est difficile à suivre. Le codage positionnel, c'est comme remettre les phrases dans l'ordre et redonner du rythme et de la logique à ce que l'on lit. ===== Attention et Multi-head Attention – Comprendre le contexte ===== ➡️ **Origine du concept** : Le mécanisme d'attention a été introduit dans le papier [[https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf|"Attention is All You Need" (Vaswani et al., 2017)]], qui a marqué un tournant majeur dans le traitement du langage naturel. Avant cela, les modèles utilisaient des architectures dites "séquentielles" (comme les RNN et LSTM), qui lisaient les mots un par un et avaient des difficultés à mémoriser des contextes longs. {{ :ai:attention_is_all_you_need.png?400 |}} ➡️ **Avantage majeur** : L'attention permet de traiter tous les mots **en parallèle** tout en tenant compte du contexte complet de la phrase. Elle rend donc l'entraînement beaucoup plus rapide et efficace, tout en permettant une meilleure compréhension du contexte global. ➡️ **Conséquence sur les LLM** : Ce mécanisme est au cœur de l'explosion des capacités des modèles comme GPT, BERT ou Mistral. C'est grâce à lui que les modèles peuvent gérer des textes longs, comprendre des subtilités, et générer du texte cohérent sur plusieurs paragraphes. ➡️ **Principe :** L'attention permet au modèle de déterminer **quels autres mots sont importants** pour comprendre un mot donné. ➡️ **Fonctionnement :** - Chaque token est projeté en **Query (Q)**, **Key (K)** et **Value (V)**. - Le modèle calcule la **similarité entre Q et K** pour chaque mot de la séquence. - Une fonction **softmax** (fonction de normalisation qui convertit des nombres en probabilités) est appliquée aux scores pour produire des poids. - Ces poids pondèrent les V, générant une sortie contextuelle. ➡️ **Multi-head attention :** * Chaque tête se concentre sur un aspect (grammaire, sujet, objet…) * Elles travaillent en parallèle puis sont combinées. 💡 **Exemple :** Dans "Le chat noir saute sur la table" * Une tête relie « chat » à « saute » (sujet/verbe). * Une autre relie « chat » à « noir » (description). * Une autre relie « saute » à « table » (lieu). ===== Réseau de neurones – Le "cerveau" du modèle ===== * La sortie de la multi-head attention est traitée par un **réseau de neurones profond**. * Il applique des transformations linéaires, suivies de fonctions d'activation (ex. ReLU, GELU). * Cela génère une **probabilité pour chaque mot du vocabulaire**. 📌 **Exemple :** Sur "Le chat boit du...", le modèle propose : * lait : 89 % * vin : 4 % * miel : 2 % 🎓 **Zoom technique :** Des mécanismes comme Add & Norm (normalisation + connexions résiduelles) assurent la stabilité et la convergence de l'apprentissage. ===== Fine-tuning – Adapter le modèle à un domaine ===== Une fois le modèle de base entraîné sur un corpus généraliste, il peut être **affiné** pour répondre à des besoins spécifiques. Cette phase d'adaptation est appelée **fine-tuning**. Le fine-tuning permet de spécialiser un modèle généraliste afin qu'il utilise un vocabulaire adapté, respecte un cadre métier, réponde dans un style précis, ou suive des règles métiers spécifiques. C'est une étape cruciale pour rendre les modèles plus utiles, plus précis et plus fiables dans des contextes professionnels ou sensibles. Il existe plusieurs méthodes : * **Fine-tuning total** : tous les paramètres du modèle sont réentraînés. Cela permet une personnalisation poussée mais nécessite beaucoup de données, de puissance de calcul, et de précautions pour ne pas dégrader les capacités initiales. * **Instruction tuning** : le modèle apprend à mieux suivre des instructions formulées en langage naturel (par exemple : « Résume ce texte », « Explique comme à un enfant »), en s'entraînant sur des exemples d'instructions et de réponses. * **Adapters ou LoRA** : ces méthodes ajoutent des composants modulaires entraînables, sans modifier le cœur du modèle. Elles sont plus rapides à entraîner, moins coûteuses, et limitent les risques d'altérer les performances initiales. ➡️ Le fine-tuning n'est possible que si l'on a **accès aux poids du modèle**. Les //poids// sont les paramètres appris par le modèle lors de son entraînement. Ce sont des millions (voire des milliards) de valeurs numériques qui déterminent comment le modèle interprète les données d'entrée et génère des réponses. Ces poids définissent les connexions entre les couches du réseau de neurones et l'importance donnée à chaque entrée. Sans accès à ces poids, il est impossible de modifier ou de réentraîner le modèle de manière fine – on est alors limité à une simple utilisation (inférence) sans personnalisation. C'est le cas avec les modèles **open-weight** (ex. LLaMA, Mistral) ou **open-source** (ex. Falcon, BLOOM), mais pas avec les modèles **fermés** (ex. GPT-4, Claude), dont les poids sont gardés privés. ➡️ **Impact pour l'utilisateur :** * Les modèles **ouverts** permettent une personnalisation avancée, l'hébergement local et le respect des contraintes de confidentialité. * Les modèles **fermés** offrent souvent de meilleures performances prêtes à l'emploi, mais ne peuvent pas être adaptés en profondeur. 🎯 **Exemples :** * Un assistant RH entraîné sur la convention collective, les procédures internes, et les politiques RH de l'entreprise, permettant des réponses conformes et contextualisées. * Un chatbot médical capable de reformuler des diagnostics dans un langage accessible pour les patients, tout en respectant les recommandations officielles du domaine de santé. ====== Limites des LLM ====== Même très performants, les LLM présentent des failles : * 🧠 **Pas de compréhension réelle** : ils ne « savent » pas, ils prédisent. Ils ne possèdent pas de représentation du monde ni de raisonnement conscient. * 🗓️ **Connaissances figées** : sauf si reliés à une base externe, les modèles n'ont accès qu'aux données sur lesquelles ils ont été entraînés, ce qui exclut tout événement récent ou fait nouveau. * 🔗 **Pas de capacité native de recherche ou de calcul** : un LLM n'est pas capable par lui-même d'effectuer un calcul exact, de naviguer sur Internet ou d'accéder à une base de données. Pour cela, il fait appel à des **agents externes** – par exemple, une calculatrice ou un outil de recherche – qui effectuent l'action, puis retournent le résultat que le modèle peut intégrer dans sa réponse. Ce fonctionnement est intégré dans des interfaces comme ChatGPT, qui combinent le modèle avec d'autres outils. Il est donc essentiel de distinguer **le modèle de langage lui-même** (le LLM) de **l'environnement applicatif** qui peut étendre ses capacités. * 🎭 **Hallucinations** : les LLM peuvent produire des réponses incorrectes, voire inventées, tout en les formulant de façon convaincante. Cela résulte de leur fonctionnement probabiliste. * 🔍 **Dépendance au prompt** : la formulation de la question ou de la consigne influence fortement la qualité de la réponse. Des formulations imprécises ou ambiguës peuvent induire le modèle en erreur. * ⚙️ **Biais** : les modèles reproduisent les biais présents dans les données d'entraînement. Sans mécanismes de filtrage ou d'alignement, cela peut conduire à des contenus stéréotypés, discriminants ou inexacts. 🚨 **Exemple :** un LLM peut inventer une référence scientifique inexistante ou adopter un ton sexiste ou stéréotypé si mal configuré. ====== Pour en savoir plus ====== Quelques documentaires : * [[https://www.netflix.com/fr/title/81328723|Documentaire Netflix sur l'IA]] * [[https://www.france.tv/documentaires/documentaires-societe/6888928-les-sacrifies-de-l-ia.html|Les sacrifiés de l'IA (France TV)]] ---- [[principes_de_base_du_prompt_engineering|Principes de base du prompt engineering]]